Guardar la capa de shapefile como KML con datasourceOptions usando PyQGIS
Estoy tratando de exportar una capa de shapefile a formato KML en QGIS, a través de la codificación Python.
El codigo es:
QgsVectorFileWriter.writeAsVectorFormat(inputlayer, outputlayer, "utf-8", coord_system, "KML")
Pero tengo que agregar dataSourceOptionen la línea, porque tengo que especificar un "nameField".
¿Cómo puedo agregar dataSourceOptionel writeAsVectorFormatmétodo? He visto que dataSourceOptionacepto un QStringList()pero no lo entiendo.
Respuestas
datasourceOptions se pasa como una lista de opciones de creación de OGR para el formato.
Hay 2 formas: writeAsVectorFormatV2()y writeAsVectorFormat().
El primero es más ordenado en mi opinión:
options = QgsVectorFileWriter.SaveVectorOptions()
options.driverName = "KML"
options.fileEncoding = 'utf-8'
options.datasourceOptions = ["NameField=ulica"]
QgsVectorFileWriter.writeAsVectorFormatV2(layer=inputLayer, fileName=fileName, transformContext=QgsCoordinateTransformContext(), options=options)
Segunda opción:
QgsVectorFileWriter.writeAsVectorFormat(layer=inputLayer,
fileName=fileName,
fileEncoding='utf-8',
destCRS=crs,
driverName="KML",
datasourceOptions=["NameField=ulica"]
)
PD. Cómo encontré la respuesta a tu pregunta:
Aquí está la documentación de QgsVectorFileWriter. El datasourceOptionsparámetro se describe como una lista de opciones de creación de fuentes de datos OGR.
Aquí busqué las opciones de creación de formato KML en la documentación de GDAL / OGR. Cada formato tiene sus propias opciones de creación específicas. Si necesita especificar cualquier otra opción, simplemente páselos en la lista tal como los pasaría si usara OGR / GDAL en la línea de comando.
¡Gracias!
Encontré una solución más pobre:
editar el nombre de uno de los campos de shapefile a "NAME" que es el campo predeterminado que toma el escritor del QgsVectorFileWriter.writeAsVectorFormat.