Importer CSV sous forme de polygone dans QGIS
J'ai un fichier CSV avec les coordonnées des sommets de mes polygones (dans l'image ils correspondent à "gauche", "droite", "haut", "bas"). C'est en fait une grille de polygones. Comment puis-je importer le fichier dans QGIS sous forme de polygones et non de points?
Réponses
Je suppose que vous voulez les rectangles avec diagonale (gauche, haut) et (droite, bas) comme polygones requis.
Vous pouvez importer le CSV sous forme de points, par exemple x = gauche , y = haut , puis utiliser un traitement (ou même des expressions) qui accèdent à droite et en bas comme attributs et se transforment en rectangles souhaités.
Cependant, il sera plus rapide de prétraiter dans Excel (ou quel que soit votre programme de feuille de calcul) en combinant les attributs dans une chaîne de polygones WKT, qui spécifie sans ambiguïté les polygones dans un format standard.
Dans la cellule G2 (ou la ligne 2 d'une nouvelle colonne si G est utilisé), placez-la ="POLYGON(("&B2&" "&C2&", "&D2&" "&C2&", "&D2&" "&E2&", "&B2&" "&E2&", "&B2&" "&C2&"))"et copiez-la. Il génère une chaîne WKT polygonale qui fait le tour des points dans le sens des aiguilles d'une montre. Vous pouvez ensuite importer le CSV en prenant la géométrie de cette colonne et QGIS l'interprétera comme un polygone (rectangle) pour chaque ligne.
Vous pouvez le faire avec des expressions, même charger votre fichier Excel, sans convertir en .csv, charger votre fichier Excel comme s'il s'agissait d'une couche vectorielle
Dans la boîte à outils de processus > géométrie vectorielle > géométrie par expression .
L'expression, bien qu'elle paraisse un peu longue, consiste simplement à écrire un polygone wkt en utilisant les champs, puis à le convertir en géométrie.
Exécutez simplement cette expression
geom_from_wkt( concat('POLYGON((',to_string("left")+' '+to_string("top")+',',to_string("right")+' '+to_string("top")+', ', to_string("right")+' '+to_string("bottom")+',', to_string("left")+' '+to_string("bottom"),'))
Vous obtiendrez un résultat comme celui-ci: