Généraliser un fichier de polygone tout en maintenant la topologie dans QGIS?


35

J'ai un fichier de forme de polygone, que je dois généraliser. Comment puis-je généraliser les poligons et m'assurer qu'il n'y a pas d'erreur topologique telle que "slivers"?

J'ai déjà essayé:

  1. Vecteur -> Outils de géométrie -> polygones aux lignes
  2. Vecteur -> Outils de géométrie -> Simplifier les géométries ... je vois déjà à l'écran que je produis des chevauchements et des espaces, mais maintenant j'essaie
  3. Vecteur -> Outils de géométrie -> lignes à polgones

et ici le programme montre une erreur et se bloque

entrez la description de l'image ici


Y a-t-il des nouvelles sur ce sujet?
Oystein

malheureusement: non
Kurt

Réponses:


16

GRASS est sensible à la topologie. Vous pouvez utiliser v.generalize à partir de la boîte à outils Traitement pour simplifier les polygones. Si les données en entrée sont topologiquement correctes, la sortie le sera également.

entrez la description de l'image ici


En utilisant Windows-Installer, je reçois une erreur (dépendance manquante) lorsque j'essaie d'exécuter v.generalize. Avez-vous besoin d'une configue spéciale?
Kurt

@Kurt: L'installateur autonome? Vous ne savez pas quelle version de GRASS est incluse. Dans Paramètres de traitement, vous pouvez spécifier si GRASS 6.x ou 7.x et où il est installé. Essayez d’ajuster ces configurations à votre configuration.
underdark

oui, j'utilise l'installateur stanalone. En suivant vos conseils, j'ai désactivé grass 7 via les options de traitement et configuré correctement le chemin d'accès à qrass 6. ce chemin n'était pas correct, un reste d'un qgis plus ancien. Maintenant, je peux lancer v.generalize, mais au final, je reçois une nouvelle erreur: impossible d’ouvrir le calque de sortie et enfin, le message indique que grass semble être correctement installé et configuré. Pourriez-vous s'il vous plaît me donner des suggestions ou des conseils?
Kurt

Généralement, cette erreur signifie que le géotraitement a échoué à un moment donné. Vous devez examiner le journal généré pendant l'exécution des outils pour voir où l'erreur se produit.
underdark

7

Cela peut être considéré comme un préalable à la réponse de @ Underdark selon laquelle vous pouvez nettoyer la topologie de la couche vectorielle avant de généraliser. GRASS a une fonction v.clean qui contient un certain nombre d’outils pour réparer le calque, tels que:

  • accrocher les lignes qui s'emboîtent au sommet le plus proche
  • rmdangle qui supprime les brouilles ennuyeuses
  • rmdupl qui supprime les entités géométriques dupliquées

et divers autres illustrés dans l'image ci-dessous:

v.clean

Vous pouvez également définir le seuil en fonction de la sensibilité des outils à exécuter. Personnellement, j'ai tendance à utiliser la fonctionnalité Vérifier la validité de la géométrie dans QGIS ( Vecteur > Outils de géométrie > Vérifier la validité de la géométrie ) pour rechercher d'éventuelles erreurs et, le cas échéant, utiliser l'outil approprié dans v.clean . Une fois les erreurs supprimées, vous devriez être en meilleure position pour généraliser.

J'espère que cela t'aides!


3
Et si une simple réduction de vertex suffit, v.generalize n'est pas nécessaire, car l'outil d'élagage peut le faire.
Gabor Farkas

merci pour votre réponse préliminaire à la réponse de @ Underdark, qui contient des informations précieuses. Bien que je ne l'aie pas dit explicitement, bien sûr, le fichier de polygones, que je voulais généraliser, est topologiquement propre [parce que; poubelle - poubelle dehors :-)]
Kurt

@Kurt, cela fait sens :)
Joseph

2

Avez-vous essayé d'utiliser MapShaper ? J'ai trouvé que c'était un bon moyen de généraliser des polygones; Il existe également une version hors ligne si vous souhaitez télécharger le code.

Une alternative pourrait être convertie en GeoJson, puis TopoJson qui prend en charge la "simplification de forme préservant la topologie" https://github.com/mbostock/topojson


J'ai essayé Mapshaper, c'est vraiment un excellent outil
Kurt

1
un autre commentaire: Comme le titre le dit: je cherche une solution avec qgis. Mapshaper, à mon humble avis, ne conserve pas la topologie (preuve en généralisant très fort!). Topojson: il s'agit d'un groupe de code javascript-source qui n'est utile que pour les programmeurs
Kurt

oups, j'ai raté le seul aspect de QGIS. QGIS gère cependant geojson; Je me demande s'il serait logique de travailler dans la fonctionnalité de simplification de topojson dans un plugin QGIS pour le rendre accessible aux non-programmeurs
djq

Je continue la ligne hors sujet: OpenJUMP a un outil "Simplifier la couverture de polygone" à cet effet.
user30184

0

Je viens de faire un test rapide et l'outil "Simplifier les géométries dans le menu Vecteur semble respecter la topologie. J'ai essayé avec et sans l'option" Activer l'édition topologique "cochée sous Options d'accrochage. L'avez-vous déjà essayé?

EDIT: Cela a été fait directement sur le fichier de polygone - pourquoi voudriez-vous d'abord convertir en lignes?


Bonjour Darren, merci pour l'allusion. Je vais essayer avec l'édition topologique enablr
Kurt

1
Bonjour Darren, à mon humble avis, il ne respecte pas la topologie. il n'y a pas de différence avec "activer l'édition topologique". Je suppose que cela est dû au fait que generalzing génère un nouveau calque, alors que "activer l'édition topologique" semble fonctionner uniquement avec les calques existants sélectionnés. Pourriez-vous s'il vous plaît faire une très forte gernéralisation et vérifier à nouveau, si vous avez une topologie correcte maintenant? merci
Kurt

1
Kurt; Intéressant. On dirait que tu as raison quand tu fais une forte généralisation! Désolé!
Darren Cope

1
Cette case à cocher est supprimée dans QGIS 2.2 (peut-être plus tôt) au cas où quelqu'un effectuerait une recherche.
lynxlynxlynx

0

La discussion est la même ici , ma réponse finale étant que SAGA fait le travail pour vous.


Suite à votre réponse à cette discussion, il semble que SAGA ne préserve pas la topologie. Du moins plus maintenant.
Oystein
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.