Skip to content
OpenMapTiles Vector Tile Schema Implementation
PLpgSQL Shell Makefile Python SQLPL TSQL
Branch: master
Clone or download

Latest commit

nyurik New generate-dc-config target, rm QUICKSTART_MIN/MAX_ZOOM (#915)
* Set `MAX_ZOOM` to 7 by default.
* Remove `QUICKSTART_MIN/MAX_ZOOM` - unneeded complexity with two env vars. We can just use `MIN_ZOOM` and `MAX_ZOOM`. See also #261
* Generate dc-config yaml file with a new `make generate-dc-config` step. It will compute BBOX based on the downloaded data file. This step is not needed for planet generation.
* Generate Imposm replication file only when `DIFF_MODE` is `true`. Not needed otherwise. If the data source does not support it, it will throw an error.
Latest commit 1a9f613 Jun 4, 2020


Type Name Latest commit message Commit time
Failed to load latest commit information.
.github New generate-dc-config target, rm QUICKSTART_MIN/MAX_ZOOM (#915) Jun 4, 2020
layers Add "shop=car_parts" (#874) May 27, 2020
qa Removed TOOLS_VERSION, rewritten commands to use only docker-compose … Dec 16, 2019
.env New generate-dc-config target, rm QUICKSTART_MIN/MAX_ZOOM (#915) Jun 4, 2020
.env-postgres Upgrade to tools v5 - rm import-osm, new downloader... (#785) May 5, 2020
.gitignore Use tools v4 with on-the-fly boundary generation (#750) Mar 6, 2020 fix formatting Feb 6, 2019 Use one pass docs image generation (#751) Jan 23, 2020 Create Jan 7, 2017
Makefile New generate-dc-config target, rm QUICKSTART_MIN/MAX_ZOOM (#915) Jun 4, 2020 New generate-dc-config target, rm QUICKSTART_MIN/MAX_ZOOM (#915) Jun 4, 2020 New generate-dc-config target, rm QUICKSTART_MIN/MAX_ZOOM (#915) Jun 4, 2020 Upgrade to tools v5 - rm import-osm, new downloader... (#785) May 5, 2020
docker-compose.yml Rework download area support (#908) Jun 3, 2020
openmaptiles.yaml Use v4.1, move import-wikidata before import-sql (#805) Apr 9, 2020 New generate-dc-config target, rm QUICKSTART_MIN/MAX_ZOOM (#915) Jun 4, 2020

OpenMapTiles Build Status

OpenMapTiles is an extensible and open tile schema based on the OpenStreetMap. This project is used to generate vector tiles for online zoomable maps. OpenMapTiles is about creating a beautiful basemaps with general layers containing topographic information. More information and

We encourage you to collaborate, reuse and adapt existing layers, or add your own layers. You may use our approach for your own vector tile project. Feel free to fork the repo and experiment. The repository is built on top of the openmaptiles/openmaptiles-tools to simplify vector tile creation.

Please keep in mind that OpenMapTiles schema should display general topographic content. If creating a new layer or expanding an existing layer with a specific theme, please create a fork and invite other community members to cooperate on your topic. OpenMapTiles schema is used in many projects all over the world and the size of the final vector tiles needs to be considered in any update.


You can start from several GL styles supporting the OpenMapTiles vector schema.

🔗 Learn how to create Mapbox GL styles with Maputnik and OpenMapTiles.

We also ported over our favorite old raster styles (TM2).

🔗 Learn how to create TM2 styles with Mapbox Studio Classic and OpenMapTiles.


OpenMapTiles consists out of a collection of documented and self contained layers you can modify and adapt. Together the layers make up the OpenMapTiles tileset.

🔗 Study the vector tile schema


To work on OpenMapTiles you need Docker.


Build the tileset.

git clone
cd openmaptiles
# Build the imposm mapping, the tm2source project and collect all SQL scripts

You can execute the following manual steps (for better understanding) or use the provided script to automatically download and import given area. If area is not given, albania will be imported.

./ <area>

Prepare the Database

Now start up the database container.

make start-db

Import external data from OpenStreetMapData, Natural Earth and OpenStreetMap Lake Labels.

make import-data

Download OpenStreetMap data extracts from any source like Geofabrik, and store the PBF file in the ./data directory. To use a specific download source, use download-geofabrik, download-bbbike, or download-osmfr, or use download to make it auto-pick the area. You can use area=planet for the entire OSM dataset (very large). Note that if you have more than one data/*.osm.pbf file, every make command will always require area=... parameter (or you can just export area=... first).

make download area=albania

Import OpenStreetMap data with the mapping rules from build/mapping.yaml (which has been created by make). Run after any change in layers definition. Also create borders table using extra processing with osmborder tool.

make import-osm
make import-borders

Import labels from Wikidata. If an OSM feature has Key:wikidata, OpenMapTiles check corresponding item in Wikidata and use its labels for languages listed in openmaptiles.yaml. So the generated vector tiles includes multi-languages in name field.

This step uses Wikidata Query Service to download just the Wikidata IDs that already exist in the database.

make import-wikidata

Work on Layers

Each time you modify layer SQL code run make and make import-sql.

make clean
make import-sql

Now you are ready to generate the vector tiles. By default, ./.env specifies the entire planet BBOX for zooms 0-7, but running generate-dc-config will analyze the data file and set the BBOX param to limit tile generation. It will also modify MIN_ZOOM and MAX_ZOOM values based on the .env, but can be changed.

make generate-dc-config  # compute data bbox -- not needed for the whole planet
make generate-tiles      # generate tiles


All code in this repository is under the BSD license and the cartography decisions encoded in the schema and SQL are licensed under CC-BY.

Products or services using maps derived from OpenMapTiles schema need to visibly credit "" or reference "OpenMapTiles" with a link to Exceptions to attribution requirement can be granted on request.

For a browsable electronic map based on OpenMapTiles and OpenStreetMap data, the credit should appear in the corner of the map. For example:

© OpenMapTiles © OpenStreetMap contributors

For printed and static maps a similar attribution should be made in a textual description near the image, in the same fashion as if you cite a photograph.

You can’t perform that action at this time.