Web Map Tile Service time dimension demonstration

This example further demonstrates WMTS support within cartopy. Optional keyword arguments can be supplied to the OGC WMTS ‘gettile’ method. This allows for the specification of the ‘time’ dimension for a WMTS layer which supports it.

The example shows satellite imagery retrieved from NASA’s Global Imagery Browse Services for 5th Feb 2016. A true color MODIS image is shown on the left, with the MODIS false color ‘snow RGB’ shown on the right.

Traceback (most recent call last):
  File "/root/project/examples/web_services/wmts_time.py", line 55, in <module>
  File "/root/project/examples/web_services/wmts_time.py", line 25, in main
    wmts = WebMapTileService(url)
  File "/opt/conda/envs/test-environment/lib/python3.7/site-packages/owslib/wmts.py", line 189, in __init__
  File "/opt/conda/envs/test-environment/lib/python3.7/site-packages/owslib/wmts.py", line 240, in _buildMetadata
    gather_layers(caps, None)
  File "/opt/conda/envs/test-environment/lib/python3.7/site-packages/owslib/wmts.py", line 237, in gather_layers
    'already exists' % cm.id)
KeyError: 'Content metadata for layer "AMSUA_NOAA15_Brightness_Temp_Channel_10" already exists'

import matplotlib.pyplot as plt
from matplotlib import patheffects
from owslib.wmts import WebMapTileService

import cartopy.crs as ccrs

def main():
    # URL of NASA GIBS
    url = 'https://gibs.earthdata.nasa.gov/wmts/epsg4326/best/wmts.cgi'
    wmts = WebMapTileService(url)

    # Layers for MODIS true color and snow RGB
    layers = ['MODIS_Terra_SurfaceReflectance_Bands143',

    date_str = '2016-02-05'

    # Plot setup
    plot_crs = ccrs.Mercator()
    geodetic_crs = ccrs.Geodetic()
    x0, y0 = plot_crs.transform_point(4.6, 43.1, geodetic_crs)
    x1, y1 = plot_crs.transform_point(11.0, 47.4, geodetic_crs)
    ysize = 8
    xsize = 2 * ysize * (x1 - x0) / (y1 - y0)
    fig = plt.figure(figsize=(xsize, ysize), dpi=100)

    for layer, offset in zip(layers, [0, 0.5]):
        ax = fig.add_axes([offset, 0, 0.5, 1], projection=plot_crs)
        ax.set_xlim((x0, x1))
        ax.set_ylim((y0, y1))
        ax.add_wmts(wmts, layer, wmts_kwargs={'time': date_str})
        txt = ax.text(4.7, 43.2, wmts[layer].title, fontsize=18, color='wheat',

if __name__ == '__main__':

Total running time of the script: ( 0 minutes 0.866 seconds)

Gallery generated by Sphinx-Gallery