QgsVectorLayerExporter с файлом геопакетаPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 QgsVectorLayerExporter с файлом геопакета

Сообщение Anonymous »

Мне нужно изменить строку экспортируемых данных из QgsProject.instance().mapLayers().values() в файл Geopackage (.gpkg).
Старая версия с

Код: Выделить всё

QgsVectorFileWriter.writeAsVectorFormatV3(layer, outGPKG, QgsCoordinateTransformContext(), options)
сработало, но пользователи говорят, что их QGIS вышел из строя после завершения экспорта.
Таким образом, мне нужно это изменить.
В настоящее время я пытаюсь использовать :

Код: Выделить всё

QgsVectorLayerExporter.exportLayer(...)
Но я не знаю, как и какие атрибуты ставить.
Официальный документальный фильм: https://www.qgis.org/pyqgis/master/core ... orter.html# qgis.core.QgsVectorLayerExporter.exportLayer
мне не ясно.
пример: в чем разница между URI и имя файла в качестве второго параметра (от новой к старой функции).
Создание данных (подготовка к ) происходит следующим образом:

Код: Выделить всё

created_layers = {
QgsWkbTypes.PointGeometry: False,
QgsWkbTypes.LineGeometry: False,
QgsWkbTypes.PolygonGeometry: False
}
for layer in QgsProject.instance().mapLayers().values():

if layer.isValid() and isinstance(layer, QgsVectorLayer) and layer.featureCount() > 0:
if layer.name() in ["błędy z kontroli atrybutów","geometrie obiektów pokrycia terenu","lokalizacje", \
"nakładania","dziury ","poziomic"] or "błędy z walidacji" in layer.name():

if "błędy z kontroli atrybutów" in layer.name():
typ_geometrii = layer.geometryType()
if created_layers[typ_geometrii]:
continue

created_layers[typ_geometrii] = True
suffix = ''

if typ_geometrii == QgsWkbTypes.PointGeometry:
suffix = f"_Punkt"
elif typ_geometrii == QgsWkbTypes.LineGeometry:
suffix = f"_Linia"
elif typ_geometrii == QgsWkbTypes.PolygonGeometry:
suffix = f"_Poligon"
else:
suffix = f"_InnyTypGeometrii"
outGPKG = sciezkaGML + f'/RaportBledow_{nazwa_pliku}_{timestr}_błędy z kontroli atrybutów{suffix}.gpkg'
elif "błędy z walidacji" in layer.name():
outGPKG = (sciezkaGML + f'/RaportBledow_{layer.name()}.gpkg').replace('__', f'_{timestr}_')
else:
outGPKG = (sciezkaGML + f'/RaportBledow_{nazwa_pliku}_{timestr}_{layer.name()}.gpkg')
в старой версии тоже были опции:

Код: Выделить всё

 options = QgsVectorFileWriter.SaveVectorOptions()
options.driverName = 'GPKG'
options.layerName = layer.name()
options.fileEncoding = 'UTF-8'
options.destCRS = QgsCoordinateReferenceSystem(epsg)
Я не знаю, нужны ли они в новой версии и как ее изменить.
Спасибо за любую помощь!
Спасибо за любую помощь!
Не знаю, нужны ли они в новой версии и как ее изменить.
Спасибо за любую помощь!
п>

Подробнее здесь: https://stackoverflow.com/questions/793 ... ckage-file
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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