[gdal-dev] SQLite dialect with GeoPackage

Even Rouault even.rouault at spatialys.com
Mon Oct 6 11:20:14 PDT 2014


Le lundi 06 octobre 2014 19:41:43, Stefan Ziegler a écrit :
> Hi
> 
> When trying to use SQLite dialect with GeoPackage I get some errors, like:
> 
> stefan at hatschepsut:~/Downloads$ ogrinfo -al -sql 'SELECT
> ST_X(ST_SnapToGrid(geom,1)) FROM bodenbedeckung__bbtext LIMIT 1'
> 2601.gpkgINFO: Open of `2601.gpkg'
>       using driver `GPKG' successful.
> ERROR 1: In ExecuteSQL(): sqlite3_prepare(SELECT
> ST_X(ST_SnapToGrid(geom,1)) FROM bodenbedeckung__bbtext LIMIT 1):
>   no such function: ST_SnapToGrid
> 
> 
> The same query works with Shapefiles. I thought the SQLite dialect can be
> used with any OGR datasource?

Stefan,

You need a very recent Spatialite (4.2 I think) for compatibility with 
GeoPackage. But your request would not work since Spatialite functions can 
only work with Spatialite geometry blobs and not Geopackage geometry blobs. 
Spatialite 4.2 provide explicit conversion methods AsGPB / GeomFromGPB. 

For example :

$ ogrinfo poly.gpkg -sql "select AsGPB(ST_SnapToGrid(GeomFromGPB(geom),1)) 
from poly"

I've also just added in trunk a "INDIRECT_SQLITE" dialect that will cause the 
generic solution used for shapefiles for example to be usable by GeoPackage 
datasources too. But this will be slower than direct SQL due to an extra 
translation layer done by OGR ( GPKG -> OGR feature -> SQLite/Spatialite 
virtual table -> OGR feature ).

$ ogrinfo poly.gpkg -sql "select ST_SnapToGrid(geom,1) from poly" -dialect 
INDIRECT_SQLITE

Even

-- 
Spatialys - Geospatial professional services
http://www.spatialys.com


More information about the gdal-dev mailing list