Create tilesets from Overture Maps data.
This project provides tools to create vector tilesets in PMTiles format from Overture Maps data using a combination of Planetiler and Tippecanoe. It includes AWS CDK constructs for deploying the necessary infrastructure to generate and host the tilesets.
Note: Currently focused on AWS infrastructure (S3 & Batch), though the core processing runs in Docker containers
The repository is organized into the following main components:
- Infrastructure: AWS CDK constructs to deploy the processing and hosting infrastructure.
- Profiles: Profiles for Planetiler to define how to process Overture Maps data into vector tiles.
- Scripts: Scripts are recipes to run Tippecanoe with specific configurations for generating PMTiles.
The tile generation pipeline follows a three-stage process:
-
Download: Fetches Overture Maps data from the official S3 release (specified via
RELEASEenvironment variable) or a custom S3 source (viaSOURCE_OVERRIDEfor internal testing). When usingRELEASE, optionally supports geographic filtering using bounding boxes (BBOXenvironment variable) for smaller regional extracts. -
Transform: Processes the downloaded data into PMTiles format using theme-specific profiles and scripts (see Profiles and Scripts section below).
-
Upload: Publishes the generated PMTiles to a specified S3 bucket (
OUTPUTenvironment variable).
This pipeline runs on AWS Batch, which provides on-demand, scalable compute resources for processing large geospatial datasets without maintaining dedicated infrastructure. Batch jobs automatically scale based on workload, handle compute provisioning and only incur costs during active tile generation.
The Docker container accepts the following environment variables:
| Variable | Required | Description |
|---|---|---|
RELEASE |
Yes* | Overture Maps release version (e.g., 2025-11-19.0). *Required unless SOURCE_OVERRIDE is set. |
OUTPUT |
Yes | S3 bucket path for uploading generated PMTiles |
THEME |
Yes | Theme to process (base, transportation, buildings, addresses, places, or divisions) |
BBOX |
No | Bounding box for regional extracts (format: minLon,minLat,maxLon,maxLat). Only works with RELEASE. |
SOURCE_OVERRIDE |
No | Custom S3 path for input data (for internal use). Overrides RELEASE if set. |
S3_REGION |
No | S3 region for custom sources (defaults to us-west-2) |
SKIP_UPLOAD |
No | Set to true to skip S3 upload (useful for local testing) |
Profiles and scripts define how Overture Maps data is processed into vector tiles:
- Planetiler profiles: Used for
base,transportation,buildings, andaddressesthemes. See profiles/ for details. - Tippecanoe scripts: Used for
placesanddivisionsthemes. See scripts/ for details.
Currently, these are fixed within the Docker image. There are ideas to support custom profiles and scripts in the future.
The CDK stack creates AWS Batch infrastructure for processing tiles at scale. Configure your S3 bucket and AWS account in overture-tiles-cdk/bin/overture-tiles-cdk.ts, then deploy with standard CDK commands or use the justfile recipes.
For detailed deployment instructions, see the Overture Tiles documentation.
To work with this project locally, you'll need:
- Docker - For running the tile generation container
- AWS CLI - For deployment and S3 operations (optional for local testing)
- Just - Command runner for development tasks (optional but recommended)
You can test the tile generation process locally using Docker. Set the SKIP_UPLOAD environment variable to true to skip the upload step.
Using the justfile (recommended):
just test-local placesOr manually with Docker:
docker build -t overture-tiles:test .
docker run --name overture-test \
-v $(pwd):/data \
-e RELEASE='2025-11-19.0' \
-e OUTPUT='noop' \
-e THEME='places' \
-e BBOX='-122.5247,37.7081,-122.3569,37.8324' \
-e SKIP_UPLOAD='true' \
overture-tiles:test
docker rm overture-testThis project is licensed under the MIT License - see the LICENSE.md for details.