¿Escribir capa vectorial en un archivo CSV con geometría usando PyQGIS?

12

Utilizo Python para intentar escribir un archivo de capa vectorial en un archivo csv con este código:

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

Se puede exportar a xyz.csv pero solo se muestran los atributos en el csv, no en la columna de geometría.

¿Cómo puedo exportar datos de atributos y espaciales en un archivo csv?

Anubiz
fuente
1
Aquí está la misma pregunta y la solución [enlace] [1]. [1]: gis.stackexchange.com/questions/43129/…
mete7
Lo siento por hacer preguntas no claras. mi trabajo usa python con pyqgis write vector layer en el archivo csv. Quiero que el archivo csv tenga geometría pero no. Todavía necesito respuesta
Anubiz
Depende del tipo de capa vectorial que desee exportar. Para la capa de puntos, puede agregar los valores largos y largos como columnas de la tabla de atributos. Para todos los demás, necesita WKT
Curlew
Gracias Curlew, trabajo con punto y capa de polígono. para la capa de puntos quiere decir agregar columna lat, lon en la tabla de atributos? ¿Qué tal el polígono?
Anubiz
3
¿Es esto realmente un duplicado? Esta pregunta aquí está dirigida particularmente a Python, que no está cubierta por la respuesta vinculada.
Matthias Kuhn

Respuestas:

9

Una respuesta similar se proporcionó en esta publicación:

Guarde como .csv con coordenadas en QGIS 2.2 y PyqGIS

Solo agregue layerOptions ='GEOMETRY=AS_XYZal final:

layer = QgsVectorLayer("path/to/shapefile", "name", "ogr")
QgsVectorFileWriter.writeAsVectorFormat(layer, r'c:\temp\xyz.csv', "utf-8", None, "CSV", layerOptions='GEOMETRY=AS_XYZ')
Joseph
fuente
Hola, estoy enfrentando un problema en esto, si escribo esto en la consola, no guarda los datos espaciales sino solo los atributos. Pero si lo guardo manualmente, funciona. Estoy usando QGIS 2.14.12.
Sunny Naik
2
@SunnyNaik: el layerOptionsparámetro ahora requiere una lista de valores de cadena, mientras que antes un solo valor era suficiente (como se describe en esta publicación ). Entonces su última línea se vería así:QgsVectorFileWriter.writeAsVectorFormat(layer, r'c:\temp\xyz.csv', "utf-8", None, "CSV", layerOptions=['GEOMETRY=AS_XYZ'])
Joseph