Mapbox Tiling Service

MTS enables you to easily upload and transform your own proprietary geospatial data to then be used in elegant, performant and customizable maps and services within the Mapbox platform.

Cost effective scaling

We save developers money on data processing. MTS integrates custom datasets of any scale into maps faster, cheaper, and with more flexibility and control. This allows developers to focus on app development—not mapping infrastructure.

Parallelized data processing

MTS processes massive sets of data into custom vector tilesets, continuously updating the maps as the data changes. MTS uses a distributed and parallelized processing architecture that is 90% faster than traditional infrastructure.

Designing big data in Studio

Data uploaded using MTS can then be styled in Studio and the maps can be composited with any other vector tilesets. Designers control every aspect of the tileset—from the performance to the visual design—using recipes.

We designed the service to process big data that is constantly changing, and transform it into maps served out to our more than 650 million monthly active users -- supporting the scale of huge customers like Facebook, Snap, the Weather Channel, Tableau, and Shopify. MTS gives developers enterprise-grade data processing scale and reliability without the need to spend time and money building, deploying, and maintaining infrastructure.

Custom maps with big data made easy for developers

MTS provides APIs for developers to create custom maps. It is designed to process massive and complex sets of data into custom vector tilesets and continuously updates maps as the data changes. Instead of making multiple API calls and querying a slow backend database, a map that uses preloaded custom layers connected to vector tilesets is smooth and wicked fast, especially for big datasets with millions of points, lines or polygons.

 {
  "version": 1,
  "layers": {
    "city_labels": {
      "source": 
      "mapbox://tileset-source/{username}/populated-places",
      "minzoom" : 0,
      "maxzoom" : 7,
      "features" : {
        "attributes" : {
          "allowed_output" : 
          ["name_en"]
        }
      },
      "tiles" : {
        "limit" : 
        [["lowest_where_in_distance", true, 64, "SCALERANK"]]
      }
    }
  }
}

Recipes

Recipes are configuration rules that tell MTS how to process data into vector tiles. Recipes provide fine control over vector tile generation, including simplification, zoom level extent, geometry unioning, attribute manipulation, and more. See all the available configuration options in the Recipe reference.

Live Weather Data

Yahoo! Japan uses MTS to create time series visualizations of live weather in Japan that update every 5 minutes. MTS saves their engineers time and money while providing a better experience for their users, letting Yahoo! Japan avoid upkeep on legacy mapping infrastructure and focus resources on improving the core app experience.

Designing in Studio

MTS doesn't just keep your data optimized and fresh -- it also keeps your data beautiful. Tilesets generated using MTS can be styled in Mapbox Studio and composited with any other vector tilesets, leveraging the full visual power and flexibility of the Mapbox platform.

Snap + Scale + Speed

MTS speeds up Snapchat’s data processing from 4 hours to just 15 minutes. Snap uses MTS to power their Places map in Snapmap, letting users discover local businesses and see rich metadata about each venue, like ratings and pictures. To create these tilesets using MTS, simply upload data in line-delimited GeoJSON. Learn more about how line-delimited GeoJSON is used by MTS in the MTS documentation.

Private Data

Maps are locked and set to private by default, giving developers total control over who is looking at  the data. Mapbox never accesses customer created data layers. Our management interface empowers developers to create, revoke, and monitor access control tokens directly. For more information, see our Tokens API documentation. SAML single sign-on is also available for all Mapbox customers, enabling teams with multiple users to collaborate securely.

Regionally redundant and auto-scaling caching network

MTS runs on Mapbox’s global platform, allowing data to be immediately available across multiple regions. This means it is automatically backed by our regionally redundant, auto-scaling caching network, making it seamless to scale, in any geography, with low latency and high throughput. Multiple regions with dynamic routing makes Mapbox’s infrastructure resilient to single-datacenter or single-region events like natural disasters and internet infrastructure outages.

Live Air Quality Alerts

The scope of poor air quality caused by fires on the West Coast is incredibly apparent in the data collected Plume Labs. Tilesets generated using MTS can be used in any map styles and can be composited with any other vector tilesets, read the full documentation.

"MTS helps Plume Labs get people from A to B in the healthiest way possible. Using MTS, we're able to update the entire world's air pollution data in real-time so that our users can avoid pollution hotspots while they walk, run, or cycle through their city."-- Boris Quennehen, Atmospheric Scientist at Plume Labs    

“By migrating all of our minutely updating weather maps to MTS, we were able to save engineering time and money while providing a better experience for our users. We’re excited to migrate more of our maps to MTS.”

Soichi Takahashi, Unit Manager at Yahoo! Japan

