Экпорт в GML версии 3.0 средствами PyQgis

Вопросы по свободной ГИС QGIS. Сообщения об ошибках, предложения по улучшению, локализация.
Ответить
Stasss
Участник
Сообщения: 73
Зарегистрирован: 15 фев 2018, 18:07
Репутация: 1
Откуда: оттуда

Экпорт в GML версии 3.0 средствами PyQgis

Сообщение 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. Может как-то можно "подсмотреть" строку с параметрами при таком экспорте?

Tarak
Новоприбывший
Сообщения: 5
Зарегистрирован: 18 окт 2023, 18:20
Репутация: 0
Откуда: Энгельс

Re: Экпорт в GML версии 3.0 средствами PyQgis

Сообщение Tarak » 07 окт 2025, 22:22

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. Может как-то можно "подсмотреть" строку с параметрами при таком экспорте?
Попробуй через QgsVectorFileWriter.SaveVectorLayer() с указанием driverName='GML' и параметром datasourceOptions=['GML3=YES'].
Это примерно то, что делает GUI при выборе “GML3” — тогда экспортируется именно в 3.0, а не 3.2

Stasss
Участник
Сообщения: 73
Зарегистрирован: 15 фев 2018, 18:07
Репутация: 1
Откуда: оттуда

Re: Экпорт в GML версии 3.0 средствами PyQgis

Сообщение Stasss » 08 окт 2025, 08:36

Tarak писал(а):
07 окт 2025, 22:22
Попробуй через QgsVectorFileWriter.SaveVectorLayer() с указанием driverName='GML' и параметром datasourceOptions=['GML3=YES'].
Это примерно то, что делает GUI при выборе “GML3” — тогда экспортируется именно в 3.0, а не 3.2
Спасибо за наводку!
Однако 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
)"

Ответить

Вернуться в «QGIS»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя