Speichern der Shapefile-Ebene als KML mit datasourceOptions mithilfe von PyQGIS
Ich versuche, eine Shapefile-Ebene durch Python-Codierung in das KML-Format in QGIS zu exportieren.
Der Code lautet:
QgsVectorFileWriter.writeAsVectorFormat(inputlayer, outputlayer, "utf-8", coord_system, "KML")
Aber ich muss dataSourceOptionin der Zeile hinzufügen , weil ich ein angeben muss "nameField".
Wie kann ich dataSourceOptiondie writeAsVectorFormatMethode hinzufügen ? Ich habe gesehen, dass ich dataSourceOptionein akzeptiere, QStringList()aber ich verstehe es nicht.
Antworten
datasourceOptions werden als Liste der OGR-Erstellungsoptionen für das Format übergeben.
Es gibt zwei Möglichkeiten: writeAsVectorFormatV2()und writeAsVectorFormat().
Der erste ist meiner Meinung nach ordentlicher:
options = QgsVectorFileWriter.SaveVectorOptions()
options.driverName = "KML"
options.fileEncoding = 'utf-8'
options.datasourceOptions = ["NameField=ulica"]
QgsVectorFileWriter.writeAsVectorFormatV2(layer=inputLayer, fileName=fileName, transformContext=QgsCoordinateTransformContext(), options=options)
Zweite Option:
QgsVectorFileWriter.writeAsVectorFormat(layer=inputLayer,
fileName=fileName,
fileEncoding='utf-8',
destCRS=crs,
driverName="KML",
datasourceOptions=["NameField=ulica"]
)
PS. Wie ich die Antwort auf Ihre Frage gefunden habe:
Hier ist die Dokumentation von QgsVectorFileWriter. Der datasourceOptionsParameter wird als Liste der Optionen zur Erstellung von OGR-Datenquellen beschrieben.
Hier habe ich in der GDAL / OGR-Dokumentation nach Optionen für die Erstellung des KML-Formats gesucht. Jedes Format hat seine eigenen Erstellungsoptionen. Wenn Sie andere Optionen angeben müssen, übergeben Sie diese einfach in der Liste, genau wie Sie sie übergeben würden, wenn Sie OGR / GDAL in der Befehlszeile verwenden würden.
Vielen Dank!
Ich habe eine schlechtere Lösung gefunden:
Bearbeiten des Namens eines Shapefile-Felds in "NAME", das das Standardfeld ist, das vom Schreiber des QgsVectorFileWriter.writeAsVectorFormat verwendet wird.