J'utilise QGIS et j'ai un point et le réseau routier. J'ai besoin d'extraire automatiquement les noms de routes qui entourent le point spécifique. L'analyse du voisin le plus proche et les zones tampons ne peuvent pas faire le travail, car dans de nombreux cas, le point est plus proche, en termes de distance mesurée, des routes voisines et non des routes environnantes. Y a-t-il des idées sur la façon dont seules les routes environnantes pourraient être extraites?
12
Réponses:
À propos de mes données de test:
SOLUTION I
S'il y a les deux hypothèses:
Les routes construisent des quartiers.
Vous travaillez dans un système métrique.
L'idée est d'augmenter / diminuer les coordonnées X et Y du point. Si vous travaillez dans un système métrique, vous pouvez vous rendre à 1 m à l'est de votre point, créer un nouveau point et créer une ligne avec le point d'origine. Vous allez plus loin vers l'est jusqu'à ce que la ligne croise une route. Pour rechercher une intersection à l'ouest, vous devez soustraire 1 m de la coordonnée X d'origine. De même pour la coordonnée Y. S'il n'y a pas de route au Nord / Est / Sud / Ouest le compteur s'arrête à 1000 (m). Lorsque vous savez qu'il pourrait y avoir une route à une distance supérieure à 1000 mètres, vous devez modifier cette valeur.
Vous pouvez résoudre la tâche avec le code suivant:
Édité
Un autre exemple pour montrer que la route e à l'Est n'est pas reconnue comme une route voisine du point.
Comment appeler la fonction et la sortie:
S'il y a plus de 4 routes entourant le point, vous devez regarder dans plus de directions (changer à la fois X et Y). Vous pouvez également modifier l'azimut de votre ligne, ce qui signifie que vous pouvez la faire pivoter d'un degré dans la plage de 0 à 360 °.
SOLUTION II
Inspiré du commentaire, vous pouvez également
Polygonize
commencer par vos routes. Pour cela vous pouvez utiliser un outil de QGIS:Processing > Toolbox > QGIS geoalgorithms > Vector geometry tools > Polygonize
. Renommez le calque temporaire enpolygon
. En supposant que vous souhaitez uniquement avoir les noms de route pour le point qui est complètement entouré de routes. Sinon , vous devez utiliser SOLUTION I . Cela ne fonctionne que si toutes les routes sont connectées (cassées)!Le point doit d'abord intersecter avec le polygone. L'idée est maintenant que les deux
AND
points de départ d'une ligne englobante doivent se croiser avec le polygone.Le résultat:
la source