The vector tile schema describes how the vector data is organized into different thematic layers and which attribute and values each layer contains. This is useful for writing a map style and allows for alternative implementations of a schema.

The OpenMapTiles schema is open (CC-BY) and you are free to use, extend or build upon the existing implementation (BSD license). Please reference OpenMapTiles if you build upon the schema.

The vector tile schema has been developed by Klokan Technologies GmbH and was initially modelled after the cartography of the Carto Basemap Positron. The vector tile schema has been refined and improved in cooperation with the Wikimedia Foundation and is heavily influenced by the many years Paul Norman's experience of creating maps from OpenStreetMap.

Definition of layers:

aeroway

View on GitHub

Aeroway polygons based of OpenStreetMap aeroways. Airport buildings are contained in the building layer but all other airport related polygons can be found in the aeroway layer.

Fields

class

The original value of the aeroway tag.

Possible values:

  • aerodrome
  • heliport
  • runway
  • helipad
  • taxiway
  • apron

boundary

View on GitHub

Contains administrative boundaries as linestrings (no maritime boundaries yet) as linestrings. Until z7 Natural Earth data is used after which OSM boundaries (boundary=administrative) are present from z8 to z14. OSM data contains all admin_level but for most styles it makes sense to just style admin_level=2 and admin_level=4.

Fields

admin_level

OSM admin_level indicating the level of importance of this boundary. The admin_level corresponds to the lowest admin_level the line participates in. At low zoom levels the Natural Earth boundaries are mapped to the equivalent admin levels.

disputed

Mark with 1 if the border is disputed.

Possible values:

  • 0
  • 1

maritime

Mark with 1 if it is a maritime border.

Possible values:

  • 0
  • 1

building

View on GitHub

All OSM Buildings. All building tags are imported (building=*). The buildings are not yet ready for 3D rendering support and any help to improve this is welcomed.

Fields

render_min_height

An approximated height from levels and height of the bottom of the building or building:part after the method of Paul Norman in OSM Clear. For future 3D rendering of buildings.

render_height

An approximated height from levels and height of the building or building:part after the method of Paul Norman in OSM Clear. For future 3D rendering of buildings.

housenumber

View on GitHub

Everything in OpenStreetMap which contains a addr:housenumber tag useful for labelling housenumbers on a map. This adds significant size to z14. For buildings the centroid of the building is used as housenumber.

Fields

housenumber

Value of the addr:housenumber tag.

landcover

View on GitHub

Landcover is used to describe the physical material at the surface of the earth. At lower zoom levels this is from Natural Earth data for glaciers and ice shelves and at higher zoom levels the landcover is implied by OSM tags. The most common use case for this layer is to style wood (class=wood) and grass (class=grass) areas.

Fields

class

Use the class to assign natural colors for landcover.

Possible values:

  • farmland
  • ice
  • wood
  • grass
  • wetland

subclass

Use subclass to do more precise styling. Original value of either the natural, landuse, leisure, or wetland tag.

Possible values:

  • allotments
  • farm
  • farmland
  • orchard
  • plant_nursery
  • vineyard
  • grass
  • grassland
  • meadow
  • forest
  • village_green
  • recreation_ground
  • park
  • wetland
  • grassland
  • bog
  • swamp
  • wet_meadow
  • marsh
  • reedbed
  • saltern
  • tidalflat
  • saltmarsh
  • mangrove

landuse

View on GitHub

Landuse is used to describe use of land by humans. At lower zoom levels this is from Natural Earth data for residential (urban) areas and at higher zoom levels mostly OSM landuse tags.

Fields

class

Use the class to assign special colors to areas. Original value of either the amenity, landuse, or leisure tag.

Possible values:

  • school
  • university
  • kindergarten
  • college
  • library
  • hospital
  • railway
  • cemetery
  • military
  • residential
  • commercial
  • industrial
  • retail
  • stadium

mountain_peak

View on GitHub

Natural peaks

Fields

name_de

German name name:de if available, otherwise name or name:en.

name

The OSM name value of the peak.

ele_ft

Elevation (ele) in feets.

name_en

English name name:en if available, otherwise name.

rank

Rank of the peak within one tile (starting at 1 that is the most important peak).

ele

Elevation (ele) in meters.

place

View on GitHub

The place layer consists out of countries, states and cities. Apart from the roads this is also one of the more important layers to create a beautiful map. We suggest you use different font styles and sizes to create a text hierarchy.

Fields

name_de

German name name:de if available, otherwise name or name:en.

name

The OSM name value of the POI.

capital

The capital field marks the admin_level of the boundary the place is a capital of.

Possible values:

  • 2
  • 4

name_en

English name name:en if available, otherwise name.

class

Original value of the place tag. Distinguish between continents, countries, states and places like settlements or smaller entities. Use class to separately style the different places and build a text hierarchy according to their importance.

Possible values:

  • continent
  • country
  • state
  • city
  • town
  • village
  • hamlet
  • suburb
  • neighbourhood
  • isolated_dwelling

rank

