[gdal-dev] Re: OGR Spatialite driver and spatial index
Even Rouault
even.rouault at mines-paris.org
Mon Aug 29 15:09:47 EDT 2011
Le lundi 29 août 2011 12:19:26, Jukka Rahkonen a écrit :
> Even Rouault <even.rouault <at> mines-paris.org> writes:
> > Hum, the OGR driver was indeed written a bit too naively, assuming that
> > MBRIntersects() would be similar to the && operator in PostGIS.
> > Apparently not. Strange that this hasn't been reported before, but I
> > assume you can only see the
> > difference with big amount of data, like your OSM database (and the
> > MBRIntersects() test must be faster than evaluating the spatial filter on
> > OGR side, so that's perhaps why it wasn't seen at implementation time).
> > Anyway, would you mind opening a Trac ticket about this ? Changing the
> > request to use the spatial index table should not be too difficult.
>
> Ticket [GDAL] #4212 done with sample requests which should show the speed
> difference and a download link to a test database which is created with
> ogr2ogr v. 1.8.1.
Improvement commited in r23008.
Before :
$ time ogrinfo berlin.sqlite osm_polygon -spat 1489000 6899000 1490000 6900000
-al -so
real 0m0.619s
user 0m0.580s
sys 0m0.040s
After :
$ time ogrinfo berlin.sqlite osm_polygon -spat 1489000 6899000 1490000 6900000
-al -so
real 0m0.053s
user 0m0.020s
sys 0m0.040s
And for comparison, the same for a postgis instance :
$ time ogrinfo pg:dbname=autotest osm_polygon -spat 1489000 6899000 1490000
6900000 -al -so
real 0m0.168s
user 0m0.050s
sys 0m0.000s
However, there is no gain to expect from the above change for a request such
as :
ogrinfo OSM_Finland.sqlite -sql "select geometry, osm_id ,highway,ref,
name, tunnel from osm_line where highway is not null"
-spat 389116 6677305 389579 6677661
Indeed, when you specify -sql, the driver (and to my knowlegde, this is true
for all other OGR drivers) makes no attempt to merge the spatial filter, so the
spatial filter is evaluated on OGR side, which will be rather slow. So, you
have 2 possibilities, either use the "-where highway is not null" on a layer
so that OGR can merge the attribute and spatial filters, or incorporate at hand
the spatial filter inside the SQL query specified with -sql.
>
> -Jukka Rahkonen-
>
> _______________________________________________
> gdal-dev mailing list
> gdal-dev at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/gdal-dev
More information about the gdal-dev
mailing list