Skip to content

henryspatialanalysis/OpenPOIs

Repository files navigation

OpenPOIs

A unified, confidence-scored open dataset of U.S. points of interest — covering the 50 states, DC, and the 5 inhabited U.S. territories (Puerto Rico, US Virgin Islands, Guam, Northern Mariana Islands, American Samoa) — built from OpenStreetMap and Overture Maps.

OpenPOIs interactive map

License: MIT Data: ODbL Python Site deploy

What is OpenPOIs?

OpenPOIs conflates points of interest from OpenStreetMap and Overture Maps into a single unified dataset, then attaches a per-POI confidence score estimating the probability that the place still exists. Confidence comes from a Bayesian turnover model fit on OSM tag-edit history. The published dataset covers the United States and its 5 inhabited territories, and is refreshed monthly, following the Overture Maps monthly release cycle.

This repository contains the Python library used to produce the data, the end-to-end pipelines that download and conflate sources, and the Vue front-end that powers the live map.

Quickstart — read the data

No install required. The dataset is hosted anonymously on Source Cooperative; read it straight from S3:

import pyarrow.dataset as ds
import pyarrow.fs as pafs

BASE = "us-west-2.opendata.source.coop/henryspatialanalysis/openpois"
VERSION = "latest"   # or pin a dated folder, e.g. "2026-04-23-v0"

fs = pafs.S3FileSystem(anonymous = True, region = "us-west-2")
pois = ds.dataset(
    f"{BASE}/{VERSION}/conflated-parquet/",
    filesystem = fs,
    format = "parquet",
    partitioning = "hive",
)
print(pois.schema)
print(f"{pois.count_rows():,} POIs")

GeoPandas, DuckDB, and PMTiles examples live in the dataset README on Source Cooperative.

Python package

The full OpenPOIs package API — I/O adapters, the turnover model, conflation primitives — is documented at https://openpois.org/docs/.

Installation

This package can be installed from source:

git clone https://github.com/henryspatialanalysis/openpois.git
cd openpois
make build_env          # conda env from environment.yml
conda activate openpois
make install_package    # pip install -e .

Repository layout

Path Purpose
src/openpois/ Library source: I/O, models, conflation, publishing
scripts/ End-to-end pipelines using config.yaml
site/ Vue 3 + Vite frontend powering openpois.org
docs/ Sphinx documentation source
tests/ Unit tests

Reproduce the dataset yourself

The data is produced by four pipelines under scripts/, each driven by config.yaml:

  1. Snapshot downloads (OSM + Overture)
  2. OSM history download and Bayesian turnover-model fit
  3. Apply model to OSM snapshot to get per-POI confidence
  4. Conflate OSM × Overture, partition, publish to Source Cooperative

Each pipeline and its scripts are documented in the workflows reference at https://openpois.org/docs/workflows.html.

Web map

The interactive map at https://openpois.org is a Vue 3 + Vite app rendering PMTiles archives over MapLibre GL. To run it locally:

make site_dev      # http://localhost:5173, hot reload
make site_build    # production build to site/dist/

The site auto-deploys to GitHub Pages via .github/workflows/deploy-site.yml on every push to main that touches site/, src/, docs/, or scripts/.

Development

pytest               # run the test suite
make lint            # flake8 + pylint
make export_env      # rewrite environment.yml after adding deps

Licensing

OpenPOIs is dual-licensed:

Citation

If you use OpenPOIs in research, please cite:

Henry, N. (2026). OpenPOIs: a unified, confidence-scored dataset of U.S. points of interest. Henry Spatial Analysis. https://openpois.org

A machine-readable citation is provided in CITATION.cff; GitHub renders it as a "Cite this repository" button on the repo home page.

Contact

Bug reports, feature requests, and contributions are welcome via GitHub issues.