Python matchers for conflating Overture Maps data.
This repository implements matching for Overture's places, divisions, and addresses themes. Matching is about ID assignment — incoming records from data providers are matched against a persistent baseline. If a record matches, it takes the baseline record's GERS ID. If nothing matches, it gets a new one.
%%{init: {"theme": "dark", "flowchart": {"padding": 14}, "themeVariables": {"fontSize": "14px", "fontFamily": "Montserrat, Arial, sans-serif", "mainBkg": "#001A39", "nodeBorder": "#0EC1BD", "lineColor": "#4051CC", "primaryTextColor": "#FFFFFF", "edgeLabelBackground": "#001A39"}}}%%
flowchart LR
classDef default rx:8,ry:8,stroke-width:0.75px
C[Incoming records] --> M[Matcher]
B[Overture baseline] --> M
M -->|match| E[Baseline GERS ID]
M -->|no match| N[New GERS ID]
Each matcher runs as a PySpark job on AWS Glue 5 (Spark 3.5, Python 3.11). This repo is a port of Overture's Scala matchers, and the package is pre-alpha while the port is in progress. The plan and progress are tracked in OvertureMaps/matchers#1.
| Package | Description | PyPI |
|---|---|---|
| overture_matchers | The places, divisions and addresses matchers. |
Each directory under packages/ with a pyproject.toml and a tests/ directory is one package, versioned and published to PyPI on its own.
| Path | What it holds |
|---|---|
| python-migration.md | The design for the port: the Scala system in brief, the target structure, library swaps and sequencing. |
| parity/ | A harness that compares two matcher runs on the same input and prints where they differ. |
Merging to main releases any package whose changes warrant a version bump. The PR title's Conventional Commits type sets the bump (feat!: major, feat: minor, any other type patch), and the release is tagged <package_dir>-v<version>. See PACKAGE_VERSIONING.md for the flow and the one-time PyPI setup a new package needs.
See CONTRIBUTING.md for development setup, tests and lint.