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?


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')

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.