Vektorebene mit PyQGIS in eine CSV-Datei mit Geometrie schreiben?

11

Ich benutze Python und versuche, eine Vektorebene-Datei mit diesem Code in eine CSV-Datei zu schreiben:

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

Es kann in xyz.csv exportiert werden, aber nur Attribute werden in der CSV angezeigt, nicht in der Geometriespalte.

Wie kann ich sowohl Attribut- als auch Geodaten in eine CSV-Datei exportieren?

Anubiz
quelle
1
Hier ist die gleiche Frage und die Lösung [Link] [1]. [1]: gis.stackexchange.com/questions/43129/…
mete7
Es tut mir leid, dass ich die Frage nicht klar gestellt habe. Meine Arbeit verwendet Python mit Pyqgis schreiben Vektorebene in CSV-Datei. Ich möchte, dass CSV-Datei Geometrie hat, aber nicht. brauche noch eine Antwort
Anubiz
Hängt davon ab, welche Art von Vektorebene Sie exportieren möchten. Für die Punktebene können Sie einfach die lat, long-Werte als Attributtabellenspalten hinzufügen. Für alle anderen müssen Sie WKT
Curlew
Danke Brachvogel, ich arbeite mit Punkt- und Polygonebene. für punktebene meinst du lat, lon spalte in Attributtabelle hinzufügen? Wie wäre es mit Polygon?
Anubiz
3
Ist das wirklich ein Duplikat? Diese Frage richtet sich hier insbesondere an Python, das in der verknüpften Antwort nicht behandelt wird.
Matthias Kuhn

Antworten:

8

Eine ähnliche Antwort wurde von diesem Beitrag gegeben:

Speichern Sie als CSV mit Koordinaten in QGIS 2.2 und PyqGIS

Fügen Sie einfach layerOptions ='GEOMETRY=AS_XYZam Ende hinzu:

layer = QgsVectorLayer("path/to/shapefile", "name", "ogr")
QgsVectorFileWriter.writeAsVectorFormat(layer, r'c:\temp\xyz.csv', "utf-8", None, "CSV", layerOptions='GEOMETRY=AS_XYZ')
Joseph
quelle
Hallo, ich habe ein Problem damit. Wenn ich dies in die Konsole eingebe, werden nicht die räumlichen Daten, sondern nur die Attribute gespeichert. Aber wenn ich es manuell speichere, funktioniert es. Ich verwende QGIS 2.14.12.
Sunny Naik
2
@SunnyNaik - Der layerOptionsParameter erfordert jetzt eine Liste von Zeichenfolgenwerten, während zuvor ein einzelner Wert ausreichte (wie in diesem Beitrag beschrieben ). Ihre letzte Zeile würde also so aussehen:QgsVectorFileWriter.writeAsVectorFormat(layer, r'c:\temp\xyz.csv', "utf-8", None, "CSV", layerOptions=['GEOMETRY=AS_XYZ'])
Joseph