Hyper-optimized reverse geocoding API

(github.com)

48 points | by tananaev 5 hours ago ago

14 comments

  • tananaev 5 hours ago ago

    Self-hosted reverse geocoder with sub-millisecond query latency. C++ builder parses OSM PBF files into a compact binary index using S2 geometry cells. Rust server memory-maps the index and serves a Nominatim-compatible API. Docker support with automatic HTTPS.

    • gniv 4 hours ago ago

      How long does it take to build the whole index?

      • tananaev an hour ago ago

        It took about 8-10 hours for me on a 192GB Hetzner cloud machine. The resulting index was just 18GB, so once the index is created it's really efficient and you can easily run it on a small VM.

      • KomoD 3 hours ago ago

        I tried the "Australia and Oceania" pbf which is really small and it took ~15min

  • KomoD 4 hours ago ago

    > docker run -e PBF_URLS="https://download.geofabrik.de/planet-latest.osm.pbf"

    Geofabrik doesn't offer a "planet" pbf.

    • tananaev 43 minutes ago ago

      Good catch, thanks. Updated the readme. The planet can be downloaded directly from OSM.

  • supriyo-biswas 4 hours ago ago

    I don’t get the point in writing another geocoder when such programs already exist, e.g: https://pelias.io/

    • tananaev an hour ago ago

      Most or all existing solutions are universal (not just reverse geocoding) and rely on database. The purpose of this project is to make it super fast to do one thing. The result is 100x - 1000x speed of Pelias and other universal tools like that.

    • ranger_danger 2 hours ago ago

      I don't get the point in making other types of food when pizza already exists.

  • macrolet 4 hours ago ago

    Great. But look at the query feature of OSM. Try it. At higher zoom levels like 15, querying for features at the same coordinates as your example reveals nearby features. Like hotel buildings, post offices, recycling points, etc. The nominatin format is not enough. What is more, an extended feature set could be used together with an LLM. I am very interested in that, so, feel free to reach out to me if you want to discuss more.

  • majorchord 4 hours ago ago

    I just want a regular (non-reverse) geocoding system that's actually easy to self-host.

    Windows CE apps were doing this 20 years ago with single file databases of only a few GBs, why do I need a 500GB+ postgres monster to do the same thing today?

    • felixguendling 3 hours ago ago

      Have you tried MOTIS with only the geocoding enabled? This should be 1-2 orders of magnitude smaller.

  • 4 hours ago ago
    [deleted]
  • Heer_J 4 hours ago ago

    [dead]