"MTS helps Plume Labs get people from A to B in the healthiest way possible. Using MTS, we're able to update the entire world's air pollution data in real-time so that our users can avoid pollution hotspots while they walk, run, or cycle through their city."

Boris Quennehen, Atmospheric Scientist at Plume Labs

"MTS allows AllTrails to quickly upload and process thousands of custom trails for our users. It makes it extremely easy to provide our customers with up-to-date information of highly detailed trail maps for their hiking, biking, and camping adventures around the world!"

James Graham, Head Of Engineering at AllTrails

Frequently Asked Questions

General

What is Mapbox Tiling Service (MTS)?

Mapbox Tiling Service (MTS) is a service for creating custom vector tilesets by providing source data with transformation rules called recipes.  The resulting tiles are hosted on Mapbox infrastructure and integrated into applications using our APIs and SDKs.  MTS runs on Mapbox’s global platform, allowing data to be immediately available across multiple regions around the world and automatically backed by our regionally redundant, auto-scaling caching network, making it seamless to support any scale, in any geography, with low latency and high throughput.

MTS enables precise control over how to transform geospatial data into tiles, represented, and ultimately made available for styling on a map. Recipes provide options for generating vector tiles; such as degree of simplification, zoom level extent, geometry unioning, attribute manipulation, etc. Tilesets generated using MTS can then be styled in Studio and composited with any other vector tilesets. 

MTS allows developers to focus on app development, not mapping infrastructure -- making it cost effective and faster to build sophisticated mapping applications with proprietary custom data and not having to worry about scaling a data processing pipeline or the costs of map hosting infrastructure. 

What are Mapbox vector tiles?

Vector tiles are a lightweight data format for storing geospatial vector data, such as points, lines, and polygons. Mapbox vector tiles are designed to visualize a large amount of data on a map in a scalable and cost effective way. Mapbox vector tiles can turn gigabytes of raw geospatial data into mere kilobytes, enabling complex data visualizations on mobile devices or web browsers. Applications using Mapbox Vector Tiles deliver map content with a data and memory footprint in the kilobytes to megabytes range, similar to common web assets.

What are the primary features of MTS?

  • tileset recipes: Recipes provide options for generating vector tiles such as degree of simplification, zoom level extent, geometry unioning, attribute manipulation, etc, see the detail about all the available configuration options in the Recipe reference.
  • user-specified feature IDs: a recipe  sets IDs for each feature in the tileset to enable client-side animations and interactions of features. For example, Mapbox GL’s setFeatureState functionality can update the state of each of the features (such as their color or size) at runtime based on each feature’s ID.
  • batch data uploads: in order to create a tileset first upload data with MTS, which allows for faster data upload MTScan parallelly upload up to 10 files of source data in a single request.
  • re-usable data across unlimited tilesets: upload data and then reuse that data across as many different tilesets with as many different recipes without having to re-upload the same data. This is helpful for datasets that combine and analyze differently across different maps.
  • multilayer tilesets: create a tileset with up to 20 different data layers, each with their own tileset recipes and data sources. Combining multiple data layers into one tileset in a style instead of adding multiple tilesets to a style makes maps faster.

What are the use cases of MTS?

  • Map 5G coverage for the entire US
  • Analyze the AQI change as forest fires spread.
  • Track hurricanes
  • Visualize business data such as transactions, customer purchases, and ad conversions at a zip code level.
  • Add store locations with custom metadata to the map.
  • Tile census boundaries to make interactive election visualizations.
  • Add hiking paths, trails, or other roadways not included by default in Mapbox Streets.
  • Visualize activity data like runs or bike rides on a map.
  • Add hotel or real estate properties and their attributes to a map.
  • MTS is the same service Mapbox uses internally to create our global, daily-updating basemap Mapbox Streets.

How does MTS work?

MTS requires two inputs to make tiles: a tileset source ( geospatial data) and a tileset recipe (a JSON document that specifies the configuration options for turning the tileset source into tiles). 

Use Tilesets CLI or the MTS API endpoints to interact with MTS.

How is MTS different from the Google Maps model?

With Google Maps APIs, you use Google’s data to build a slightly customizable map. You can’t not combine your data with Google’s basemap, making it impossible to create fully integrated visualizations or application experiences. More importantly if you have big or complex data, the Google Maps method of querying multiple APIs does not scale with your data, either from a performance or cost standpoint.

The MTS model processes data into custom vector tilesets. Multiple tileset layers can be combined to create a highly customized visualization. This model offers unmatched rendering performance because the map is already preloaded with optimized vector tiles, and you don’t need to make any API calls and query your backend database at runtime.

What formats of source data does MTS support?

The MTS API endpoints accept the line-delimited GeoJSON format. As opposed to a standard GeoJSON FeatureCollection array, line-delimited GeoJSON is a JSON text sequence where each feature is a new line, e.g.: 


