feat(data): POI build pipeline + chunked binary (PR 2 of 5) - #4
Merged
Conversation
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Builds tiles/pois.bin from the cached OSM PBF: 79,863 POIs across 10 categories, each pre-snapped to a walk-graph node in the LCC so the runtime search never returns an unrouteable result. Chunked to tiles/pois.part-* (50 MB cap; only one chunk needed at this size). Dual-import in pipelines/pois.py: package-style for pytest, sibling- style for direct script invocation matching walk_graph.py's pattern. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Second PR in the richer-geocoding rollout. Extracts ~80k categorized POIs from the same OSM PBF the walking graph already uses, pre-snaps each to a walk-graph node in the largest connected component (so future routing can't silently fail), and ships the result as a chunked binary.
No runtime code touched — this PR is data infrastructure. PR 3 will wire the POI binary into the search bar.
What's in the binary
walk_nodeindex (correctness win — fixes the class of bug where a POI lands inside an OSM-island park path and becomes unrouteable)tiles/pois.part-aa(well under the 50 MB / GitHub 100 MB cap)New files
pipelines/walk_graph_reader.pywalk_graph.bin(NWLK format) for offline tools; LCC + local snappipelines/poi_emit.pypipelines/pois.pyscripts/build-pois.shtiles/pois.part-*scripts/assemble-pois.shtiles/pois.bintiles/pois.part-aapipelines/tests/test_*.pyCI
pages.ymlnow assemblespois.binfrom chunks alongside the walk-graphpr-checks.ymlgains apipeline-testsjob that runsuv run pytestagainst the assembled walk-graphTest plan
Subsequent PRs
🤖 Generated with Claude Code