Use Atlas with third-party products

Create a WMS from Atlas using MapProxy

Web Map Service (WMS) is a standard protocol for serving georeferenced map images. These images are commonly produced by a map server from data provided by a GIS database. With Mapbox Atlas, you can serve WMS sources by using MapProxy and the Mapbox Static Tiles API.

MapProxy is an open source proxy for geospatial data that you’ll point to the Mapbox Static Tiles API. As WMS requests come in, MapProxy makes a request to Atlas, saves the tile in the cache, and then serves it.

Atlas server (left) with MapProxy WMS Viewer pointed at Atlas server (right)

Create a new virtual environment

This setup assumes that Mapbox Atlas is running and accessible by the MapProxy host. With this installation method, MapProxy is installed on the same host as Atlas. You will need a working Python installation (version 2.7 and 3.4 or higher) to use MapProxy. For more information, see official MapProxy installation documentation.

Create a new virtual environment. To do this you will need virtualenv installed.

virtualenv --system-site-packages mapproxy

Activate the MapProxy virtual environment:

source mapproxy/bin/activate

Install dependencies

For more information, see official MapProxy Dependency details documentation.

Debian or Ubuntu system

Install required dependencies:

sudo apt-get install python-pil python-yaml libproj12

macOS

Install required dependencies:

pip install Pillow PyYAML pyproj

Install MapProxy

Install MapProxy with pip:

pip install MapProxy

Verify installation was successful:

mapproxy-util --version

You should see something like:

MapProxy 1.12.0

Create a new MapProxy service

mapproxy-util create -t base-config mymapproxy
cd mymapproxy/
cp mapproxy.yaml mapproxy.yaml-orig

Use the following configuration values in mapproxy.yaml to access the Mapbox Static Tiles API and generate a WMS from the Mapbox Streets tileset.

  • Replace your-atlas-url with the MapProxy-accessible URL of the Atlas server. If MapProxy and Atlas are running on the same server, this should be [atlasProtocol]://localhost:[atlasPort] which is the default Atlas URL in this scenario.
  • Replace your-atlas-public-token with your public token, which is located in your Atlas account dashboard.
services:
  demo:
  kml:
  wmts:
  wms:
    md:
      title: MapProxy Atlas Server WMS Proxy
      abstract: MapProxy and Atlas Server example

layers:
  - name: mapbox-streets
    title: Mapbox Atlas Server - Streets
    sources: [mb_street]

caches:
  mb_street:
    grids: [webmercator]
    sources: [mb_street_tiles]
    

sources:
    mb_street_tiles:
      type: tile
      grid: GLOBAL_WEBMERCATOR
      url: <your-atlas-url>/styles/v1/mapbox/streets-v10/tiles/256/%(z)s/%(x)s/%(y)s?access_token=<your-atlas-public-token>

grids:
    webmercator:
        base: GLOBAL_WEBMERCATOR
        origin: 'nw'
        tile_size: [256,256]

Start your Atlas server if it is not already running:

cd atlas-server
./atlas.sh start

Once the config mapproxy.yaml file is saved, start the MapProxy server:

mapproxy-util serve-develop -b 0.0.0.0 mapproxy.yaml

Access the native MapProxy WMS Viewer

Replace your-ip-address with your MapProxy server address (for example, localhost:8080):

http://<your-ip-address>/demo/?srs=EPSG%3A900913&format=image%2Fjpeg&wms_layer=mapbox-streets

Access MapProxy WMS GetCapabilites

Use the GetCapabilites request to access information about a WMS service, including supported image formats and available map layers.

http://<your-ip-address>/service?REQUEST=GetCapabilities
Was this page helpful?