Zapisujesz warstwę wektorową do pliku CSV z geometrią za pomocą PyQGIS?

12

Używam Pythona próbuję zapisać plik warstwy wektorowej do pliku csv za pomocą tego kodu:

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

Może eksportować do xyz.csv, ale tylko atrybuty są wyświetlane w pliku csv, a nie w kolumnie geometrii.

Jak mogę wyeksportować dane atrybutów i dane przestrzenne do pliku csv?

Anubiz
źródło
1
Oto to samo pytanie i rozwiązanie [link] [1]. [1]: gis.stackexchange.com/questions/43129/…
mete7
Przepraszam, że pytanie nie jest jasne. moja praca polega na użyciu Pythona z pyqgis do zapisu warstwy wektorowej do pliku csv Chcę, aby plik csv miał geometrię, ale nie ma. wciąż potrzebuję odpowiedzi
Anubiz
Zależy od typu warstwy wektorowej, którą chcesz wyeksportować. Dla warstwy punktowej możesz po prostu dodać długie, długie wartości jako kolumny tabeli atrybutów. Do wszystkich pozostałych potrzebujesz WKT
Curlew
Dziękuję Curlew, pracuję z warstwą punktową i wielokątną. dla warstwy punktowej masz na myśli dodanie lat, lon kolumna w tabeli atrybutów? co powiesz na wielokąt?
Anubiz
3
Czy to naprawdę duplikat? To pytanie jest skierowane w szczególności do pytona, który nie jest objęty połączoną odpowiedzią.
Matthias Kuhn

Odpowiedzi:

9

Podobna odpowiedź pochodzi z tego postu:

Zapisz jako .csv ze współrzędnymi zarówno w QGIS 2.2, jak i PyqGIS

Po prostu dodaj layerOptions ='GEOMETRY=AS_XYZna końcu:

layer = QgsVectorLayer("path/to/shapefile", "name", "ogr")
QgsVectorFileWriter.writeAsVectorFormat(layer, r'c:\temp\xyz.csv', "utf-8", None, "CSV", layerOptions='GEOMETRY=AS_XYZ')
Joseph
źródło
Cześć, mam do czynienia z problemem, jeśli wpisuję to w konsoli, nie zapisuje ona danych przestrzennych, ale tylko atrybuty. Ale jeśli zapiszę to ręcznie, to zadziała. Korzystam z QGIS 2.14.12.
Sunny Naik
2
@SunnyNaik - layerOptionsparametr wymaga teraz listy wartości ciągów, podczas gdy wcześniej wystarczyła jedna wartość (jak opisano w tym poście ). Więc twój ostatni wiersz wyglądałby tak:QgsVectorFileWriter.writeAsVectorFormat(layer, r'c:\temp\xyz.csv', "utf-8", None, "CSV", layerOptions=['GEOMETRY=AS_XYZ'])
Joseph