Skip to main content

oex

Open Data Exporter. Country-scale vector data from OpenStreetMap and Overture Maps, exported to GeoPackage, Shapefile, GeoJSON, or KML. Optional HDX publication.

Install

One-line installer (picks uv, pipx, or pip --user, whichever you have):

curl -LsSf https://raw.githubusercontent.com/osgeonepal/oex/main/scripts/install.sh | sh

Or pick directly:

uv tool install oex          # uv
pipx install oex             # pipx
pip install --user oex       # pip

Or run the docker image without installing anything:

docker run --rm -v "$PWD/output:/app/output" \
  ghcr.io/osgeonepal/oex:latest oex-cli osm npl

For docker as a system command:

curl -LsSf https://raw.githubusercontent.com/osgeonepal/oex/main/scripts/install.sh | sh -s -- --docker

That writes /usr/local/bin/oex-cli wrapping the docker image so oex-cli osm npl runs the container.

One liner country export

oex-cli osm npl

Eight categories (Buildings, Roads, Hospitals, Schools, Rivers, Land Use, Transportation Hubs, Settlements) for Nepal as gpkg + shp zips in ./output/. Replace npl with any ISO3. Use oex-cli overture <iso3> for Overture Maps instead.

Two ways to customise

# Curated schema from configs/examples/ in this repo (HOT-style HDX export, Overture package)
oex-cli osm --config configs/examples/hot-schema.yaml --iso3 NPL

# Your own categories
oex-cli osm --config ./my-stuff.yaml

See Get started for the install matrix and three flows in detail, Custom categories for the schema, and HDX publication for pushing to HDX.

Features

  • 8 default categories: Buildings, Roads, Hospitals, Schools, Rivers, Land Use, Transportation Hubs, Settlements.
  • 12-layer HOT-style HDX schema mirroring hotosm_<iso3>_* exports.
  • 15-dataset Overture data package (one per theme/feature type).
  • Output formats: gpkg, shp, geojson, kml. Default is [gpkg, shp].
  • Administrative pcode tagging: each feature gets adm0-adm4 pcode and name columns from fieldmaps.io humanitarian boundaries.
  • Name transliteration to Latin script (name_latin) via unidecode, with name_en preferred when present.
  • ISO3 language columns (name_hi, name_ar, name_ne, ...) resolved via pycountry + babel.
  • Per-category export report: feature count, bbox, geometry types, temporal range, null %, distinct counts, and top values per column.
  • Brazil HOT 12-category run: ~22 M features in ~63 min, peak ~5.7 GB RAM.

Develop from source

git clone https://github.com/osgeonepal/oex
cd oex
just setup
just test
just osm nepal

Stack

Concern Tool
Package manager uv
Build backend uv_build
Linter + formatter ruff
Type checker ty
Tests pytest + pytest-cov
Task runner just
Query engine DuckDB + spatial extension
OSM parser QuackOSM
Overture access DuckDB httpfs over s3://overturemaps-us-west-2
Boundaries (default) geoBoundaries gbOpen ADM0
Pcode boundaries fieldmaps.io humanitarian admin boundaries
Pcode index H3 hexagonal cell index at resolution 7

License

GPL-3.0-only. See LICENSE.

Metadata

Release files for oex 0.4.18

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for oex 0.4.18
File Size Uploaded Provenance Actions
oex-0.4.18.tar.gz 218.4 kB Without provenance Details for oex-0.4.18.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for oex 0.4.18
File Interpreter ABI Platform Actions
oex-0.4.18-py3-none-any.whl Python 3 none any Details for oex-0.4.18-py3-none-any.whl

Total release size: 362.9 kB

Release files / oex-0.4.18.tar.gz

Download URL oex-0.4.18.tar.gz
Size 218.4 kB
Tags Source
SHA-256 checksum
How to use checksums
a29319582b6ac261ef7cea238430bacff7a7e2b05eff6deffe5ec21830b9981b
BLAKE2b-256 checksum
How to use checksums
55feca14e2eaf904bb89628251527314ba6804e2117ab9519679f0feb550b150
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.3 {"installer":{"name":"uv","version":"0.13.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / oex-0.4.18-py3-none-any.whl

Download URL oex-0.4.18-py3-none-any.whl
Size 144.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7debdd6e5d02a6b5c3779497ce370b876528b9ca912bbba77b250f80e9e3e96a
BLAKE2b-256 checksum
How to use checksums
0daadeec089f9bcb5b59c97462e5c44efa53808b89c04a50f98755f72a37b9b2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.3 {"installer":{"name":"uv","version":"0.13.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Security for oex 0.4.18

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page