Countries, states and the most important cities all have a rank to boost their importance on the map. The rank field for counries and states ranges from 1 to 6 while the rank field for cities ranges from 1 to 10 for the most important cities and continues from 10 serially based on the local importance of the city (derived from population and city class). You can use the rank to limit density of labels or improve the text hierarchy. The rank value is a combination of the Natural Earth scalerank, labelrank and datarank values for countries and states and for cities consists out of a shifted Natural Earth scalerank combined with a local rank within a grid for cities that do not have a Natural Earth scalerank.

poi

View on GitHub

Points of interests containing a of a variety of OpenStreetMap tags. Mostly contains amenities, sport, shop and tourist POIs.

Fields

name_de

German name name:de if available, otherwise name or name:en.

name

The OSM name value of the POI.

name_en

English name name:en if available, otherwise name.

class

More general classes of POIs. If there is no more general class for the subclass this field will contain the same value as subclass. But for example for schools you only need to style the class school to filter the subclasses school and kindergarten. Or use the class shop to style all shops.

rank

The POIs are ranked ascending according to their importance within a grid. The rank value shows the local relative importance of a POI within it’s cell in the grid. This can be used to reduce label density at z14. Since all POIs already need to be contained at z14 you can use less than rank=10 epxression to limit POIs. At some point like z17 you can show all POIs.

subclass

Original value of either the amenity, leisure, landuse, sport, tourism or shop tag. Use this to do more precise styling.

transportation

View on GitHub

transportation contains roads and railways. This layer is directly derived from the OSM road hierarchy. At lower zoom levels major highways from Natural Earth are used. It contains all roads from motorways to primary, secondary and tertiary roads to residential roads and foot paths. Styling the roads is the most essential part of the map. The transportation layer also contains polygons for features like plazas.

Fields

brunnel

Mark whether way is a tunnel or bridge.

Possible values:

  • bridge
  • tunnel
  • ford

ramp

Mark with 1 whether way is a ramp (link or steps) or not with 0.

Possible values:

  • 0
  • 1

class

Distinguish between more and less important roads or railways. Class is derived from the value of the highway or railway tag.

Possible values:

  • motorway
  • trunk
  • primary
  • secondary
  • tertiary
  • minor
  • service
  • track
  • path
  • raceway
  • rail
  • transit

service

Original value of the service tag.

Possible values:

  • spur
  • yard
  • siding
  • crossover
  • driveway
  • alley
  • parking_aisle

oneway

Mark with 1 whether way is a oneway (in the direction of the way) or not with 0.

Possible values:

  • 0
  • 1

transportation_name

View on GitHub

This is the layer for labelling the highways. Only highways that are named name=* and are long enough to place text upon appear. The OSM roads are stitched together if they contain the same name to have better label placement than having many small linestrings. For motorways you should use the ref field to label them while for other roads you should use name.

Fields

name_de

German name name:de if available, otherwise name or name:en.

name

The OSM name value of the highway.

ref

The OSM ref tag of the motorway or its network.

name_en

English name name:en if available, otherwise name.

ref_length

Length of the ref field. Useful for having a shield icon as background for labeling motorways.

class

Distinguish between more and less important roads.

Possible values:

  • motorway
  • trunk
  • primary
  • secondary
  • tertiary
  • minor
  • service
  • track
  • path
  • raceway
  • rail
  • transit

network

The network type derived mainly from network tag of the road. See more info about us-*, ca-transcanada, or gb-*.

Possible values:

  • us-interstate
  • us-highway
  • us-state
  • ca-transcanada
  • gb-motorway
  • gb-trunk
  • road (default)

water

View on GitHub

Water polygons representing oceans and lakes. Covered watered areas are excluded (covered=yes). On low zoom levels all water originates from Natural Earth. To get a more correct display of the south pole you should also style the covering ice shelves over the water. On higher zoom levels water polygons from OpenStreetMapData are used. The polygons are split into many smaller polygons to improve rendering performance. This however can lead to less rendering options in clients since these boundaries show up. So you might not be able to use border styling for ocean water features.

Fields

class

All water polygons from OpenStreetMapData have the class ocean. Water bodies are classified as lake or river for water bodies with the waterway tag.

Possible values:

  • ocean
  • lake
  • river

water_name

View on GitHub

Lake center lines for labelling lake bodies. This is based of the osm-lakelines project which derives nice centerlines from OSM water bodies. Only the most important lakes contain labels.

Fields

name_en

English name name:en if available, otherwise name.

name

The OSM name value of the water body.

name_de

German name name:de if available, otherwise name or name:en.

class

At the moment only lake since no ocean parts are labelled. Reserved for future use.

Possible values:

  • lake

waterway

View on GitHub

OpenStreetMap waterways for higher zoom levels and Natural Earth rivers and lake centerlines for low zoom levels. Linestrings without a name or which are too short are filtered out at low zoom levels. Waterways do no not have a subclass field.

Fields

name_en

English name name:en if available, otherwise name.

name

The OSM name value of the waterway. The name field may be empty for NaturalEarth data or at lower zoom levels.

name_de

German name name:de if available, otherwise name or name:en.

class

The original value of the waterway tag.

Possible values:

  • stream
  • river
  • canal
  • drain
  • ditch
K

OpenMapTiles.org is an open-source project from Klokan Technologies GmbH and OSM community
Share this page on