This driver implements support for access to spatial tables in the OGC GeoPackage format standard. The GeoPackage standard uses a SQLite database file as a generic container, and the standard defines:

This driver reads and writes SQLite files from the file system, so it must be run by a user with read/write access to the files it is working with.



The driver supports OGR attribute filters, and users are expected to provide filters in the SQLite dialect, as they will be executed directly against the database.

Starting with GDAL 2.0, SQL SELECT statements passed to ExecuteSQL() are also executed directly against the database. If Spatialite is used, a recent version (4.2.0) is needed and use of explicit cast operators AsGPB(), GeomFromGPB() are required. It is also possible to use with any Spatialite version, but in a slower way, by specifying the "INDIRECT_SQLITE" dialect. In which case, GeoPackage geometries appear as Spatialite geometries after translation by OGR.

SQL functions

Starting with GDAL 2.0, the following SQL functions, from the GeoPackage specification, are available : The following functions, with identical syntax and semantics as in Spatialite, are also available :

Link with Spatialite

Starting with GDAL 2.0, if it has been compiled against Spatialite 4.2 or later, it is also possible to use Spatialite SQL functions. Explicit transformation from GPKG geometry binary encoding to/from Spatialite geometry binary encoding must be done.
ogrinfo poly.gpkg -sql "SELECT AsGPB(ST_Buffer(CastAutomagic(geom),5)) FROM poly"

Creation Issues

When creating a new GeoPackage file, the driver will attempt to force the database into a UTF-8 mode for text handling, satisfying the OGR strict UTF-8 capability. For pre-existing files, the driver will work with whatever it's given.

Dataset Creation Options


Layer Creation Options



See Also