Overture + PMTiles
Overture is primarily distributed in the GeoParquet format. While GeoParquet is a compact format, tiles are essential for creating pannable, zoomable slippy maps for display on the web.
- Data is broken into equal-sized square chunks (tiles), to load only the visible data.
- Tiles are arranged in a pyramid by level of detail, enabling zoomed-out overviews.
overture-tiles on GitHub
The overture-tiles GitHub repository contains scripts and programs to generate tilesets from Overture data. These tilesets are designed for an "X-ray" visualization like at explore.overturemaps.org to aid in inspecting geometry and properties. They are not designed to be a production-ready cartographic basemap.
Each Overture theme is stored as a separate PMTiles archive.
The individual tiles contain geometry and tags in the open MVT vector tile format.
Accessing Tiles
Overture Tiles are generated with each release. The current beta distribution of tiles are at this url:
s3://overturemaps-tiles-us-west-2-beta/RELEASE/THEME.pmtiles
Where RELEASE
has the data minor version trimmed, e.g. 2024-08-20
, instead of 2024-08-20.0
.
These public S3 URLs can also be accessed via HTTP:
https://overturemaps-tiles-us-west-2-beta.s3.amazonaws.com/RELEASE/THEME.pmtiles
Viewing Tiles
Local and remote HTTP URLs can be previewed at pmtiles.io.
View 2024-08-20/places.pmtiles on pmtiles.io
Area Extracts
To create a new tileset for only part of the world, use the extract
command of the pmtiles
CLI.
To get all buildings
tiles around Ghent, Belgium:
pmtiles extract https://overturemaps-tiles-us-west-2-beta.s3.amazonaws.com/2024-08-20/buildings.pmtiles ghent.pmtiles --bbox=3.660507,51.004250,3.784790,51.065996
On AWS
The overture-tiles
scripts can be automated with AWS Batch, which generates the largest global tilesets in ~90 minutes using c7gd.16xlarge
Ec2 instances on demand. Costs incurred include on-demand instances and S3 storage + transaction costs.
Prerequisites
- AWS CLI
- AWS Cloud Development Kit (CDK)
npm install -g aws-cdk
- Docker Desktop
Setup
-
Modify
bin/overture-tiles-cdk.ts
, specifying a different S3 bucket name. -
From the
overture-tiles-cdk
repository:
npm run cdk bootstrap
npm run cdk deploy
- Authenticate your Docker client with the provisioned AWS Elastic Container Registry (ECR) in the web console. Use View Push Commands to build the
Dockerfile
in theoverture-tiles
repository and push to ECR:
- Submit jobs from the AWS Batch console.
-
Select from the available Job Definitions. Each Definition is associated with a version and theme from an Overture release.
-
Select the OvertureTilesQueue as the Job queue.
-
Input the Command as a JSON list:
["2024-08-20.0","my-bucket","addresses"]
-
The first item is the release version, including minor version:
2024-08-20.0
-
The second item is the target bucket:
my-bucket
-
The third item is the theme:
addresses
-
-
Once the job is complete, the tileset will be available at
s3://BUCKET_NAME/RELEASE/THEME.pmtiles
, e.g.s3://mybucket/2024-08-20/addresses.pmtiles
On Your Workstation
Requirements
- a Java Runtime Environment, version 22+, to build the
addresses
,base
,buildings
andtransportation
themes, along withplanetiler.jar
from onthegomap/planetiler Releases. - the felt/tippecanoe tool and the DuckDB CLI for other themes.
- the aws CLI for downloading Overture data.
Scripts
-
Copy the Overture Parquet dataset to your local machine using these docs. If you want to only run on a small sample of data, you can use only the first
.parquet
file instead of all in the directory. -
for the
base
,buildings
andtransportation
themes, generate the tileset with java:
# --data indicates where your Overture data is (overture/theme=base/...)
java -cp planetiler.jar profiles/Base.java --data=overture
The above command outputs base.pmtiles
in the data
dir.
- for other themes, run the theme script in
themes/
:
scripts/2024-08-20/places.sh overture places.pmtiles
This reads from Overture data in overture
and writes places.pmtiles
.
Customization
The tilesets accompanying Overture releases are primarily for powering explore.overturemaps.org. For your own application, you may want to:
- Limit or modify the properties of each feature, to reduce the tile sizes.
- Change what features or properties are included at generalized lower zoom levels.
In these examples we'll work with a small area extract of Boston in the boston/
folder, but all tiling methods can scale to the full dataset.
mkdir -p boston/theme=buildings/type=building
mkdir -p boston/theme=places/type=place
overturemaps download --bbox=-71.068,42.353,-71.058,42.363 -f geoparquet --type=building -o boston/theme=buildings/type=building/0.geoparquet
overturemaps download --bbox=-71.068,42.353,-71.058,42.363 -f geoparquet --type=place -o boston/theme=places/type=place/0.geoparquet
Example: Places
The default places.sh
script includes all Overture properties to aid inspection. To slim down the tile sizes, you can remove all the primary name in the @name
field.
Modify places.sh for the release matching your Overture data:
...
json_object(
'id', id,
'@name', json_extract_string(names, '$.primary')
) AS properties,
...
./scripts/2024-07-22/places.sh boston boston_places.pmtiles
Inspect the created boston_places.pmtiles
on pmtiles.io to see the slimmed-down properties:
Example: Buildings
To reduce the size of tiles, the default Buildings script includes all properties only at zoom 13. Your own application may need this data at a lower zoom level.
Modify profile/Buildings.java
to populate all Overture properties on zoom 12 instead of zoom 13:
...
OvertureProfile.addFullTags(source, polygon, 12);
...
java -cp planetiler.jar profiles/Buildings.java --data=boston
Inspect the created data/buildings.pmtiles
on pmtiles.io to see the additional properties on zoom level 12: