Здравствуйте!
Может кто подскажет, как скриптом PyQgis (какой именно код должен быть, параметры) экспортировать слои в формат GML именно версии 3.0 (не 3.2)?
Способы типа
- "QgsVectorFileWriter.writeAsVectorFormat(lyr, fn + '.gml', "utf-8", crs, 'GML')"
или
- "params = { "INPUT": layer,
"OUTPUT": output_filename,
"CRS": crscode,
"VERSION": "3.0",
"LAYER_OPTIONS": ["SRSNAME=urn:ogc:def:crs:EPSG::3857"]}
processing.run("gdal:convertformat", params)"
результатом дают именно версию 3.2
Однако, если выполнять экспорт стандартным "Save vector layer as..." имеется опция выбора версии GML и выбор "GML3" экспортирует именно в версию 3.0. Может как-то можно "подсмотреть" строку с параметрами при таком экспорте?
Экпорт в GML версии 3.0 средствами PyQgis
-
- Участник
- Сообщения: 73
- Зарегистрирован: 15 фев 2018, 18:07
- Репутация: 1
- Откуда: оттуда
-
- Новоприбывший
- Сообщения: 5
- Зарегистрирован: 18 окт 2023, 18:20
- Репутация: 0
- Откуда: Энгельс
Re: Экпорт в GML версии 3.0 средствами PyQgis
Попробуй через QgsVectorFileWriter.SaveVectorLayer() с указанием driverName='GML' и параметром datasourceOptions=['GML3=YES'].Stasss писал(а): ↑07 окт 2025, 14:46Здравствуйте!
Может кто подскажет, как скриптом PyQgis (какой именно код должен быть, параметры) экспортировать слои в формат GML именно версии 3.0 (не 3.2)?
Способы типа
- "QgsVectorFileWriter.writeAsVectorFormat(lyr, fn + '.gml', "utf-8", crs, 'GML')"
или
- "params = { "INPUT": layer,
"OUTPUT": output_filename,
"CRS": crscode,
"VERSION": "3.0",
"LAYER_OPTIONS": ["SRSNAME=urn:ogc:def:crs:EPSG::3857"]}
processing.run("gdal:convertformat", params)"
результатом дают именно версию 3.2
Однако, если выполнять экспорт стандартным "Save vector layer as..." имеется опция выбора версии GML и выбор "GML3" экспортирует именно в версию 3.0. Может как-то можно "подсмотреть" строку с параметрами при таком экспорте?
Это примерно то, что делает GUI при выборе “GML3” — тогда экспортируется именно в 3.0, а не 3.2
-
- Участник
- Сообщения: 73
- Зарегистрирован: 15 фев 2018, 18:07
- Репутация: 1
- Откуда: оттуда
Re: Экпорт в GML версии 3.0 средствами PyQgis
Спасибо за наводку!
Однако SaveVectorLayer() QGIS API не предусмотрен.
Но добился нужного следующими вариантами:
1. "QgsVectorFileWriter.writeAsVectorFormat(layer, output_filename, "utf-8", QgsCoordinateReferenceSystem('EPSG:3857'), 'GML', datasourceOptions = ['FORMAT=GML3'])"
2. "transformContext = QgsProject.instance().transformContext() # required for V3
options = QgsVectorFileWriter.SaveVectorOptions()
options.ct = QgsCoordinateTransform(layer.crs(), QgsCoordinateReferenceSystem('EPSG:3857'), transformContext)
options.driverName = 'GML'
options.datasourceOptions = ['FORMAT=GML3']
options.encoding = 'utf-8'
QgsVectorFileWriter.writeAsVectorFormatV3(
layer=layer,
fileName=output_filename,
transformContext=transformContext,
options=options
)"
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя