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.