Pbf2sqlite: Reading OpenStreetMap into a SQLite Database

62 points by amadeuspagel 5 days ago | 9 comments
  • juliansimioni 2 days 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 2 days 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 5 days ago
        Does SQLite have GIS capabilities (like PostGIS provides for Postgres), or is this storing the data as traditional database primitives?
        • fros1y 5 days ago
          • Scaevolus 4 days ago
            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.

            • simonw 2 days ago
              From the schema it looks like this is storing nodes and lines: https://github.com/osmzoso/pbf2sqlite/blob/main/doc/pbf2sqli...

              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;
              • 0cf8612b2e1e 4 days ago
                DuckDB has put some effort into GIS, so if SQLite does not immediately fit the bill, I would go there.

                https://motherduck.com/blog/getting-started-gis-duckdb/

                • wiredfool 2 days 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.

                • teruakohatu 2 days ago
                  Could this be used for reverse geocoding?