Vous écrivez une couche vectorielle dans un fichier CSV avec une géométrie à l'aide de PyQGIS?

12

J'utilise Python pour essayer d'écrire un fichier de couche vectorielle dans un fichier csv avec ce code:

QgsVectorFileWriter.writeAsVectorFormat(mylayer, r'c:\temp\xyz.csv', "utf-8", None, "CSV")

Il peut exporter vers xyz.csv mais seuls les attributs s'affichent dans le csv, pas dans la colonne de géométrie.

Comment puis-je exporter à la fois des données d'attribut et spatiales dans un fichier csv?

Anubiz
la source
1
Voici la même question et la solution [link] [1]. [1]: gis.stackexchange.com/questions/43129/…
mete7
Je suis désolé de ne pas clarifier la question. mon travail utilise python avec pyqgis écrit une couche vectorielle dans un fichier csv. Je veux que le fichier csv ait une géométrie mais pas. encore besoin de réponse
Anubiz
Dépend du type de calque vectoriel que vous souhaitez exporter. Pour la couche de points, vous pouvez simplement ajouter les valeurs lat et longues en tant que colonnes de table d'attributs. Pour tous les autres, vous avez besoin de WKT
Curlew
Merci Courlis, je travaille avec des couches de points et de polygones. pour la couche de points, vous voulez dire ajouter la colonne lat, lon dans la table attributaire? que diriez-vous du polygone?
Anubiz
3
Est-ce vraiment un doublon? Cette question vise ici particulièrement le python, qui n'est pas couvert par la réponse liée.
Matthias Kuhn

Réponses:

9

Une réponse similaire a été fournie par ce post:

Enregistrer au format .csv avec des coordonnées dans QGIS 2.2 et PyqGIS

Ajoutez simplement layerOptions ='GEOMETRY=AS_XYZà la fin:

layer = QgsVectorLayer("path/to/shapefile", "name", "ogr")
QgsVectorFileWriter.writeAsVectorFormat(layer, r'c:\temp\xyz.csv', "utf-8", None, "CSV", layerOptions='GEOMETRY=AS_XYZ')
Joseph
la source
Salut, je suis confronté à un problème dans ce domaine, si je tape ceci dans la console, il n'enregistre pas les données spatiales mais uniquement les attributs. Mais si je l'enregistre manuellement, cela fonctionne. J'utilise QGIS 2.14.12.
Sunny Naik
2
@SunnyNaik - Le layerOptionsparamètre nécessite désormais une liste de valeurs de chaîne alors qu'auparavant une seule valeur était suffisante (comme décrit dans ce billet ). Ainsi, votre dernière ligne ressemblerait à ceci:QgsVectorFileWriter.writeAsVectorFormat(layer, r'c:\temp\xyz.csv', "utf-8", None, "CSV", layerOptions=['GEOMETRY=AS_XYZ'])
Joseph