2

I want to create geopackage file using PyQGIS (for example database.gpkg) with one layer (named "myLayer"). I've tried this

from qgis.core import QgsVectorFileWriter

writer = QgsVectorFileWriter(fileName, 'UTF-8', layerFields, QgsWkbTypes.Unknown, QgsProject.instance().crs(), 'GPKG', newLayer='myLayer')

but got an error:

('newLayer' is an unknown keyword argument)

I can't use writeAsVectorFormatV2 because I need to create file first and than add it to QGIS.

Taras
  • 32,823
  • 4
  • 66
  • 137
BlackTesta
  • 317
  • 2
  • 7
  • 1
    @JGH no, this answer for saving exiting layers to geopackage and i know how to do this. But i need to create a geopackage first and then add it to Qgis. – BlackTesta Jun 10 '21 at 16:57
  • 2
    Germán Carrillo's answer does just that: in a single step, it creates the geopackage and saves the layer – JGH Jun 10 '21 at 17:24

1 Answers1

2

Finally I found solution. It works for me:

from qgis.core import QgsVectorFileWriter, QgsCoordinateTransformContext

options = QgsVectorFileWriter.SaveVectorOptions() options.layerName = 'myLayer' transformContext = QgsCoordinateTransformContext() writer = QgsVectorFileWriter.create(fileName, layerFields, QgsWkbTypes.Unknown, QgsProject.instance().crs(), transformContext, options)

Taras
  • 32,823
  • 4
  • 66
  • 137
BlackTesta
  • 317
  • 2
  • 7