{"type":"Feature","id":1,"geometry":{"type":"Point","coordinates":[115.7,12.2]},"properties": "name": "Coors Light Field", "amenity": "Baseball Stadium", “open_status”: false, “popularity”: 150}}

{"type":"Feature","id":2,"geometry":{"type":"Point","coordinates":[125.7,12.2]},"properties":{"name": "Starbucks", "amenity": "Coffee Shop", “open_status”: true, “popularity”:50}}

{"type":"Feature","id":3,"geometry":{"type":"Point","coordinates":[135.7,12.2]},"properties":{"name": "City Park", "amenity": "Park", “open_status”: true, “popularity”:10}}


The Tilesets CLI accepts both standard GeoJSON FeatureCollections and line-delimited GeoJSON.

Can MTS convert data from another format?

No. There are several open source tools for both creating and converting geospatial data formats to GeoJSON. For example:

  • geojson.io for creating, converting, and editing GeoJSON.
  • togeojson, a node package for converting KML and GPX (XML formats) to GeoJSON.
  • ogr2ogr, the ultimate 40-in-1 vector data conversion tool.

Tilesets CLI accepts standard GeoJSON and automatically converts it to line-delimited GeoJSON for use with the MTS API endpoints. Learn more about Tilesets CLI functions in the Tilesets CLI documentation.

Is gzip compressed data uploads supported?

No, MTS supports uncompressed line-delimited GeoJSON sources. Use the Mapbox Uploads API to upload gzip compressed data.

Does MTS support re-projection of source data?

No, all input data must be in WGS84 longitude and latitude coordinates as specified in the GeoJSON specification. Re-projection of geometry from a different coordinate reference system is not supported. 

Is satellite, aerial imagery or other raster data supported by MTS? 

No, right now MTS only supports vector data. Use the Mapbox Uploads API to upload raster data.


Rules for Tiling: Recipes

What’s a tileset recipe?

Recipes are JSON documents that set rules for the data to be tiled. The rules specified in a recipe can be written using expressions based on the properties in the data. Example rules in a recipe could include:

  • Tile the tornado data uploaded from zooms 5 through 16
  • Only tile the most populated cities within a dataset at zooms < 7, then from zooms 8 through 16, only tile the top 20 most populated cities or towns per tile
  • Only tile the top 5 flood-affected regions by area from the dataset until zoom 10, at zoom levels >10, only show flooded regions with an area greater than 8 pixels

Are there example recipes?

The MTS recipe examples page lays out common use-cases and helpful recipes for developers to get started. We are working on a more sophisticated previewing and iteration mechanism for recipes. 

What is the maximum zoom level for a  tileset?

The maximum zoom specified in a recipe is 16, which equates to ~13 centimeters of precision and this is enforced when creating a tileset with the HTTP POST request to /tilesets/v1/{id}. 

Maps will still zoom past zoom level 16 because Mapbox support overzooming, and the features in the tileset will be accurate to +/- 13 centimeters, which is appropriate for most use cases apart from indoor maps or high-definition maps. If you have use cases for zoom levels greater than 16, please let us know.

Can recipes be viewed after they are sent to MTS?

Yes. Make an HTTP GET request to the /tilesets/v1/{id}/recipe endpoint.

Alternatively, you can go to Studio’s Tileset explorer to view the recipe associated with a tileset. 

Can tileset recipes be updated?

Yes. Update a recipe for a tileset by making an HTTP POST request to the /tilesets/v1/{id}/recipe endpoint. 

However, it’s important to be careful when doing so as changing a recipe’s layer_name or any other attributes in a tileset that is used in an active map style will lead to broken map styles. If updating a recipe changes data that is important for styling, be sure to update the map style appropriately.

How does MTS optimize the size and performance of  vector tiles?

The size of MTS-generated vector tiles is determined by the density and complexity of geographic data and the number and size of the attribute data. To keep vector tiles small:

  • Simplify feature geometries: it’s important to choose a simplification level appropriate for each use-case, however higher simplification will lead to more coarse, and less dense feature geometries. This is configurable in the recipe’s features.simplification field.
  • Filter out unneeded data attributes: only keep attributes in the tiles that are required for styling the final tileset. Filter out all other data attributes to keep tile size small. This is configurable in the recipe’s features.attributes.allowed_output field.
  • Filter out unneeded features: only keep the features in the tiles at the zoom levels needed for styling the final tileset. If a feature won’t be styled at a particular zoom level, it should be filtered out of that zoom level. This is configurable using the recipe’s features.filters field.
  • Use the Tileset explorer: use the Tileset explorer to identify layers and zooms with large tiles and optimize.

