Scrivere layer vettoriali su file CSV con geometria usando PyQGIS?


12

Uso Python provo a scrivere un file layer vettoriale in un file CSV con questo codice:

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

Può esportare in xyz.csv ma ​​solo gli attributi sono mostrati nella CSV, non nella colonna della geometria.

Come posso esportare sia i dati degli attributi che quelli spaziali nel file CSV?


1
Ecco la stessa domanda e la soluzione [link] [1]. [1]: gis.stackexchange.com/questions/43129/…
— mete7

Mi dispiace che la domanda non sia chiara. il mio lavoro usa python con pyqgis e scrive layer vettoriali su file CSV. Voglio che il file CSV abbia una geometria ma non lo è.
— Ho

Dipende dal tipo di livello vettoriale che si desidera esportare. Per il livello punti puoi semplicemente aggiungere i valori lat, long come colonne della tabella degli attributi. Per tutti gli altri hai bisogno del WKT
— Chiurlo

Grazie Curlew, lavoro con il punto e il livello poligonale. per livello punto intendi aggiungere lat, colonna lon nella tabella degli attributi? che ne dici di poligono?
— Anubiz,

3
È davvero un duplicato? Questa domanda qui è rivolta in particolare a Python, che non è coperto dalla risposta collegata.
— Matthias Kuhn,

Risposte:


9

Una risposta simile è stata fornita da questo post:

Salva come .csv con coordinate sia in QGIS 2.2 che in PyqGIS

Aggiungi layerOptions ='GEOMETRY=AS_XYZalla fine:

layer = QgsVectorLayer("path/to/shapefile", "name", "ogr")
QgsVectorFileWriter.writeAsVectorFormat(layer, r'c:\temp\xyz.csv', "utf-8", None, "CSV", layerOptions='GEOMETRY=AS_XYZ')

Ciao, sto affrontando un problema in questo, se lo scrivo nella console non salva i dati spaziali ma solo gli attributi. Ma se lo salvo manualmente funziona. Sto usando QGIS 2.14.12.
— Sunny Naik,

2
@SunnyNaik - Il layerOptionsparametro ora richiede un elenco di valori stringa mentre prima era sufficiente un singolo valore (come descritto in questo post ). Quindi la tua ultima riga sarebbe simile a:QgsVectorFileWriter.writeAsVectorFormat(layer, r'c:\temp\xyz.csv', "utf-8", None, "CSV", layerOptions=['GEOMETRY=AS_XYZ'])
— Joseph
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.