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 openmaptiles.org and maptiler.com/data/.
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.
🔗Schema https://openmaptiles.org/schema 🔗Docs https://openmaptiles.org/docs 🔗Data for download: https://www.maptiler.com/data/ 🔗Hosting https://www.maptiler.com/cloud/ 🔗Create own layer https://github.com/openmaptiles/openmaptiles-skiing 🔗Discuss at the #openmaptiles channel at OSM Slack
You can start from several GL styles supporting the OpenMapTiles vector schema.
We also ported over our favorite old raster styles (TM2).
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.
To work on OpenMapTiles you need Docker.
Microsoft Windows Subsystem for Linux (WSL)
Please use Linux
/home/user/ directory, not Windows e.g.
Build the tileset.
git clone https://github.com/openmaptiles/openmaptiles.git cd openmaptiles # Build the imposm mapping, the tm2source project and collect all SQL scripts make
You can execute the following manual steps (for better understanding)
or use the provided
quickstart.sh script to automatically download and import given area. If area is not given, albania will be imported.
Prepare the Database
Now start up the database container.
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-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.
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.
Work on Layers
Each time you modify a layer's
mapping.yaml file or add new OSM tags, run
make import-osm to recreate tables (potentially with additional data) in PostgreSQL. With the new data, there can be new Wikidata records also.
make clean make make import-osm make import-wikidata
Each time you modify layer SQL code run
make clean make 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-bbox-file will analyze the data file and set the
BBOX param to limit tile generation.
make generate-bbox-file # compute data bbox -- not needed for the whole planet make generate-tiles-pg # generate tiles
Workflow to generate tiles
If you go from top to bottom you can be sure that it will generate a .mbtiles file out of a .osm.pbf file
make clean # clean / remove existing build files make # generate build files make start-db # start up the database container. make import-data # Import external data from OpenStreetMapData, Natural Earth and OpenStreetMap Lake Labels. make download area=albania # download albania .osm.pbf file -- can be skipped if a .osm.pbf file already existing make import-osm # import data into postgres make import-wikidata # import Wikidata make import-sql # create / import sql functions make generate-bbox-file # compute data bbox -- not needed for the whole planet make generate-tiles-pg # generate tiles
Instead of calling
make download area=albania you can add a .osm.pbf file in the
Products or services using maps derived from OpenMapTiles schema need to visibly credit "OpenMapTiles.org" or reference "OpenMapTiles" with a link to https://openmaptiles.org/. 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:
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.