f947cbffc3
This PR adds support for several features in the `natural` key, including `saddle`, `ridge`, `arete`, and `cliff`. These features all currently render in openstreetmap-carto, so adding these features would advance OpenMapTiles towards its goal of parity with the standard renderer, as indicated in https://github.com/openstreetmap/operations/issues/565#issuecomment-907303115. This PR also adds the features requested in #274, with the exception of valleys, which I've left out of this PR because there are different complexities to mapping valleys that should be addressed as a separate (future) PR. ### Examples of mountain features in paper maps These features are regularly found in American-style maps and thus is of interest to the openstreetmap-americana map style. Below are examples of these mountain-related features found in general purpose maps: <img src="https://user-images.githubusercontent.com/3254090/131270340-af80c7bf-9416-40a3-9b64-56418abb2aef.png" width=400/> <img src="https://user-images.githubusercontent.com/3254090/131270375-b9eb2095-7708-443d-b7bc-22bf8adab721.png" width=400/> <img src="https://user-images.githubusercontent.com/3254090/131270423-64447ad3-d90a-4615-82e1-91175a8f8a6b.png" width=400/> <img src="https://user-images.githubusercontent.com/3254090/131270506-2248db9f-ded5-443f-82ed-b0e8d4d12a70.png" width=400/> ### Approach This PR extends the existing `mountain_peak` layer by adding other mountain features. We may want to consider renaming this layer in version 4.0 to be more inclusive of other mountain features including the potential future addition of valleys. However, the features added in this PR are associated with mountains and so their inclusion in this layer is the most appropriate location. A new `osm_mountain_linestring` mapping maps the new linear mountain features, with similar ranking logic as is used for the existing `peak`/`volcano` features. Additionally, `natural=saddle` is added to the `osm_peak_point` mapping and ranked using the formula for peaks. Since saddles will have lower elevations than peaks, important saddles will be preempted by important peaks. The new linestring features are rendered only at zoom 13-14, in order to match the zoom at which they appear in openstreetmap-carto. However, it may be appropriate in a future PR to extend the rendering of these features as generalized linestrings at lower zooms. ### Test Renderings Below is a test rendering showing aretes and peaks in Austria, just north of the Swiss border, followed by a screen shot of the [same location](https://www.openstreetmap.org/#map=14/46.8682/10.0863) in openstreetmap-carto: **OpenMapTiles, zoom 14** <img src="https://user-images.githubusercontent.com/3254090/131271258-5cd90bdb-cac2-41d8-887f-b4bf6be83673.png" width=400/> **openstreetmap-carto, zoom r14/v13:** <img src="https://user-images.githubusercontent.com/3254090/131271332-32d5bcfc-41c6-4625-829c-df063b7af523.png" width=400/> |
||
---|---|---|
.github | ||
layers | ||
.env | ||
.env-postgres | ||
.gitignore | ||
BENCHMARKING.md | ||
CONTRIBUTING.md | ||
LICENSE.md | ||
Makefile | ||
QUICKSTART.md | ||
README.md | ||
UPDATE.md | ||
docker-compose-MINGW64.yml | ||
docker-compose.yml | ||
openmaptiles.yaml | ||
quickstart.sh |
README.md
OpenMapTiles
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
Styles
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.
Schema
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
- aeroway
- boundary
- building
- housenumber
- landcover
- landuse
- mountain_peak
- park
- place
- poi
- transportation
- transportation_name
- water
- water_name
- waterway
Develop
To work on OpenMapTiles you need Docker.
- Install Docker. Minimum version is 1.12.3+.
- Install Docker Compose. Minimum version is 1.7.1+.
Microsoft Windows Subsystem for Linux (WSL)
Please use Linux /home/user/
directory, not Windows e.g. /mnt/c
directory.
Build
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.
./quickstart.sh <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 a layer's mapping.yaml
file or add new OSM tags, run make
and 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
and make import-sql
.
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
License
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 "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:
© 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.