<div dir="ltr">This is awesome! Thanks Even.<br><br>Stefan<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Oct 6, 2014 at 8:55 PM, Even Rouault <span dir="ltr"><<a href="mailto:even.rouault@spatialys.com" target="_blank">even.rouault@spatialys.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Le lundi 06 octobre 2014 20:48:02, Stefan Ziegler a écrit :<br>
<span class="">> Hi Even<br>
><br>
> thanks! INDIRECT_SQLITE works like a charm. I could not figure out the<br>
> syntax to create a new layer in the very same gpkg file:<br>
><br>
> stefan@hatschepsut:~/Downloads$ ogr2ogr -append -f GPKG 2601.gpkg -nln<br>
> my_new_layer -dialect INDIRECT_SQLITE -sql 'SELECT * FROM<br>
> bodenbedeckung__bbtext WHERE tid IN (SELECT tid FROM bodenbedeckung__bbtext<br>
> GROUP BY ST_X(ST_SnapToGrid(geom, 500)), ST_Y(ST_SnapToGrid(geom, 500)),<br>
> nummer_name ORDER BY ST_X(ST_SnapToGrid(geom,500)),<br>
> ST_Y(ST_SnapToGrid(geom, 500)), ST_Distance(geom, ST_SnapToGrid(geom,<br>
> 500)))' 2601.gpkg<br>
> ERROR 1: sqlite3_exec(CREATE TABLE "my_new_layer" ( "fid" INTEGER PRIMARY<br>
> KEY AUTOINCREMENT, "geom" POINT )) failed: database is locked<br>
> ERROR 1: Terminating translation prematurely after failed<br>
> translation from sql statement.<br>
><br>
> Is this even possible?<br>
<br>
</span>Ah, good point. I've just added a particular case in ogr2ogr, like done for<br>
sqlite, when input dataset = output dataset, to open the database just once to<br>
avoid that locking issue.<br>
<div class="HOEnZb"><div class="h5"><br>
><br>
> regards<br>
> Stefan<br>
><br>
><br>
> On Mon, Oct 6, 2014 at 8:20 PM, Even Rouault <<a href="mailto:even.rouault@spatialys.com">even.rouault@spatialys.com</a>><br>
><br>
> wrote:<br>
> > Le lundi 06 octobre 2014 19:41:43, Stefan Ziegler a écrit :<br>
> > > Hi<br>
> > ><br>
> > > When trying to use SQLite dialect with GeoPackage I get some errors,<br>
> ><br>
> > like:<br>
> > > stefan@hatschepsut:~/Downloads$ ogrinfo -al -sql 'SELECT<br>
> > > ST_X(ST_SnapToGrid(geom,1)) FROM bodenbedeckung__bbtext LIMIT 1'<br>
> > > 2601.gpkgINFO: Open of `2601.gpkg'<br>
> > ><br>
> > >       using driver `GPKG' successful.<br>
> > ><br>
> > > ERROR 1: In ExecuteSQL(): sqlite3_prepare(SELECT<br>
> > ><br>
> > > ST_X(ST_SnapToGrid(geom,1)) FROM bodenbedeckung__bbtext LIMIT 1):<br>
> > >   no such function: ST_SnapToGrid<br>
> > ><br>
> > > The same query works with Shapefiles. I thought the SQLite dialect can<br>
> > > be used with any OGR datasource?<br>
> ><br>
> > Stefan,<br>
> ><br>
> > You need a very recent Spatialite (4.2 I think) for compatibility with<br>
> > GeoPackage. But your request would not work since Spatialite functions<br>
> > can only work with Spatialite geometry blobs and not Geopackage geometry<br>
> > blobs. Spatialite 4.2 provide explicit conversion methods AsGPB /<br>
> > GeomFromGPB.<br>
> ><br>
> > For example :<br>
> ><br>
> > $ ogrinfo poly.gpkg -sql "select<br>
> > AsGPB(ST_SnapToGrid(GeomFromGPB(geom),1)) from poly"<br>
> ><br>
> > I've also just added in trunk a "INDIRECT_SQLITE" dialect that will cause<br>
> > the<br>
> > generic solution used for shapefiles for example to be usable by<br>
> > GeoPackage datasources too. But this will be slower than direct SQL due<br>
> > to an extra translation layer done by OGR ( GPKG -> OGR feature -><br>
> > SQLite/Spatialite virtual table -> OGR feature ).<br>
> ><br>
> > $ ogrinfo poly.gpkg -sql "select ST_SnapToGrid(geom,1) from poly"<br>
> > -dialect INDIRECT_SQLITE<br>
> ><br>
> > Even<br>
> ><br>
> > --<br>
> > Spatialys - Geospatial professional services<br>
> > <a href="http://www.spatialys.com" target="_blank">http://www.spatialys.com</a><br>
<br>
--<br>
Spatialys - Geospatial professional services<br>
<a href="http://www.spatialys.com" target="_blank">http://www.spatialys.com</a><br>
</div></div></blockquote></div><br></div>