Convertir une ligne en polygone


13

J'ai un fichier de formes avec les zones urbaines, mais malheureusement, le fichier de formes ne contient que des lignes simples. Le fichier de formes ressemble à ceci:

entrez la description de l'image ici

Je veux convertir ces lignes en un fichier de formes surfaciques dans QGIS. Je l'ai essayé avec l'outil "Lignes vers polygones" (Vector> Outils de géométrie> Lignes vers polygones), mais cela n'a pas fonctionné correctement. Après avoir utilisé cet outil, le fichier de formes ressemble à ceci:

entrez la description de l'image ici

Existe-t-il un autre moyen de convertir le fichier de formes de ligne en fichier de formes de polygone de zone dans QGIS?

Soit dit en passant, j'utilise QGIS 2.14.3 Essen.


2
J'ai obtenu quelque chose de similaire la dernière fois que j'ai utilisé cet outil. J'ai pu obtenir des polygones en utilisant l'outil de polygonisation.
johns

Thnaks pour votre réponse, où puis-je trouver l'outil de polygonisation?
Mark White

Polygonize peut être trouvé ici - Boîte à outils de traitement, géoalgorithmes QGIS, outils de géométrie vectorielle.
klewis

Je l'ai essayé, mais lorsque j'exécute le polygoniseur, j'obtiens un fichier de forme vide :-(
Mark White

Pouvez-vous télécharger le fichier de formes dans Dropbox ou similaire?
AndreJ

Réponses:


16

L' Polygonizeoutil de la boîte à outils Traitement fonctionne toujours bien pour moi sur des lignes simples:

entrez la description de l'image ici

Il est cependant nécessaire que les lignes se coupent ou partagent des sommets communs. Et les lignes ne devraient pas avoir d'auto-intersection.

Vous devrez peut-être accrocher les sommets des coins pour le faire fonctionner. Je règle généralement la tolérance d'accrochage à 10 pixels par rapport au sommet.


1
Moi aussi, j'ai été confronté au même problème lors de la conversion de lignes en polygones. L'outil "Polygoniser" a résolu le problème. gis.stackexchange.com/a/211794/62237
Sjs

7

Juste un indice si vous ne trouvez pas l' Polygonizeoutil. Dans mon installation de QGIS 2.18.3 (Windows), je n'ai pas pu trouver l' Polygonizeoutil Vector geometry toolsdans la boîte à outils. Il m'a fallu un certain temps pour réaliser que j'avais besoin d'installer la python-shapelybibliothèque avec OSGeo4W (merci Nick Hopton: Perfect Polygons dans QGIS ).


Je vous remercie! J'ai été confus pendant longtemps parce que QGIS sous Windows a un outil de polygonisation qui est uniquement destiné aux rasters. Une autre étape qui peut être nécessaire ou non est d'activer les géo-algorithmes QGIS sous "Traitement >> Options >> Fournisseurs"
matt wilkie

Merci pour cette réponse. Je pensais que je
devenais

3

En regardant votre image, je suppose que chaque ligne ne comprend pas entièrement une zone, les lignes agissent simplement comme des clôtures et ne se reconnectent pas au début. Vos polygones sont créés à partir des extrémités des lignes, de sorte que l'outil "lignes vers polygones" fonctionne correctement, ce sont les données qui posent problème.

Je crains que la seule chose à laquelle je puisse penser est de numériser une nouvelle couche de polygones. Heureusement, QGIS a rendu cela très facile avec l'outil de numérisation de trace (une icône d'aimant) qui est disponible en 2.14


0

S'il n'y a pas de trous, je créerais une couche de travail avec un seul polygone suffisamment grand pour couvrir toute votre zone. Ensuite, je l'intersecte avec le résultat de vos lignes en polygones et le divise davantage si nécessaire.


0

Testé sur QGIS 2.18 et QGIS 3.4

Je peux suggérer d'utiliser un "Virtual Layer"travers Layer > Add Layer > Add/Edit Virtual Layer....

Supposons que nous ayons cinq entités linéaires "lines", voir l'image ci-dessous.

Exemple

Avec la requête suivante, il est possible d'obtenir le résultat.

SELECT l.id, l.NAME, MakePolygon(AddPoint(l.geometry,StartPoint(l.geometry)))
FROM lines AS l
GROUP BY l.id

La couche virtuelle de sortie ressemblera à

Résultat_1

Comme cela a déjà été mentionné par @AndreJ, les lignes doivent se croiser ou partager des sommets communs. Et les lignes ne devraient pas avoir d'auto-intersection. En termes de nettoyage de la topologie de la couche, je peux suggérer d'explorer le v.cleanjeu d'outils GRASS.


Dans le cas où les lignes ont une auto-intersection, vous pouvez utiliser un ConvexHull avec la requête suivante

SELECT l.id, l.NAME, ConvexHull(AddPoint(l.geometry,StartPoint(l.geometry)))
FROM lines AS l
GROUP BY l.id

Cas

Production


Les références:


0

Si les polylignes se chevauchent, l' Polygonizeoutil ne peut pas les gérer comme suit:

entrez la description de l'image ici

Cependant, l' Lines to polygonsoutil fonctionne comme prévu comme suit:

entrez la description de l'image ici

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.