SQLite can be built with the R*tree module, which supports efficiently looking up all bounding boxes that contain a point: https://www.sqlite.org/rtree.html
PostGIS similarly provides an R*Tree index mode, as well as a heap of functions for doing GIS calculations directly. To do that in SQLite, you'd implement and inject custom functions as appropriate.
There's an option to enable RTree indexes to speed up queries like this one:
SELECT way_id
FROM rtree_way
WHERE max_lon>= 7.851 AND min_lon<= 7.854
AND max_lat>=47.995 AND min_lat<=47.996;
wiredfool•7mo ago
SQLite + spatial (and specific metadata tables) is essentially the Geopackage format, which can be considered the modern equivalent of a shapefile.
Which is to say, yes, SQLite has geospatial operations and they’re well supported by the open source gis stack.
juliansimioni•7mo ago
This is super cool. As part of the Pelias geocoder(https://pelias.io/) we use both OSM and SQLite heavily. Currently we've written our own pbf2json tool in Golang (https://github.com/pelias/pbf2json). But creating intermediate databases in SQLite could enable more powerful manipulation of OSM data before we eventually import it.
tjridesbikes•7mo ago
This is AWESOME! I'm doing some volunteer work to make a map of cycling routes in my city, and using OSM data to annotate features. Having a SQLite db of all the Way tags would make my work a lot easier! Thanks!
milliams•7mo ago
fros1y•7mo ago
0cf8612b2e1e•7mo ago
https://motherduck.com/blog/getting-started-gis-duckdb/
Scaevolus•7mo ago
PostGIS similarly provides an R*Tree index mode, as well as a heap of functions for doing GIS calculations directly. To do that in SQLite, you'd implement and inject custom functions as appropriate.
simonw•7mo ago
There's an option to enable RTree indexes to speed up queries like this one:
wiredfool•7mo ago
Which is to say, yes, SQLite has geospatial operations and they’re well supported by the open source gis stack.