Correction des erreurs de validité de la géométrie dans QGIS?

31

Je travaille sur les données de propriété au niveau d'un comté américain. J'ai un fichier de formes par comté qui contient des milliers de colis fiscaux. Je dois dissoudre les polygones représentant des parcelles appartenant à la même personne. Lorsque le fichier de formes n'est pas propre, l'outil "Dissoudre" dans QGIS ne semble pas fonctionner, il se bloque. Je dois d'abord résoudre les problèmes de validité de la géométrie à l'aide de l'outil "Vérifier la validité de la géométrie". Cependant, j'ai parfois des centaines d'erreurs. Il faut beaucoup de temps pour les corriger manuellement. Y a-t-il d'autres stratégies qui pourraient me faire gagner du temps?

J'utilise QGIS 2.4.0.

Bap
la source
2
Avez-vous essayé d'importer un fichier dans Grass et d'utiliser v.clean? cela corrigera probablement beaucoup de vos erreurs.
Sergio

Réponses:

20

Essayez d'exécuter un tampon subtil sur les polygones. Un paramètre de -0,001 si votre CRS est UTM semble valoir la peine d'être essayé. VECTEUR | TAMPON

BillW
la source
4
J'ai essayé la solution "Buffer" proposée par BillW. Cela a résolu 97% de mes problèmes, ce qui me suffit maintenant. Je peux terminer le travail manuellement. Je pense que faire un petit tampon sur les polygones ne me posera aucun problème sur la route. Mais je peux voir certains cas où utiliser ST_MakeValid ou essayer v.clean pourrait être meilleur et plus précis.
Bap
18

Lorsque j'ai une couche avec des erreurs, je l'exécute normalement via la fonction GRASS v.clean dans la boîte à outils de traitement . Bien que je n'aie jamais vraiment trouvé quel outil est le meilleur dans ce cas, je choisis normalement la fonction bpol là-bas.

Il est peut-être encore plus important de définir les paramètres avancés de tolérance d'accrochage et de zone min . En fonction de la couche, je choisis généralement 0,1 à 2 mètres pour la capture et par exemple 10 m² pour la surface minimale.

L'accrochage, par exemple, aligne les frontières qui sont censées être des frontières partagées mais qui ont de minuscules décalages, la zone minimale élimine les minuscules éclats des intersections, etc.

Avec le bpol, cela résout normalement toutes les erreurs sans trop changer la topologie.

Bernd V.
la source
11

Vous pouvez utiliser ST_MakeValid directement dans QGIS en ajoutant le plugin lwgeom qui ajoute le fournisseur lwgeom à la boîte à outils de traitement => vous pouvez appliquer MakeValid directement sur votre couche chargée sans convertir en postigs / spatialite. Postgis / spatialite utilise le même liblwgeom pour faire ST_MakeValid

vous devez installer liblwgeom et configurer le fournisseur de traitement pour qu'il pointe dessus

Le fournisseur lwgeom peut être trouvé à titre expérimental: https://plugins.qgis.org/plugins/processinglwgeomprovider/

Luigi Pirelli
la source
3
Je viens de publier une nouvelle version du fournisseur processinglwgeom qui sera utilisable avec la version principale actuelle du traitement qgis. (le traitement est en cours de refactorisation)
Luigi Pirelli
2
Salut @ LuigiPirelli J'ai essayé de résoudre un problème similaire en utilisant le plugin Lwgeom, mais il se bloque toujours pendant l'exécution et j'ai besoin de redémarrer QGis à nouveau. Existe-t-il un moyen de résoudre ce problème? Merci.
Alex Fernández Poulussen
1
difficile à dire sans plus le contexte de course. Btw depuis le 2014, il y a plus d'instruments de géométrie de réparation disponibles en qgis. Habituellement, un plantage dans lwgeom est un problème de désalignement (installation sale) dans l'objet chargé ou partagé. avez-vous testé d'autres outils?
Luigi Pirelli
1
Est-ce que cela fonctionne avec QGIS 2.18? Ne semble pas fonctionner dans ma version QGIS, github.com/faunalia/processinglwgeomprovider
RutgerH
1
Juste une mise à jour ... depuis le temps QGIS3.x dispose d'un algorithme de fixgeometry natif de traitement qui est un wrapper pour les algorithmes GEOS lwgeom MakeValid. Aucun db n'est nécessaire.
Luigi Pirelli
2

Je viens de rencontrer un problème similaire dans qgis. J'avais un poly commencé à projeter incorrectement. J'ai utilisé Grass fuction v.clean dans la boîte à outils de traitement comme l'a suggéré Bernd. Bien que bpol n'ait pas fonctionné, il semble être corrigé avec la fonction break.

user44727
la source