Menulis layer vektor ke file CSV dengan geometri menggunakan PyQGIS?

11

Saya menggunakan Python mencoba untuk menulis file layer vektor ke file csv dengan kode ini:

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

Ia dapat mengekspor ke xyz.csv tetapi hanya atribut yang ditampilkan di csv, bukan kolom geometri.

Bagaimana saya bisa mengekspor data atribut dan spasial ke file csv?

Anubiz
sumber
1
Inilah pertanyaan dan solusinya [tautan] [1] yang sama. [1]: gis.stackexchange.com/questions/43129/…
mete7
Maaf karena pertanyaannya tidak jelas. pekerjaan saya menggunakan python dengan pyqgis menulis layer vektor ke file csv. Saya ingin file csv memiliki geometri tetapi tidak. masih butuh jawaban
Anubiz
Tergantung pada jenis layer vektor apa yang ingin Anda ekspor. Untuk layer titik, Anda bisa menambahkan nilai lat, panjang sebagai kolom tabel atribut. Untuk yang lainnya, Anda perlu WKT
Curlew
Terima kasih Curlew, saya bekerja dengan layer titik dan poligon. untuk lapisan maksud Anda menambahkan lat, kolom lon di tabel atribut? bagaimana dengan poligon?
Anubiz
3
Apakah ini benar-benar duplikat? Pertanyaan ini di sini ditujukan terutama pada python, yang tidak tercakup oleh jawaban yang ditautkan.
Matthias Kuhn

Jawaban:

8

Jawaban serupa diberikan dari pos ini:

Simpan sebagai .csv dengan koordinat di QGIS 2.2 dan PyqGIS

Tambahkan saja layerOptions ='GEOMETRY=AS_XYZdi akhir:

layer = QgsVectorLayer("path/to/shapefile", "name", "ogr")
QgsVectorFileWriter.writeAsVectorFormat(layer, r'c:\temp\xyz.csv', "utf-8", None, "CSV", layerOptions='GEOMETRY=AS_XYZ')
Yusuf
sumber
Hai, saya menghadapi masalah dalam hal ini, Jika saya mengetik ini di konsol itu tidak menyimpan data spasial tetapi hanya atribut. Tetapi jika saya menyimpannya secara manual itu berfungsi. Saya menggunakan QGIS 2.14.12.
Sunny Naik
2
@SunnyNaik - layerOptionsParameter sekarang memerlukan daftar nilai string sedangkan sebelum satu nilai sudah cukup (seperti yang dijelaskan dalam posting ini ). Jadi baris terakhir Anda akan terlihat seperti:QgsVectorFileWriter.writeAsVectorFormat(layer, r'c:\temp\xyz.csv', "utf-8", None, "CSV", layerOptions=['GEOMETRY=AS_XYZ'])
Joseph