If a recipe does not sufficiently reduce the size and number of features that would make up a single layer in the tileset, features are randomly dropped until such point that any layer in the tileset is smaller than 500kb. This ensures maps stay fast.

User Experience

How do I upload data to MTS?

Read the HTTP documentation for MTS’s API endpoints and use the Tileset CLI to upload data to MTS.

Are Mapbox Datasets compatible with MTS?

To use existing Mapbox Datasets with MTS, export the datasets to GeoJSON feature collections and then use the Tilesets CLI to upload them to MTS.


Is there a UI like Mapbox Studio for MTS?

Tilesets created with MTS can be viewed and styled in Studio like all other tilesets. It is currently not possible to use the MTS API endpoints via Studio. We plan to integrate MTS’s API endpoints into Studio in the future.


Is it possible to download the raw data uploaded to MTS?

Not right now. MTS does not allow for direct downloads data uploaded. 


Can I preview a tileset before it’s created?

There is no way to preview tileset without going through the full MTS upload and publish process. When working with a large dataset, we recommend using the bbox or clip options in recipes to set a small bounding box or arbitrary polygon (e.g. the shape of a state) to only tile the data needed, which will save costs..

Can I view the tileset created using MTS?

Yes, to view the tilesets created using MTS, login to Studio and go to the Tileset explorer. For each tileset, you can view: 

  • Detailed map: map preview with a satellite underlay to add context to vector tile data. You can hover over the map to inspect individual feature properties and see additional elements like a minimap that provides an overview of the tileset bounds for navigation.
  • Tile metrics: the average and max tile sizes across all zoom levels.
  • Job history: a log of rendered jobs with metadata about jobs.
  • View and Download Recipe: view and download the recipe associated with a given render.

Can I share my tileset with others?

Yes, to collaborate with other Mapbox accounts, go to Studio’s Tileset explorer and copy the share link of the tileset you want to share. 

Can I control tileset visibility?

Yes, you can make your tilesets private, so only an access token owned by you can make API requests for this tileset. 

Are there historical versions of a tileset? 

Tilesets are not versioned. It is not possible to revert a publish command once it has been sent. When creating a tileset sources, recipes, and tilesets it is possible to specify ids and/or names for them that are semantically accessible, making it easy to re-publish a tileset with previous versions of the data or recipes. 


Example time-based historical tileset source names:

  • username.data-02-25-2019
  • username.data-02-26-2019
  • username.data-02-27-2019


Example version-based tileset ids:

  • username.data-v1
  • username.data-v2
  • username.data-v3


Is it possible to see the status and progress of a tileset while it’s processing?

Yes. To view the status of a tileset make a GET request to the status endpoint of the tileset at /tilesets/v1/{username}.{id}/status. 


Feature IDs

What format do feature IDs need to be in?

The Mapbox Vector Tile 2.1 specification requires that a vector tile feature ID be an integer (uint64). Because of this, MTS will convert any non-integer IDs into integer hash representations that are consistent across the entire tileset:

  • Integer IDs: If an integer ID field is present in the tileset source, the resulting vector tile feature ID will have the same value.
  • String IDs: If an ID field is present and is a string value, the resulting vector tile feature ID will be an integer hash representation unique to that string, between 0 and 2^53.
  • Floating point value or empty string IDs: If an ID field is present and is a floating point value or an empty string, or if there is no ID field, the resulting vector tile feature ID will be a randomly generated integer between 0 and 2^53. While ID collision for unidentified features is unlikely, unique IDs aren't guaranteed since feature parsing occurs in a distributed environment. To guarantee unique identifiers, bring unique IDs.
  • Duplicate IDs: Duplicate feature IDs can cause unexpected behavior in tilesets and should be avoided, but MTS will accept duplicated IDs as valid.


If the IDs in the tileset source need to match the feature IDs in a resulting tileset, use either use integer IDs in the tileset source, or save the original ID of the feature as an attribute in the resulting vector tiles using the add_to_attributes option in the recipe.

Can MTS use a feature property as a feature ID? 

Yes, recipes can include features.id to signal to MTS where to get the ID for each individual feature.


Billing

How much does it cost to use MTS?

Like all Mapbox products, it’s free to get started with MTS because of our generous free tier. Additionally, tilesets created with a max zoom less than 6 are always free. 

Once usage exceeds our free tier, we have a pay-as-you-go pricing model. Developers pay for processing and hosting the tilesets. The rate charged for MTS is based on the area of tiled data (in square kilometers) and the precision of the tileset, which is determined by the maxzoom specified in the recipe.

contact us

Below is how much a few example use cases might cost per year with MTS:

You can learn more by visiting our pricing documentation.