J'ai un fichier de formes de lignes et un autre de polygones. Lorsque deux lignes ou plus coupent un polygone, elles doivent être connectées (cassées), mais parfois pendant la numérisation manuelle, cela ne se produit pas. J'ai besoin de trouver et de corriger toutes ces erreurs. J'ai utilisé v.clean
GRASS GIS et il a automatiquement cassé beaucoup de sommets, ce qui était bien, mais certaines de ces lignes déconnectées sont plus éloignées de la tolérance que j'ai donnée et si j'augmente trop la tolérance, cela commence à générer d'autres types d'erreurs.
Des idées?
Réponses:
Ma compréhension du problème est la suivante:
Si un point d'extrémité de polyligne coupe un polygone, la polyligne doit être connectée (en ajoutant ou en ajustant des sommets) à tous les points d'extrémité de polyligne supplémentaires qui coupent le même polygone.
Certains points d'extrémité de polyligne n'entrecoupent pas un polygone, étant des sous-dépassements, mais ceux-ci doivent être connectés comme ci-dessus.
Cette réponse s'appuie sur certaines déjà données, mais n'est pas complète car je ne connais pas toutes les commandes QGIS - peut-être que quelqu'un d'autre peut y ajouter?
Pour chaque polyligne, extrayez les coordonnées d'extrémité ( Vector> Outils de géométrie> Extraire les nœuds puis ranger) et calculez si elles se trouvent ou non dans un polygone ( Vector> Outils de recherche> Sélectionner par emplacement ).
Pour les extrémités de polyligne qui se trouvent dans un polygone, étendez cette extrémité de la polyligne au centre du polygone (Extraire le centre du polygone à l'aide de Vector> Outils de géométrie> Centre de gravité du polygone , vous n'êtes pas sûr de la modification de la ligne, bien que vous puissiez travailler avec les sommets de la polyligne en tant que points et ajoutez-en d'autres avec la numérotation appropriée avant de reconstruire la polyligne modifiée à l'aide du plugin Points to Paths)
Vous mentionnez qu'il peut y avoir des situations où certaines ou toutes les lignes ont été correctement connectées, dans ces situations (identifiables par des points d'extrémité de polyligne coïncidents), vous pouvez choisir d'utiliser l'emplacement du point d'extrémité coïncident au lieu du centre de gravité du polygone comme point à étendre toute polyligne supplémentaire non connectée à ce polygone.
Pour les extrémités de polyligne situées en dehors d'un polygone, étendez cette extrémité de la polyligne au centre du polygone le plus proche. Encore une fois, je ne suis pas sûr de calculer le polygone le plus proche, bien que le module GRASS v.distance semble faire l'affaire.
la source
Je pense que je pourrais le faire avec un algorithme personnalisé ... Notez bien comment vous aimeriez l'implémenter, mais je pense que cela fonctionnerait.
Pour chaque ligne, pour chaque point final, faites un point en polygone pour le sommet au point final et liez-le au polygone.
Ensuite, pour chaque polygone, s'il y a plus d'un point d'extrémité de ligne lié, je les fusionnerais (déplacer) tous vers la coordonnée moyenne, ou vers le centre de gravité du polygone peut-être.
C'est assez simple. Mais non disponible dans les opérateurs standard. Je pense que cela pourrait être fait dans ArcGIS avec un temps de codage de jours.
Une autre note, dans l'image que vous avez publiée, l'une des lignes est en dehors du polygone ... Vous pouvez gérer cela de manière plus simple en trouvant simplement le sommet le plus proche de chaque sommet d'extrémité, en vous assurant que la proximité est mutuelle (je pense que c'est nécessaire, pour que les sommets ne s'alignent que dans un sens), vous pouvez alors les déplacer vers la position moyenne des sommets.
la source
Problème intéressant! Je ne peux pas penser à un moyen d'effectuer automatiquement la capture, mais voici une étape dans l'identification des zones à rechercher au moins pour une correction manuelle:
Selon la situation (nombre de fonctionnalités, nombre qui se trouvent dans cette situation par rapport à celles qui ne le sont pas, etc.), cela peut vous faire gagner du temps.
EDIT: Vous pouvez également utiliser les polygones avec une somme de 2 pour créer un sous-ensemble de vos couches de lignes, puis exécuter le nettoyage sur ceux avec une tolérance plus grande afin de ne pas modifier les autres entités.
la source
une fois que vous avez les points d'extrémité, je ferais un diagramme d'araignée prenant les polygones centroïdes comme installations et les points d'extrémité des lignes voisines comme cibles. Vous effectuez l'analyse du diagramme d'araignée et par conséquent, vous auriez un segment pour chaque polyligne.
Cela fonctionnerait même pour ceux se terminant en dehors des polygones. Comment faire cela dans QGIS Je ne sais pas, désolé, mais je le ferais dans les produits ESRI que je connais bien. C'est ce que j'ai compris quand whuber, dans la première réponse, a suggéré de construire une "étoile".
Je suis sûr qu'il y a des gens ici qui savent comment effectuer une telle analyse dans QGIS
la source