API Reference

papermap.papermap Module

papermap.papermap.NAME: str = 'papermap'

Name of the application.

papermap.papermap.PAPER_SIZE_TO_DIMENSIONS_MAP: dict[str, tuple[int, int]] = {'a0': (841, 1189), 'a1': (594, 841), 'a2': (420, 594), 'a3': (297, 420), 'a4': (210, 297), 'a5': (148, 210), 'a6': (105, 148), 'a7': (74, 105), 'legal': (216, 356), 'letter': (216, 279)}

Map of paper size names to dimensions (width, height) in mm.

papermap.papermap.PAPER_SIZES = ('a0', 'a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7', 'letter', 'legal')

Tuple of available paper size names.

papermap.papermap.DEFAULT_PAPER_SIZE: str = 'a4'

Default paper size.

papermap.papermap.DEFAULT_SCALE: int = 25000

Default map scale.

papermap.papermap.DEFAULT_MARGIN: int = 10

Default margin in mm.

papermap.papermap.DEFAULT_DPI: int = 300

Default dots per inch.

papermap.papermap.DEFAULT_BACKGROUND_COLOR: str = '#fff'

Default background color.

papermap.papermap.DEFAULT_GRID_SIZE: int = 1000

Default grid size in meters.

class papermap.papermap.PaperMap(lat, lon, *, tile_provider_key='openstreetmap', api_key=None, paper_size='a4', use_landscape=False, margin_top=10, margin_right=10, margin_bottom=10, margin_left=10, scale=25000, dpi=300, background_color='#fff', add_grid=False, grid_size=1000, strict_download=False)

Bases: object

A paper map.

>>> from papermap import PaperMap
>>> pm = PaperMap(13.75889, 100.49722)
>>> pm.render()
>>> pm.save("Bangkok.pdf")
Parameters:
  • lat (float) – Latitude of the center of the map.

  • lon (float) – Longitude of the center of the map

  • tile_provider_key (dataclasses.InitVar[str]) – Tile provider key to serve as the base of the paper map. Defaults to openstreetmap.

  • api_key (str | None) – API key for the chosen tile provider (if applicable). Defaults to None.

  • size – Size of the paper map. Defaults to a4.

  • landscape – Use landscape orientation. Defaults to False.

  • margin_top (int) – Top margin (in mm). Defaults to 10.

  • margin_right (int) – Right margin (in mm). Defaults to 10.

  • margin_bottom (int) – Bottom margin (in mm). Defaults to 10.

  • margin_left (int) – Left margin (in mm). Defaults to 10.

  • scale (int) – Scale of the paper map. Defaults to 25000.

  • dpi (int) – Dots per inch. Defaults to 300.

  • background_color (str) – Background color of the paper map. Defaults to #fff.

  • add_grid (bool) – Add a coordinate grid overlay to the paper map. Defaults to False.

  • grid_size (int) – Size of the grid squares (if applicable, in meters). Defaults to 1000.

  • strict_download (bool) – Fail if any tiles cannot be downloaded. Defaults to False.

Raises:
  • ValueError – If the tile provider is invalid.

  • ValueError – If no API key is specified (when applicable).

  • ValueError – If the paper size is invalid.

  • ValueError – If the scale is “out of bounds”.

classmethod from_utm(utm, **kwargs)

Create a paper map from Universal Transverse Mercator (UTM) coordinates.

Parameters:
  • utm (UTMCoordinate | str) – Either an UTMCoordinate object or a UTM string (e.g., “18N 583960E 4507523N”).

  • **kwargs (Any) – Additional keyword arguments to pass to PaperMap constructor.

Returns:

A new PaperMap instance centered on the converted coordinates.

Return type:

Self

Examples

>>> from papermap import PaperMap
>>> from papermap.geodesy import UTMCoordinate
>>> utm = UTMCoordinate(583960, 4507523, 18, "N")
>>> pm = PaperMap.from_utm(utm)
>>> pm.render()
>>> pm.save("map_from_utm.pdf")
classmethod from_mgrs(mgrs, **kwargs)

Create a paper map from Military Grid Reference System (MGRS) coordinates.

Parameters:
  • mgrs (MGRSCoordinate | str) – Either an MGRSCoordinate object or an MGRS string (e.g., “18TWK8395907523”).

  • **kwargs (Any) – Additional keyword arguments to pass to PaperMap constructor.

Returns:

A new PaperMap instance centered on the converted coordinates.

Raises:

ValueError – If the MGRS string is malformed.

Return type:

Self

Examples

>>> from papermap import PaperMap
>>> pm = PaperMap.from_mgrs("18TWK8395907523")
>>> pm.render()
>>> pm.save("map_from_mgrs.pdf")
>>> from papermap.geodesy import MGRSCoordinate
>>> mgrs = MGRSCoordinate(18, "T", "WK", 83959, 7523)
>>> pm = PaperMap.from_mgrs(mgrs)
classmethod from_ecef(ecef, **kwargs)

Create a paper map from Earth-Centered, Earth-Fixed (ECEF) Cartesian coordinates.

Parameters:
  • ecef (ECEFCoordinate) – ECEFCoordinate with x, y, z in meters.

  • **kwargs (Any) – Additional keyword arguments to pass to PaperMap constructor.

Returns:

A new PaperMap instance centered on the converted coordinates.

Return type:

Self

Examples

>>> from papermap import PaperMap
>>> from papermap.geodesy import ECEFCoordinate
>>> ecef = ECEFCoordinate(1334934, -4655474, 4137498)
>>> pm = PaperMap.from_ecef(ecef)
>>> pm.render()
>>> pm.save("map_from_ecef.pdf")
render()

Render the paper map, consisting of the map image, grid (if applicable), attribution and scale.

save(file, title='papermap', author='papermap')

Save the paper map to a file.

Parameters:
  • file (str | Path) – The file to save the paper map to.

  • title (str) – The title of the PDF document. Defaults to PaperMap.

  • author (str) – The author of the PDF document. Defaults to PaperMap.

papermap.geodesy Module

Geodesy module for coordinate conversions.

This module provides functions for converting between different coordinate systems: - Geographic coordinates (latitude/longitude in WGS84) - UTM (Universal Transverse Mercator) coordinates - MGRS (Military Grid Reference System) coordinates - ECEF (Earth-Centered, Earth-Fixed) Cartesian coordinates

The implementations are based on well-established geodetic formulas, particularly: - Karney (2011) for high-accuracy Transverse Mercator projections - Bowring (1985) for efficient Cartesian to geographic conversions

References

Karney, C. F. (2011). Transverse Mercator with an accuracy of a few nanometers.

Journal of Geodesy, 85(8), 475-485. https://arxiv.org/abs/1002.1417v3

Bowring, B. R. (1985). The accuracy of geodetic latitude and height equations.

Survey Review, 28(218), 202-206.

Veness, C. Geodesy functions. https://github.com/chrisveness/geodesy

class papermap.geodesy.Ellipsoid(semi_major_axis, flattening)

Bases: object

A reference ellipsoid for geodetic calculations.

An ellipsoid is a mathematical model of the Earth’s shape, defined by its semi-major axis (equatorial radius) and flattening. Different ellipsoids are used for different regions and applications.

semi_major_axis

Semi-major axis (equatorial radius) in meters. This is the distance from the Earth’s center to the equator.

Type:

float

flattening

Flattening factor (dimensionless). This describes how much the ellipsoid deviates from a perfect sphere, defined as f = (a - b) / a where a is the semi-major axis and b is the semi-minor axis. A value of 0 indicates a perfect sphere.

Type:

float

property semi_minor_axis: float

Semi-minor axis (polar radius) in meters.

This is the distance from the Earth’s center to the poles, calculated as b = a × (1 - f).

Returns:

The semi-minor axis in meters.

papermap.geodesy.WGS_84_ELLIPSOID = Ellipsoid(semi_major_axis=6378137.0, flattening=0.0033528106647474805)

The WGS84 ellipsoid used by GPS and most modern mapping applications.

This is the default ellipsoid for all coordinate conversion functions.

papermap.geodesy.UTM_SCALE_FACTOR: float = 0.9996

UTM central meridian scale factor (dimensionless).

UTM uses a secant cylinder projection, meaning the cylinder intersects the Earth at two lines parallel to the central meridian. This scale factor (less than 1) reduces distortion across the zone by making the scale exact along those secant lines rather than at the central meridian.

papermap.geodesy.UTM_FALSE_EASTING: float = 500000.0

UTM false easting in meters.

All UTM easting values are offset by this amount to ensure they are always positive. The central meridian of each zone has an easting of exactly 500,000 meters.

papermap.geodesy.UTM_FALSE_NORTHING: float = 10000000.0

UTM false northing for the Southern Hemisphere in meters.

In the Southern Hemisphere, northing values are offset by this amount to avoid negative coordinates. The equator has a northing of 10,000,000 meters in the Southern Hemisphere and 0 meters in the Northern.

papermap.geodesy.MGRS_LATITUDE_BANDS: str = 'CDEFGHJKLMNPQRSTUVWXX'

MGRS latitude band letters.

These letters designate 8-degree latitude bands from 80°S to 84°N. Letters I and O are omitted to avoid confusion with digits 1 and 0. The band ‘X’ is repeated because it spans 12 degrees (72°N to 84°N) instead of the usual 8 degrees.

Band C: 80°S to 72°S Band D: 72°S to 64°S … Band X: 72°N to 84°N

papermap.geodesy.MGRS_COLUMN_LETTERS_SET1: str = 'ABCDEFGH'

100km column letters for UTM zones where (zone % 3) == 1.

papermap.geodesy.MGRS_COLUMN_LETTERS_SET2: str = 'JKLMNPQR'

100km column letters for UTM zones where (zone % 3) == 2.

papermap.geodesy.MGRS_COLUMN_LETTERS_SET3: str = 'STUVWXYZ'

100km column letters for UTM zones where (zone % 3) == 0.

papermap.geodesy.MGRS_ROW_LETTERS_ODD: str = 'ABCDEFGHJKLMNPQRSTUV'

100km row letters for odd UTM zones (1, 3, 5, …).

papermap.geodesy.MGRS_ROW_LETTERS_EVEN: str = 'FGHJKLMNPQRSTUVABCDE'

100km row letters for even UTM zones (2, 4, 6, …).

Note how this is offset by 5 letters from the odd zone pattern. This offset ensures that adjacent zones don’t have the same row letter at the same northing, reducing ambiguity.

class papermap.geodesy.LatLonCoordinate(lat, lon, height=None)

Bases: NamedTuple

A geographic coordinate in latitude and longitude.

lat

Latitude in degrees (-90 to 90). Positive values are north of the equator, negative values are south.

Type:

float

lon

Longitude in degrees (-180 to 180). Positive values are east of the Prime Meridian, negative values are west.

Type:

float

height

Height above the WGS84 ellipsoid in meters. Defaults to None.

Type:

float | None

class papermap.geodesy.UTMCoordinate(easting, northing, zone, hemisphere)

Bases: NamedTuple

A Universal Transverse Mercator (UTM) coordinate.

UTM divides the Earth into 60 longitudinal zones, each 6 degrees wide, numbered 1-60 starting from 180°W. Each zone uses a Transverse Mercator projection with its own central meridian.

easting

Distance east from the zone’s central meridian in meters. The central meridian has an easting of 500,000m (false easting).

Type:

float

northing

Distance north from the equator in meters. In the Southern Hemisphere, 10,000,000m is added (false northing) so all values are positive.

Type:

float

zone

UTM zone number (1-60).

Type:

int

hemisphere

‘N’ for Northern Hemisphere, ‘S’ for Southern Hemisphere.

Type:

str

class papermap.geodesy.MGRSCoordinate(zone, band, square, easting, northing)

Bases: NamedTuple

A Military Grid Reference System (MGRS) coordinate.

MGRS extends UTM by adding a two-letter 100km square identifier and providing a way to specify location to varying precision levels.

zone

UTM zone number (1-60).

Type:

int

band

Latitude band letter (C-X, excluding I and O).

Type:

str

square

Two-letter 100km grid square identifier.

Type:

str

easting

Easting within the 100km square in meters (0-99999).

Type:

float

northing

Northing within the 100km square in meters (0-99999).

Type:

float

class papermap.geodesy.ECEFCoordinate(x, y, z)

Bases: NamedTuple

An Earth-Centered, Earth-Fixed (ECEF) Cartesian coordinate.

ECEF is a 3D Cartesian coordinate system with: - Origin at the Earth’s center of mass - X-axis pointing towards the intersection of the Prime Meridian and Equator - Y-axis pointing towards 90°E longitude on the Equator - Z-axis pointing towards the North Pole

x

Distance along X-axis in meters.

Type:

float

y

Distance along Y-axis in meters.

Type:

float

z

Distance along Z-axis in meters.

Type:

float

papermap.geodesy.format_latlon(latlon, *, precision=5)

Format a geographic coordinate in latitude and longitude as a human-readable string.

Parameters:
  • latlon (LatLonCoordinate) – The geographic coordinate in latitude and longitude to format.

  • precision (int) – Number of digits for latitude/longitude (0-8). 0=111km, 1 = 11.1km, 2 = 1.11km, 3 = 111m, 4 = 11.1m, 5 = 1.11m, 6 = 111mm, 7 = 11.1mm, 8 = 1.11mm. Defaults to 5.

Returns:

A string in the format “40.7128, -74.0060”.

Return type:

str

papermap.geodesy.format_utm(utm)

Format a UTM coordinate as a human-readable string.

Parameters:

utm (UTMCoordinate) – The UTM coordinate to format.

Returns:

A string in the format “18N 583960E 4507523N”.

Return type:

str

papermap.geodesy.format_mgrs(mgrs, *, precision=5)

Format an MGRS coordinate as a string with specified precision.

Parameters:
  • mgrs (MGRSCoordinate) – The MGRS coordinate to format.

  • precision (int) – Number of digits for easting/northing (1-5). 1 = 10km, 2 = 1km, 3 = 100m, 4 = 10m, 5 = 1m. Defaults to 5.

Returns:

MGRS coordinate string at the specified precision.

Raises:

ValueError – If precision is not between 1 and 5.

Return type:

str

papermap.geodesy.format_ecef(ecef)

Format an ECEF coordinate as a string.

Parameters:

ecef (ECEFCoordinate) – The ECEF coordinate to format.

Returns:

A string in the format “(x, y, z)”.

Return type:

str

papermap.geodesy.wrap_angle(angle, limit)

Wraps an angle to [-limit, limit] range.

Parameters:
  • angle (float) – Angle in degrees.

  • limit (float) – Lower and upper limit in degrees.

Returns:

Angle wrapped to [-limit, limit] degrees range.

Return type:

float

papermap.geodesy.wrap_lat(lat)

Wraps latitude to [-90, 90] degrees range.

Parameters:

lat (float) – Latitude in degrees.

Returns:

Latitude wrapped to [-90, 90] degrees range.

Return type:

float

papermap.geodesy.wrap_lon(lon)

Wraps longitude to [-180, 180] degrees range.

Parameters:

lon (float) – Longitude in degrees.

Returns:

Longitude wrapped to [-180, 180] degrees range.

Return type:

float

papermap.geodesy.latlon_to_utm(lat, lon, *, ellipsoid=Ellipsoid(semi_major_axis=6378137.0, flattening=0.0033528106647474805))

Convert geographic coordinates to UTM.

This function uses Karney’s (2011) series expansion of the Transverse Mercator projection, which achieves sub-millimeter accuracy anywhere on Earth. The algorithm uses a conformal mapping via a 6th-order Krüger series.

The conversion process: 1. Determine the UTM zone (with special cases for Norway/Svalbard) 2. Calculate the conformal latitude (τ’) using the ellipsoid eccentricity 3. Apply the forward Krüger series to get projected coordinates 4. Scale and offset to get final UTM easting/northing

Parameters:
  • lat (float) – Latitude in degrees (-80 to 84 for UTM coverage).

  • lon (float) – Longitude in degrees (-180 to 180).

  • ellipsoid (Ellipsoid) – Reference ellipsoid for calculations. Defaults to WGS84.

Returns:

UTMCoordinate with easting, northing, zone, and hemisphere.

Raises:

ValueError – If latitude is outside the UTM coverage area [-80, 84].

Return type:

UTMCoordinate

Examples

>>> utm = latlon_to_utm(40.7128, -74.0060)  # New York City
>>> print(utm)
UTMCoordinate(easting=583959.3723240846, northing=4507350.998243322, zone=18, hemisphere='N')
>>> utm = latlon_to_utm(-33.8688, 151.2093)  # Sydney
>>> print(format_utm(utm))
56S 334369E 6250948N
papermap.geodesy.utm_to_latlon(utm, *, ellipsoid=Ellipsoid(semi_major_axis=6378137.0, flattening=0.0033528106647474805))

Convert UTM coordinates to geographic coordinates.

This function uses Karney’s (2011) inverse Transverse Mercator series to convert UTM coordinates (either as an UTMCoordinate object or a string) back to latitude/longitude with high accuracy.

The conversion process: 1. Remove false origins from easting/northing 2. Compute normalized conformal coordinates 3. Apply inverse Krüger series 4. Iteratively solve for geodetic latitude 5. Compute longitude from the conformal coordinates

Parameters:
  • utm (UTMCoordinate | str) – Either an UTMCoordinate object or a UTM string (e.g., “18N 583960E 4507523N”).

  • ellipsoid (Ellipsoid) – Reference ellipsoid for calculations. Defaults to WGS84.

Returns:

Tuple of (latitude, longitude) in degrees.

Raises:

ValueError – If the UTM string is malformed.

Return type:

LatLonCoordinate

Examples

>>> utm = UTMCoordinate(583960, 4507523, 18, "N")
>>> latlon = utm_to_latlon(utm)
>>> print(latlon)
LatLonCoordinate(lat=40.714349212461954, lon=-74.00596952683831, height=None)
>>> print(format_latlon(latlon))
40.71435, -74.00597
papermap.geodesy.latlon_to_mgrs(lat, lon, *, ellipsoid=Ellipsoid(semi_major_axis=6378137.0, flattening=0.0033528106647474805))

Convert geographic coordinates to MGRS.

MGRS (Military Grid Reference System) is an alphanumeric version of UTM that provides a standardized way to express grid coordinates. It combines: - A Grid Zone Designator (e.g., “18T”) = UTM zone + latitude band - A 100km Square Identifier (e.g., “WK”) = two letters - Numerical coordinates within the square (e.g., “12345 67890”)

Parameters:
  • lat (float) – Latitude in degrees (-80 to 84).

  • lon (float) – Longitude in degrees (-180 to 180).

  • ellipsoid (Ellipsoid) – Reference ellipsoid for calculations. Defaults to WGS84.

Returns:

MGRSCoordinate object with zone, band, square, easting, and northing.

Return type:

MGRSCoordinate

Examples

>>> mgrs = latlon_to_mgrs(40.7128, -74.0060)
>>> print(mgrs)
MGRSCoordinate(zone=18, band='T', square='WL', easting=83959.37232408463, northing=7350.998243321665)
>>> mgrs = latlon_to_mgrs(40.7128, -74.0060)
>>> print(format_mgrs(mgrs))
18TWL8395907350
>>> mgrs = latlon_to_mgrs(40.7128, -74.0060, precision=3)
>>> print(format_mgrs(mgrs, precision=3))
18TWL839073
papermap.geodesy.mgrs_to_latlon(mgrs, *, ellipsoid=Ellipsoid(semi_major_axis=6378137.0, flattening=0.0033528106647474805))

Convert MGRS coordinates to geographic coordinates.

This function converts an MGRS coordinate (either as an MGRSCoordinate object or a string) back to latitude/longitude. The conversion involves: 1. Parsing the MGRS components 2. Reconstructing UTM coordinates 3. Converting UTM to lat/lon

Parameters:
  • mgrs (MGRSCoordinate | str) – Either an MGRSCoordinate object or an MGRS string (e.g., “18TWK8395907523”).

  • ellipsoid (Ellipsoid) – Reference ellipsoid for calculations. Defaults to WGS84.

Returns:

Tuple of (latitude, longitude) in degrees.

Raises:

ValueError – If the MGRS string is malformed.

Return type:

LatLonCoordinate

Examples

>>> latlon = mgrs_to_latlon("18TWK8395907523")
>>> print(format_latlon(latlon))
39.81354, -74.01908
>>> mgrs = MGRSCoordinate(18, "T", "WK", 83959, 7523)
>>> lat, lon, _ = mgrs_to_latlon(mgrs)
>>> print(lat, lon)
39.81354433765199 -74.01908091495618
papermap.geodesy.latlon_to_ecef(lat, lon, *, height=0.0, ellipsoid=Ellipsoid(semi_major_axis=6378137.0, flattening=0.0033528106647474805))

Convert geographic coordinates to Earth-Centered, Earth-Fixed (ECEF).

ECEF coordinates are a 3D Cartesian system with: - Origin at Earth’s center of mass - X-axis pointing to the intersection of Prime Meridian and Equator - Y-axis pointing to 90°E on the Equator - Z-axis pointing to the North Pole

The conversion accounts for the ellipsoidal shape of the Earth using the specified ellipsoid parameters.

The formulas used are: - x = (N + h) × cos(φ) × cos(λ) - y = (N + h) × cos(φ) × sin(λ) - z = (N × (1 - e²) + h) × sin(φ)

where: - N = a / sqrt(1 - e² × sin²(φ)) is the radius of curvature in the prime vertical (the distance from the surface to the minor axis along the normal to the ellipsoid) - a = semi-major axis - e = first eccentricity - h = height above ellipsoid - φ = latitude, λ = longitude

Parameters:
  • lat (float) – Latitude in degrees.

  • lon (float) – Longitude in degrees.

  • height (float) – Height above the ellipsoid in meters. Defaults to 0.

  • ellipsoid (Ellipsoid) – Reference ellipsoid for calculations. Defaults to WGS84.

Returns:

ECEFCoordinate with x, y, z in meters.

Return type:

ECEFCoordinate

Examples

>>> ecef = latlon_to_ecef(0, 0)  # On equator at prime meridian
>>> print(f"x={ecef.x:.0f}")
x=6378137
>>> ecef = latlon_to_ecef(90, 0)  # North Pole
>>> print(f"z={ecef.z:.0f}")
z=6356752
papermap.geodesy.ecef_to_latlon(ecef, *, ellipsoid=Ellipsoid(semi_major_axis=6378137.0, flattening=0.0033528106647474805))

Convert ECEF coordinates to geographic coordinates.

This function uses Bowring’s (1985) iterative method, which converges to full precision in just 2-3 iterations for typical coordinates.

The algorithm uses parametric latitude (β) as an intermediate step, which simplifies the iteration compared to direct methods.

The process: 1. Compute longitude directly from x and y: λ = atan2(y, x) 2. Iteratively refine parametric latitude β 3. Compute geodetic latitude from β 4. Compute height from the final values

Parameters:
  • ecef (ECEFCoordinate) – ECEFCoordinate with x, y, z in meters.

  • ellipsoid (Ellipsoid) – Reference ellipsoid for calculations. Defaults to WGS84.

Returns:

  • latitude is in degrees (-90 to 90)

  • longitude is in degrees (-180 to 180)

  • height is above the ellipsoid in meters

Return type:

Tuple of (latitude, longitude, height) where

Examples

>>> ecef = ECEFCoordinate(6378137, 0, 0)
>>> latlon = ecef_to_latlon(ecef)
>>> print(latlon)
LatLonCoordinate(lat=0.0, lon=0.0, height=0.0)
>>> print(f"{latlon.lat:.1f}, {latlon.lon:.1f}, {latlon.height:.1f}")
0.0, 0.0, 0.0

papermap.tile Module

papermap.tile.TILE_SIZE: int = 256

Size (width/height) of map tiles in pixels.

class papermap.tile.Tile(x, y, zoom, bbox, image=None)

Bases: object

A tile from a tile provider.

Parameters:
  • x (int) – The x coordinate of the tile.

  • y (int) – The y coordinate of the tile.

  • zoom (int) – The zoom level of the tile.

  • bbox (tuple[int, int, int, int]) – The bounding box of the tile.

  • image (Image | None) – The image of the tile. Defaults to None.

property success: bool

Whether the tile was successfully downloaded or not.

papermap.tile_provider Module

class papermap.tile_provider.TileProvider(key, name, attribution, html_attribution, url_template, zoom_min, zoom_max, bounds=None, subdomains=None)

Bases: object

A tile provider.

Parameters:
  • key (str) – The key of the tile provider (fully lowercase with dashes instead of spaces).

  • name (str) – The name of the tile provider.

  • attribution (str) – The attribution of the tile provider.

  • html_attribution (str) – The HTML-version of the attribution (with hyperlinks).

  • url_template (str) – The URL template of the tile provider. Allowed placeholders are {x}, {y}, {z}, {s} and {a}, where {x} refers to the x coordinate of the tile, {y} refers to the y coordinate of the tile, {z} to the zoom level, {s} to the subdomain (optional) and {a} to the API key (optional). See https://wiki.openstreetmap.org/wiki/Slippy_map_tilenames#Tile_providers for more information.

  • zoom_min (int) – The minimum zoom level of the tile provider.

  • zoom_max (int) – The maximum zoom level of the tile provider.

  • bounds (tuple[float, float, float, float] | None) – The geographic bounds of the tile provider (min_lon, min_lat, max_lon, max_lat). Defaults to None.

  • subdomains (list[str | int | None] | None) – The subdomains of the tile provider. Defaults to None.

format_url_template(tile, api_key=None)

Format the URL template with the tile’s coordinates and zoom level.

Parameters:
  • tile (Tile) – The tile to format the URL template with.

  • api_key (str | None) – The API key to use. Defaults to None.

Returns:

The formatted URL template.

Return type:

str

papermap.tile_providers Subpackage

The tile_providers subpackage contains tile provider configurations organized by provider.

Tile provider configurations for various map providers.

This subpackage contains tile provider configurations organized by provider. All tile providers are aggregated and exported through this module.

Example

>>> from papermap.tile_providers import KEY_TO_TILE_PROVIDER, TILE_PROVIDERS
>>> osm = KEY_TO_TILE_PROVIDER["openstreetmap"]
>>> print(osm.name)
OpenStreetMap
Available providers:
  • OpenStreetMap (and regional variants)

  • OpenTopoMap

  • OpenSeaMap

  • Thunderforest (requires API key)

  • Esri

  • Stadia (including Stamen styles)

  • CartoDB (Carto)

  • Google Maps

  • HERE (requires API key)

  • USGS

  • NASA GIBS

  • Wikimedia

  • CyclOSM

  • Jawg (requires API key)

  • MapTiler (requires API key)

  • TomTom (requires API key)

  • BasemapAT (Austrian)

  • NLMaps (Dutch)

  • SwissFederalGeoportal

  • And many more miscellaneous providers

papermap.tile_providers.DEFAULT_TILE_PROVIDER_KEY: str = 'openstreetmap'

Default tile provider key.

papermap.tile_providers.KEY_TO_TILE_PROVIDER: dict[str, TileProvider] = {'alltrails': TileProvider(key='alltrails', name='AllTrails', attribution='Map data: © OpenStreetMap contributors', html_attribution='Map data: © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://alltrails.com/tiles/alltrailsOutdoors/{z}/{x}/{y}.png', zoom_min=0, zoom_max=20, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'basemapat': TileProvider(key='basemapat', name='BasemapAT', attribution='Basemap.at', html_attribution='<a href="https://basemap.at/">Basemap.at</a>', url_template='https://maps{s}.wien.gv.at/basemap/geolandbasemap/normal/google3857/{z}/{y}/{x}.png', zoom_min=0, zoom_max=19, bounds=(8.782379, 46.35877, 17.189532, 49.037872), subdomains=['', '1', '2', '3', '4'], subdomains_cycle=<itertools.cycle object>), 'basemapat-grau': TileProvider(key='basemapat-grau', name='BasemapAT Grau', attribution='Basemap.at', html_attribution='<a href="https://basemap.at/">Basemap.at</a>', url_template='https://maps{s}.wien.gv.at/basemap/bmapgrau/normal/google3857/{z}/{y}/{x}.png', zoom_min=0, zoom_max=19, bounds=(8.782379, 46.35877, 17.189532, 49.037872), subdomains=['', '1', '2', '3', '4'], subdomains_cycle=<itertools.cycle object>), 'basemapat-highdpi': TileProvider(key='basemapat-highdpi', name='BasemapAT Highdpi', attribution='Basemap.at', html_attribution='<a href="https://basemap.at/">Basemap.at</a>', url_template='https://maps{s}.wien.gv.at/basemap/bmaphidpi/normal/google3857/{z}/{y}/{x}.png', zoom_min=0, zoom_max=19, bounds=(8.782379, 46.35877, 17.189532, 49.037872), subdomains=['', '1', '2', '3', '4'], subdomains_cycle=<itertools.cycle object>), 'basemapat-orthofoto': TileProvider(key='basemapat-orthofoto', name='BasemapAT Orthofoto', attribution='Basemap.at', html_attribution='<a href="https://basemap.at/">Basemap.at</a>', url_template='https://maps{s}.wien.gv.at/basemap/bmaporthofoto30cm/normal/google3857/{z}/{y}/{x}.jpeg', zoom_min=0, zoom_max=19, bounds=(8.782379, 46.35877, 17.189532, 49.037872), subdomains=['', '1', '2', '3', '4'], subdomains_cycle=<itertools.cycle object>), 'basemapat-overlay': TileProvider(key='basemapat-overlay', name='BasemapAT Overlay', attribution='Basemap.at', html_attribution='<a href="https://basemap.at/">Basemap.at</a>', url_template='https://maps{s}.wien.gv.at/basemap/bmapoverlay/normal/google3857/{z}/{y}/{x}.png', zoom_min=0, zoom_max=19, bounds=(8.782379, 46.35877, 17.189532, 49.037872), subdomains=['', '1', '2', '3', '4'], subdomains_cycle=<itertools.cycle object>), 'basemapat-surface': TileProvider(key='basemapat-surface', name='BasemapAT Surface', attribution='Basemap.at', html_attribution='<a href="https://basemap.at/">Basemap.at</a>', url_template='https://maps{s}.wien.gv.at/basemap/bmapoberflaeche/normal/google3857/{z}/{y}/{x}.jpeg', zoom_min=0, zoom_max=19, bounds=(8.782379, 46.35877, 17.189532, 49.037872), subdomains=['', '1', '2', '3', '4'], subdomains_cycle=<itertools.cycle object>), 'basemapat-terrain': TileProvider(key='basemapat-terrain', name='BasemapAT Terrain', attribution='Basemap.at', html_attribution='<a href="https://basemap.at/">Basemap.at</a>', url_template='https://maps{s}.wien.gv.at/basemap/bmapgelaende/normal/google3857/{z}/{y}/{x}.jpeg', zoom_min=0, zoom_max=19, bounds=(8.782379, 46.35877, 17.189532, 49.037872), subdomains=['', '1', '2', '3', '4'], subdomains_cycle=<itertools.cycle object>), 'cartodb-darkmatter': TileProvider(key='cartodb-darkmatter', name='CartoDB DarkMatter', attribution='© OpenStreetMap contributors, © CARTO', html_attribution='© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>, © <a href="https://carto.com/attributions">CARTO</a>', url_template='https://{s}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}.png', zoom_min=0, zoom_max=20, bounds=None, subdomains=['a', 'b', 'c', 'd'], subdomains_cycle=<itertools.cycle object>), 'cartodb-darkmatter-nolabels': TileProvider(key='cartodb-darkmatter-nolabels', name='CartoDB DarkMatterNoLabels', attribution='© OpenStreetMap contributors, © CARTO', html_attribution='© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>, © <a href="https://carto.com/attributions">CARTO</a>', url_template='https://{s}.basemaps.cartocdn.com/dark_nolabels/{z}/{x}/{y}.png', zoom_min=0, zoom_max=20, bounds=None, subdomains=['a', 'b', 'c', 'd'], subdomains_cycle=<itertools.cycle object>), 'cartodb-darkmatter-onlylabels': TileProvider(key='cartodb-darkmatter-onlylabels', name='CartoDB DarkMatterOnlyLabels', attribution='© OpenStreetMap contributors, © CARTO', html_attribution='© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>, © <a href="https://carto.com/attributions">CARTO</a>', url_template='https://{s}.basemaps.cartocdn.com/dark_only_labels/{z}/{x}/{y}.png', zoom_min=0, zoom_max=20, bounds=None, subdomains=['a', 'b', 'c', 'd'], subdomains_cycle=<itertools.cycle object>), 'cartodb-positron': TileProvider(key='cartodb-positron', name='CartoDB Positron', attribution='© OpenStreetMap contributors, © CARTO', html_attribution='© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>, © <a href="https://carto.com/attributions">CARTO</a>', url_template='https://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png', zoom_min=0, zoom_max=20, bounds=None, subdomains=['a', 'b', 'c', 'd'], subdomains_cycle=<itertools.cycle object>), 'cartodb-positronnolabels': TileProvider(key='cartodb-positronnolabels', name='CartoDB PositronNoLabels', attribution='© OpenStreetMap contributors, © CARTO', html_attribution='© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>, © <a href="https://carto.com/attributions">CARTO</a>', url_template='https://{s}.basemaps.cartocdn.com/light_nolabels/{z}/{x}/{y}.png', zoom_min=0, zoom_max=20, bounds=None, subdomains=['a', 'b', 'c', 'd'], subdomains_cycle=<itertools.cycle object>), 'cartodb-positrononlylabels': TileProvider(key='cartodb-positrononlylabels', name='CartoDB PositronOnlyLabels', attribution='© OpenStreetMap contributors, © CARTO', html_attribution='© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>, © <a href="https://carto.com/attributions">CARTO</a>', url_template='https://{s}.basemaps.cartocdn.com/light_only_labels/{z}/{x}/{y}.png', zoom_min=0, zoom_max=20, bounds=None, subdomains=['a', 'b', 'c', 'd'], subdomains_cycle=<itertools.cycle object>), 'cartodb-voyager': TileProvider(key='cartodb-voyager', name='CartoDB Voyager', attribution='© OpenStreetMap contributors, © CARTO', html_attribution='© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>, © <a href="https://carto.com/attributions">CARTO</a>', url_template='https://{s}.basemaps.cartocdn.com/rastertiles/voyager/{z}/{x}/{y}.png', zoom_min=0, zoom_max=20, bounds=None, subdomains=['a', 'b', 'c', 'd'], subdomains_cycle=<itertools.cycle object>), 'cartodb-voyager-labelsunder': TileProvider(key='cartodb-voyager-labelsunder', name='CartoDB VoyagerLabelsUnder', attribution='© OpenStreetMap contributors, © CARTO', html_attribution='© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>, © <a href="https://carto.com/attributions">CARTO</a>', url_template='https://{s}.basemaps.cartocdn.com/rastertiles/voyager_labels_under/{z}/{x}/{y}.png', zoom_min=0, zoom_max=20, bounds=None, subdomains=['a', 'b', 'c', 'd'], subdomains_cycle=<itertools.cycle object>), 'cartodb-voyager-nolabels': TileProvider(key='cartodb-voyager-nolabels', name='CartoDB VoyagerNoLabels', attribution='© OpenStreetMap contributors, © CARTO', html_attribution='© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>, © <a href="https://carto.com/attributions">CARTO</a>', url_template='https://{s}.basemaps.cartocdn.com/rastertiles/voyager_nolabels/{z}/{x}/{y}.png', zoom_min=0, zoom_max=20, bounds=None, subdomains=['a', 'b', 'c', 'd'], subdomains_cycle=<itertools.cycle object>), 'cartodb-voyager-onlylabels': TileProvider(key='cartodb-voyager-onlylabels', name='CartoDB VoyagerOnlyLabels', attribution='© OpenStreetMap contributors, © CARTO', html_attribution='© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>, © <a href="https://carto.com/attributions">CARTO</a>', url_template='https://{s}.basemaps.cartocdn.com/rastertiles/voyager_only_labels/{z}/{x}/{y}.png', zoom_min=0, zoom_max=20, bounds=None, subdomains=['a', 'b', 'c', 'd'], subdomains_cycle=<itertools.cycle object>), 'cyclosm': TileProvider(key='cyclosm', name='CyclOSM', attribution='Map data: © OpenStreetMap contributors. Map style: © CyclOSM (hosted by OpenStreetMap France)', html_attribution='Map data: © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>. Map style: © <a href="https://www.cyclosm.org/">CyclOSM</a> (hosted by <a href="https://openstreetmap.fr/">OpenStreetMap France</a>)', url_template='https://{s}.tile-cyclosm.openstreetmap.fr/cyclosm/{z}/{x}/{y}.png', zoom_min=0, zoom_max=20, bounds=None, subdomains=['a', 'b', 'c'], subdomains_cycle=<itertools.cycle object>), 'esri-delorme': TileProvider(key='esri-delorme', name='Esri DeLorme', attribution='Tiles © Esri DeLorme', html_attribution='Tiles © <a href="https://www.esri.com/">Esri</a> DeLorme', url_template='https://provider.arcgisonline.com/ArcGIS/rest/services/Specialty/DeLorme_World_Base_Map/MapProvider/tile/{z}/{y}/{x}', zoom_min=0, zoom_max=11, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'esri-natgeoworldmap': TileProvider(key='esri-natgeoworldmap', name='Esri NatGeoWorldMap', attribution='Tiles © Esri Source: National Geographic, Esri, DeLorme, HERE, UNEP-WCMC, USGS, NASA, ESA, METI, NRCAN, GEBCO, NOAA, increment P Corp.', html_attribution='Tiles © <a href="https://www.esri.com/">Esri</a> Source: National Geographic, Esri, DeLorme, HERE, UNEP-WCMC, USGS, NASA, ESA, METI, NRCAN, GEBCO, NOAA, increment P Corp.', url_template='https://provider.arcgisonline.com/ArcGIS/rest/services/NatGeo_World_Map/MapProvider/tile/{z}/{y}/{x}', zoom_min=0, zoom_max=16, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'esri-oceanbasemap': TileProvider(key='esri-oceanbasemap', name='Esri OceanBasemap', attribution='Tiles © Esri Source: Esri, GEBCO, NOAA, National Geographic, DeLorme, HERE, Geonames.org, and other contributors', html_attribution='Tiles © <a href="https://www.esri.com/">Esri</a> Source: Esri, GEBCO, NOAA, National Geographic, DeLorme, HERE, Geonames.org, and other contributors', url_template='https://provider.arcgisonline.com/ArcGIS/rest/services/Ocean/World_Ocean_Base/MapProvider/tile/{z}/{y}/{x}', zoom_min=0, zoom_max=13, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'esri-worldgraycanvas': TileProvider(key='esri-worldgraycanvas', name='Esri WorldGrayCanvas', attribution='Tiles © Esri', html_attribution='Tiles © <a href="https://www.esri.com/">Esri</a>', url_template='https://provider.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Light_Gray_Base/MapProvider/tile/{z}/{y}/{x}', zoom_min=0, zoom_max=16, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'esri-worldimagery': TileProvider(key='esri-worldimagery', name='Esri WorldImagery', attribution='Tiles © Esri Source: Esri, i-cubed, USDA, USGS, AEX, GeoEye, Getmapping, Aerogrid, IGN, IGP, UPR-EGP, and the GIS User Community', html_attribution='Tiles © <a href="https://www.esri.com/">Esri</a> Source: Esri, i-cubed, USDA, USGS, AEX, GeoEye, Getmapping, Aerogrid, IGN, IGP, UPR-EGP, and the GIS User Community', url_template='https://provider.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapProvider/tile/{z}/{y}/{x}', zoom_min=0, zoom_max=19, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'esri-worldphysical': TileProvider(key='esri-worldphysical', name='Esri WorldPhysical', attribution='Tiles © Esri Source: US National Park Service', html_attribution='Tiles © <a href="https://www.esri.com/">Esri</a> Source: US National Park Service', url_template='https://provider.arcgisonline.com/ArcGIS/rest/services/World_Physical_Map/MapProvider/tile/{z}/{y}/{x}', zoom_min=0, zoom_max=8, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'esri-worldshadedrelief': TileProvider(key='esri-worldshadedrelief', name='Esri WorldShadedRelief', attribution='Tiles © Esri Source: Esri', html_attribution='Tiles © <a href="https://www.esri.com/">Esri</a> Source: Esri', url_template='https://provider.arcgisonline.com/ArcGIS/rest/services/World_Shaded_Relief/MapProvider/tile/{z}/{y}/{x}', zoom_min=0, zoom_max=13, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'esri-worldstreetmap': TileProvider(key='esri-worldstreetmap', name='Esri WorldStreetMap', attribution='Tiles © Esri', html_attribution='Tiles © <a href="https://www.esri.com/">Esri</a>', url_template='https://provider.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapProvider/tile/{z}/{y}/{x}', zoom_min=0, zoom_max=17, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'esri-worldterrain': TileProvider(key='esri-worldterrain', name='Esri WorldTerrain', attribution='Tiles © Esri Source: USGS, Esri, TANA, DeLorme, and NPS', html_attribution='Tiles © <a href="https://www.esri.com/">Esri</a> Source: USGS, Esri, TANA, DeLorme, and NPS', url_template='https://provider.arcgisonline.com/ArcGIS/rest/services/World_Terrain_Base/MapProvider/tile/{z}/{y}/{x}', zoom_min=0, zoom_max=13, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'esri-worldtopomap': TileProvider(key='esri-worldtopomap', name='Esri WorldTopoMap', attribution='Tiles © Esri', html_attribution='Tiles © <a href="https://www.esri.com/">Esri</a>', url_template='https://provider.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapProvider/tile/{z}/{y}/{x}', zoom_min=0, zoom_max=19, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'geofabrik-topo': TileProvider(key='geofabrik-topo', name='Geofabrik Topo', attribution='Map data: © OpenStreetMap contributors', html_attribution='Map data: © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='http://{s}.tile.geofabrik.de/15173cf79060ee4a66573954f6017ab0/{z}/{x}/{y}.png', zoom_min=0, zoom_max=19, bounds=None, subdomains=['a', 'b', 'c'], subdomains_cycle=<itertools.cycle object>), 'google-maps': TileProvider(key='google-maps', name='Google Maps', attribution='Map data: © Google', html_attribution='Map data: © <a href="https://www.google.com/maps">Google</a>', url_template='https://mt{s}.google.com/vt/lyrs=m&x={x}&y={y}&z={z}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[0, 1, 2, 3], subdomains_cycle=<itertools.cycle object>), 'google-maps-roads': TileProvider(key='google-maps-roads', name='Google Maps Roads', attribution='Map data: © Google', html_attribution='Map data: © <a href="https://www.google.com/maps">Google</a>', url_template='https://mt{s}.google.com/vt/lyrs=h&x={x}&y={y}&z={z}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[0, 1, 2, 3], subdomains_cycle=<itertools.cycle object>), 'google-maps-satellite': TileProvider(key='google-maps-satellite', name='Google Maps Satellite', attribution='Map data: © Google', html_attribution='Map data: © <a href="https://www.google.com/maps">Google</a>', url_template='https://mt{s}.google.com/vt/lyrs=s&x={x}&y={y}&z={z}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[0, 1, 2, 3], subdomains_cycle=<itertools.cycle object>), 'google-maps-satellite-hybrid': TileProvider(key='google-maps-satellite-hybrid', name='Google Maps Satellite Hybrid', attribution='Map data: © Google', html_attribution='Map data: © <a href="https://www.google.com/maps">Google</a>', url_template='https://mt{s}.google.com/vt/lyrs=y&x={x}&y={y}&z={z}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[0, 1, 2, 3], subdomains_cycle=<itertools.cycle object>), 'google-maps-terrain': TileProvider(key='google-maps-terrain', name='Google Maps Terrain', attribution='Map data: © Google', html_attribution='Map data: © <a href="https://www.google.com/maps">Google</a>', url_template='https://mt{s}.google.com/vt/lyrs=t&x={x}&y={y}&z={z}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[0, 1, 2, 3], subdomains_cycle=<itertools.cycle object>), 'google-maps-terrain-hybrid': TileProvider(key='google-maps-terrain-hybrid', name='Google Maps Terrain Hybrid', attribution='Map data: © Google', html_attribution='Map data: © <a href="https://www.google.com/maps">Google</a>', url_template='https://mt{s}.google.com/vt/lyrs=p&x={x}&y={y}&z={z}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[0, 1, 2, 3], subdomains_cycle=<itertools.cycle object>), 'here-basicmap': TileProvider(key='here-basicmap', name='HERE basicMap', attribution='Map data: © HERE', html_attribution='Map data: © <a href="https://www.here.com/">HERE</a>', url_template='https://{s}.base.maps.ls.hereapi.com/maptile/2.1/maptile/newest/normal.day/{z}/{x}/{y}/256/png8?apiKey={a}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[1, 2, 3, 4], subdomains_cycle=<itertools.cycle object>), 'here-carnavdaygrey': TileProvider(key='here-carnavdaygrey', name='HERE carnavDayGrey', attribution='Map data: © HERE', html_attribution='Map data: © <a href="https://www.here.com/">HERE</a>', url_template='https://{s}.base.maps.ls.hereapi.com/maptile/2.1/maptile/newest/carnav.day.grey/{z}/{x}/{y}/256/png8?apiKey={a}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[1, 2, 3, 4], subdomains_cycle=<itertools.cycle object>), 'here-hybridday': TileProvider(key='here-hybridday', name='HERE hybridDay', attribution='Map data: © HERE', html_attribution='Map data: © <a href="https://www.here.com/">HERE</a>', url_template='https://{s}.aerial.maps.ls.hereapi.com/maptile/2.1/maptile/newest/hybrid.day/{z}/{x}/{y}/256/png8?apiKey={a}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[1, 2, 3, 4], subdomains_cycle=<itertools.cycle object>), 'here-hybriddaygrey': TileProvider(key='here-hybriddaygrey', name='HERE hybridDayGrey', attribution='Map data: © HERE', html_attribution='Map data: © <a href="https://www.here.com/">HERE</a>', url_template='https://{s}.aerial.maps.ls.hereapi.com/maptile/2.1/maptile/newest/hybrid.grey.day/{z}/{x}/{y}/256/png8?apiKey={a}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[1, 2, 3, 4], subdomains_cycle=<itertools.cycle object>), 'here-hybriddaymobile': TileProvider(key='here-hybriddaymobile', name='HERE hybridDayMobile', attribution='Map data: © HERE', html_attribution='Map data: © <a href="https://www.here.com/">HERE</a>', url_template='https://{s}.aerial.maps.ls.hereapi.com/maptile/2.1/maptile/newest/hybrid.day.mobile/{z}/{x}/{y}/256/png8?apiKey={a}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[1, 2, 3, 4], subdomains_cycle=<itertools.cycle object>), 'here-hybriddaytransit': TileProvider(key='here-hybriddaytransit', name='HERE hybridDayTransit', attribution='Map data: © HERE', html_attribution='Map data: © <a href="https://www.here.com/">HERE</a>', url_template='https://{s}.aerial.maps.ls.hereapi.com/maptile/2.1/maptile/newest/hybrid.day.transit/{z}/{x}/{y}/256/png8?apiKey={a}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[1, 2, 3, 4], subdomains_cycle=<itertools.cycle object>), 'here-maplabels': TileProvider(key='here-maplabels', name='HERE mapLabels', attribution='Map data: © HERE', html_attribution='Map data: © <a href="https://www.here.com/">HERE</a>', url_template='https://{s}.base.maps.ls.hereapi.com/maptile/2.1/maptile/newest/normal.day/{z}/{x}/{y}/256/png8?apiKey={a}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[1, 2, 3, 4], subdomains_cycle=<itertools.cycle object>), 'here-normalday': TileProvider(key='here-normalday', name='HERE normalDay', attribution='Map data: © HERE', html_attribution='Map data: © <a href="https://www.here.com/">HERE</a>', url_template='https://{s}.base.maps.ls.hereapi.com/maptile/2.1/maptile/newest/normal.day/{z}/{x}/{y}/256/png8?apiKey={a}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[1, 2, 3, 4], subdomains_cycle=<itertools.cycle object>), 'here-normaldaycustom': TileProvider(key='here-normaldaycustom', name='HERE normalDayCustom', attribution='Map data: © HERE', html_attribution='Map data: © <a href="https://www.here.com/">HERE</a>', url_template='https://{s}.base.maps.ls.hereapi.com/maptile/2.1/maptile/newest/normal.day.custom/{z}/{x}/{y}/256/png8?apiKey={a}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[1, 2, 3, 4], subdomains_cycle=<itertools.cycle object>), 'here-normaldaygrey': TileProvider(key='here-normaldaygrey', name='HERE normalDayGrey', attribution='Map data: © HERE', html_attribution='Map data: © <a href="https://www.here.com/">HERE</a>', url_template='https://{s}.base.maps.ls.hereapi.com/maptile/2.1/maptile/newest/normal.day.grey/{z}/{x}/{y}/256/png8?apiKey={a}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[1, 2, 3, 4], subdomains_cycle=<itertools.cycle object>), 'here-normaldaygreymobile': TileProvider(key='here-normaldaygreymobile', name='HERE normalDayGreyMobile', attribution='Map data: © HERE', html_attribution='Map data: © <a href="https://www.here.com/">HERE</a>', url_template='https://{s}.base.maps.ls.hereapi.com/maptile/2.1/maptile/newest/normal.day.grey.mobile/{z}/{x}/{y}/256/png8?apiKey={a}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[1, 2, 3, 4], subdomains_cycle=<itertools.cycle object>), 'here-normaldaymobile': TileProvider(key='here-normaldaymobile', name='HERE normalDayMobile', attribution='Map data: © HERE', html_attribution='Map data: © <a href="https://www.here.com/">HERE</a>', url_template='https://{s}.base.maps.ls.hereapi.com/maptile/2.1/maptile/newest/normal.day.mobile/{z}/{x}/{y}/256/png8?apiKey={a}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[1, 2, 3, 4], subdomains_cycle=<itertools.cycle object>), 'here-normaldaytransit': TileProvider(key='here-normaldaytransit', name='HERE normalDayTransit', attribution='Map data: © HERE', html_attribution='Map data: © <a href="https://www.here.com/">HERE</a>', url_template='https://{s}.base.maps.ls.hereapi.com/maptile/2.1/maptile/newest/normal.day.transit/{z}/{x}/{y}/256/png8?apiKey={a}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[1, 2, 3, 4], subdomains_cycle=<itertools.cycle object>), 'here-normaldaytransitmobile': TileProvider(key='here-normaldaytransitmobile', name='HERE normalDayTransitMobile', attribution='Map data: © HERE', html_attribution='Map data: © <a href="https://www.here.com/">HERE</a>', url_template='https://{s}.base.maps.ls.hereapi.com/maptile/2.1/maptile/newest/normal.day.transit.mobile/{z}/{x}/{y}/256/png8?apiKey={a}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[1, 2, 3, 4], subdomains_cycle=<itertools.cycle object>), 'here-normalnight': TileProvider(key='here-normalnight', name='HERE normalNight', attribution='Map data: © HERE', html_attribution='Map data: © <a href="https://www.here.com/">HERE</a>', url_template='https://{s}.base.maps.ls.hereapi.com/maptile/2.1/maptile/newest/normal.night/{z}/{x}/{y}/256/png8?apiKey={a}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[1, 2, 3, 4], subdomains_cycle=<itertools.cycle object>), 'here-normalnightgrey': TileProvider(key='here-normalnightgrey', name='HERE normalNightGrey', attribution='Map data: © HERE', html_attribution='Map data: © <a href="https://www.here.com/">HERE</a>', url_template='https://{s}.base.maps.ls.hereapi.com/maptile/2.1/maptile/newest/normal.night.grey/{z}/{x}/{y}/256/png8?apiKey={a}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[1, 2, 3, 4], subdomains_cycle=<itertools.cycle object>), 'here-normalnightgreymobile': TileProvider(key='here-normalnightgreymobile', name='HERE normalNightGreyMobile', attribution='Map data: © HERE', html_attribution='Map data: © <a href="https://www.here.com/">HERE</a>', url_template='https://{s}.base.maps.ls.hereapi.com/maptile/2.1/maptile/newest/normal.night.grey.mobile/{z}/{x}/{y}/256/png8?apiKey={a}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[1, 2, 3, 4], subdomains_cycle=<itertools.cycle object>), 'here-normalnightmobile': TileProvider(key='here-normalnightmobile', name='HERE normalNightMobile', attribution='Map data: © HERE', html_attribution='Map data: © <a href="https://www.here.com/">HERE</a>', url_template='https://{s}.base.maps.ls.hereapi.com/maptile/2.1/maptile/newest/normal.night.mobile/{z}/{x}/{y}/256/png8?apiKey={a}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[1, 2, 3, 4], subdomains_cycle=<itertools.cycle object>), 'here-normalnighttransit': TileProvider(key='here-normalnighttransit', name='HERE normalNightTransit', attribution='Map data: © HERE', html_attribution='Map data: © <a href="https://www.here.com/">HERE</a>', url_template='https://{s}.base.maps.ls.hereapi.com/maptile/2.1/maptile/newest/normal.night.transit/{z}/{x}/{y}/256/png8?apiKey={a}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[1, 2, 3, 4], subdomains_cycle=<itertools.cycle object>), 'here-normalnighttransitmobile': TileProvider(key='here-normalnighttransitmobile', name='HERE normalNightTransitMobile', attribution='Map data: © HERE', html_attribution='Map data: © <a href="https://www.here.com/">HERE</a>', url_template='https://{s}.base.maps.ls.hereapi.com/maptile/2.1/maptile/newest/normal.night.transit.mobile/{z}/{x}/{y}/256/png8?apiKey={a}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[1, 2, 3, 4], subdomains_cycle=<itertools.cycle object>), 'here-pedestrianday': TileProvider(key='here-pedestrianday', name='HERE pedestrianDay', attribution='Map data: © HERE', html_attribution='Map data: © <a href="https://www.here.com/">HERE</a>', url_template='https://{s}.base.maps.ls.hereapi.com/maptile/2.1/maptile/newest/pedestrian.day/{z}/{x}/{y}/256/png8?apiKey={a}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[1, 2, 3, 4], subdomains_cycle=<itertools.cycle object>), 'here-pedestriannight': TileProvider(key='here-pedestriannight', name='HERE pedestrianNight', attribution='Map data: © HERE', html_attribution='Map data: © <a href="https://www.here.com/">HERE</a>', url_template='https://{s}.base.maps.ls.hereapi.com/maptile/2.1/maptile/newest/pedestrian.night/{z}/{x}/{y}/256/png8?apiKey={a}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[1, 2, 3, 4], subdomains_cycle=<itertools.cycle object>), 'here-reducedday': TileProvider(key='here-reducedday', name='HERE reducedDay', attribution='Map data: © HERE', html_attribution='Map data: © <a href="https://www.here.com/">HERE</a>', url_template='https://{s}.base.maps.ls.hereapi.com/maptile/2.1/maptile/newest/reduced.day/{z}/{x}/{y}/256/png8?apiKey={a}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[1, 2, 3, 4], subdomains_cycle=<itertools.cycle object>), 'here-reducednight': TileProvider(key='here-reducednight', name='HERE reducedNight', attribution='Map data: © HERE', html_attribution='Map data: © <a href="https://www.here.com/">HERE</a>', url_template='https://{s}.base.maps.ls.hereapi.com/maptile/2.1/maptile/newest/reduced.night/{z}/{x}/{y}/256/png8?apiKey={a}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[1, 2, 3, 4], subdomains_cycle=<itertools.cycle object>), 'here-satelliteday': TileProvider(key='here-satelliteday', name='HERE satelliteDay', attribution='Map data: © HERE', html_attribution='Map data: © <a href="https://www.here.com/">HERE</a>', url_template='https://{s}.aerial.maps.ls.hereapi.com/maptile/2.1/maptile/newest/satellite.day/{z}/{x}/{y}/256/png8?apiKey={a}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[1, 2, 3, 4], subdomains_cycle=<itertools.cycle object>), 'here-terrainday': TileProvider(key='here-terrainday', name='HERE terrainDay', attribution='Map data: © HERE', html_attribution='Map data: © <a href="https://www.here.com/">HERE</a>', url_template='https://{s}.aerial.maps.ls.hereapi.com/maptile/2.1/maptile/newest/terrain.day/{z}/{x}/{y}/256/png8?apiKey={a}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[1, 2, 3, 4], subdomains_cycle=<itertools.cycle object>), 'here-terraindaymobile': TileProvider(key='here-terraindaymobile', name='HERE terrainDayMobile', attribution='Map data: © HERE', html_attribution='Map data: © <a href="https://www.here.com/">HERE</a>', url_template='https://{s}.aerial.maps.ls.hereapi.com/maptile/2.1/maptile/newest/terrain.day.mobile/{z}/{x}/{y}/256/png8?apiKey={a}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[1, 2, 3, 4], subdomains_cycle=<itertools.cycle object>), 'here-trafficflow': TileProvider(key='here-trafficflow', name='HERE trafficFlow', attribution='Map data: © HERE', html_attribution='Map data: © <a href="https://www.here.com/">HERE</a>', url_template='https://{s}.traffic.maps.ls.hereapi.com/maptile/2.1/maptile/newest/normal.day/{z}/{x}/{y}/256/png8?apiKey={a}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[1, 2, 3, 4], subdomains_cycle=<itertools.cycle object>), 'hikebike': TileProvider(key='hikebike', name='HikeBike', attribution='Map data: © OpenStreetMap contributors', html_attribution='Map data: © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://tiles.wmflabs.org/hikebike/{z}/{x}/{y}.png', zoom_min=0, zoom_max=19, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'jawg-dark': TileProvider(key='jawg-dark', name='Jawg Dark', attribution='© Jawg Maps, © OpenStreetMap contributors', html_attribution='© <a href="https://www.jawg.io/">Jawg</a> Maps, © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://tile.jawg.io/jawg-dark/{z}/{x}/{y}.png?access-token={a}', zoom_min=0, zoom_max=22, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'jawg-light': TileProvider(key='jawg-light', name='Jawg Light', attribution='© Jawg Maps, © OpenStreetMap contributors', html_attribution='© <a href="https://www.jawg.io/">Jawg</a> Maps, © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://tile.jawg.io/jawg-light/{z}/{x}/{y}.png?access-token={a}', zoom_min=0, zoom_max=22, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'jawg-matrix': TileProvider(key='jawg-matrix', name='Jawg Matrix', attribution='© Jawg Maps, © OpenStreetMap contributors', html_attribution='© <a href="https://www.jawg.io/">Jawg</a> Maps, © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://tile.jawg.io/jawg-matrix/{z}/{x}/{y}.png?access-token={a}', zoom_min=0, zoom_max=22, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'jawg-streets': TileProvider(key='jawg-streets', name='Jawg Streets', attribution='© Jawg Maps, © OpenStreetMap contributors', html_attribution='© <a href="https://www.jawg.io/">Jawg</a> Maps, © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://tile.jawg.io/jawg-streets/{z}/{x}/{y}.png?access-token={a}', zoom_min=0, zoom_max=22, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'jawg-sunny': TileProvider(key='jawg-sunny', name='Jawg Sunny', attribution='© Jawg Maps, © OpenStreetMap contributors', html_attribution='© <a href="https://www.jawg.io/">Jawg</a> Maps, © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://tile.jawg.io/jawg-sunny/{z}/{x}/{y}.png?access-token={a}', zoom_min=0, zoom_max=22, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'jawg-terrain': TileProvider(key='jawg-terrain', name='Jawg Terrain', attribution='© Jawg Maps, © OpenStreetMap contributors', html_attribution='© <a href="https://www.jawg.io/">Jawg</a> Maps, © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://tile.jawg.io/jawg-terrain/{z}/{x}/{y}.png?access-token={a}', zoom_min=0, zoom_max=22, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'komoot': TileProvider(key='komoot', name='Komoot', attribution='Map data: © OpenStreetMap contributors', html_attribution='Map data: © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='http://{s}.tile.komoot.de/komoot-2/{z}/{x}/{y}.png', zoom_min=0, zoom_max=19, bounds=None, subdomains=['a', 'b', 'c'], subdomains_cycle=<itertools.cycle object>), 'maptiler-basic': TileProvider(key='maptiler-basic', name='MapTiler Basic', attribution='© MapTiler, © OpenStreetMap contributors', html_attribution='© <a href="https://www.maptiler.com/copyright/">MapTiler</a>, © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://api.maptiler.com/maps/basic-v2/{z}/{x}/{y}.png?key={a}', zoom_min=0, zoom_max=21, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'maptiler-bright': TileProvider(key='maptiler-bright', name='MapTiler Bright', attribution='© MapTiler, © OpenStreetMap contributors', html_attribution='© <a href="https://www.maptiler.com/copyright/">MapTiler</a>, © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://api.maptiler.com/maps/bright-v2/{z}/{x}/{y}.png?key={a}', zoom_min=0, zoom_max=21, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'maptiler-hybrid': TileProvider(key='maptiler-hybrid', name='MapTiler Hybrid', attribution='© MapTiler, © OpenStreetMap contributors', html_attribution='© <a href="https://www.maptiler.com/copyright/">MapTiler</a>, © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://api.maptiler.com/maps/hybrid/{z}/{x}/{y}.jpg?key={a}', zoom_min=0, zoom_max=21, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'maptiler-outdoor': TileProvider(key='maptiler-outdoor', name='MapTiler Outdoor', attribution='© MapTiler, © OpenStreetMap contributors', html_attribution='© <a href="https://www.maptiler.com/copyright/">MapTiler</a>, © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://api.maptiler.com/maps/outdoor-v2/{z}/{x}/{y}.png?key={a}', zoom_min=0, zoom_max=21, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'maptiler-pastel': TileProvider(key='maptiler-pastel', name='MapTiler Pastel', attribution='© MapTiler, © OpenStreetMap contributors', html_attribution='© <a href="https://www.maptiler.com/copyright/">MapTiler</a>, © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://api.maptiler.com/maps/pastel/{z}/{x}/{y}.png?key={a}', zoom_min=0, zoom_max=21, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'maptiler-positron': TileProvider(key='maptiler-positron', name='MapTiler Positron', attribution='© MapTiler, © OpenStreetMap contributors', html_attribution='© <a href="https://www.maptiler.com/copyright/">MapTiler</a>, © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://api.maptiler.com/maps/positron/{z}/{x}/{y}.png?key={a}', zoom_min=0, zoom_max=21, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'maptiler-satellite': TileProvider(key='maptiler-satellite', name='MapTiler Satellite', attribution='© MapTiler, © OpenStreetMap contributors', html_attribution='© <a href="https://www.maptiler.com/copyright/">MapTiler</a>, © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://api.maptiler.com/maps/satellite-v2/{z}/{x}/{y}.jpg?key={a}', zoom_min=0, zoom_max=21, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'maptiler-streets': TileProvider(key='maptiler-streets', name='MapTiler Streets', attribution='© MapTiler, © OpenStreetMap contributors', html_attribution='© <a href="https://www.maptiler.com/copyright/">MapTiler</a>, © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://api.maptiler.com/maps/streets-v2/{z}/{x}/{y}.png?key={a}', zoom_min=0, zoom_max=21, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'maptiler-toner': TileProvider(key='maptiler-toner', name='MapTiler Toner', attribution='© MapTiler, © OpenStreetMap contributors', html_attribution='© <a href="https://www.maptiler.com/copyright/">MapTiler</a>, © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://api.maptiler.com/maps/toner-v2/{z}/{x}/{y}.png?key={a}', zoom_min=0, zoom_max=21, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'maptiler-topo': TileProvider(key='maptiler-topo', name='MapTiler Topo', attribution='© MapTiler, © OpenStreetMap contributors', html_attribution='© <a href="https://www.maptiler.com/copyright/">MapTiler</a>, © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://api.maptiler.com/maps/topo-v2/{z}/{x}/{y}.png?key={a}', zoom_min=0, zoom_max=21, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'maptiler-winter': TileProvider(key='maptiler-winter', name='MapTiler Winter', attribution='© MapTiler, © OpenStreetMap contributors', html_attribution='© <a href="https://www.maptiler.com/copyright/">MapTiler</a>, © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://api.maptiler.com/maps/winter-v2/{z}/{x}/{y}.png?key={a}', zoom_min=0, zoom_max=21, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'mapy-cz': TileProvider(key='mapy-cz', name='Mapy.cz', attribution='Map data: © OpenStreetMap contributors. Map style: © Seznam.cz', html_attribution='Map data: © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>. Map style: © <a href="https://www.seznam.cz/">Seznam.cz</a>', url_template='https://m{s}.mapprovider.mapy.cz/turist-m/{z}-{x}-{y}.png', zoom_min=0, zoom_max=19, bounds=None, subdomains=[1, 2, 3, 4], subdomains_cycle=<itertools.cycle object>), 'mtbmap': TileProvider(key='mtbmap', name='MtbMap', attribution='Map data: © OpenStreetMap contributors, USGS. Map style: © mtbmap.cz', html_attribution='Map data: © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a> & USGS. Map style: © <a href="https://mtbmap.cz/">mtbmap.cz</a>', url_template='http://tile.mtbmap.cz/mtbmap_tiles/{z}/{x}/{y}.png', zoom_min=0, zoom_max=18, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'nasagibs-modisterraaod': TileProvider(key='nasagibs-modisterraaod', name='NASAGIBS ModisTerraAOD', attribution='Imagery provided by services from the Global Imagery Browse Services (GIBS), operated by the NASA/GSFC/Earth Science Data and Information System (ESDIS) with funding provided by NASA/HQ', html_attribution='Imagery provided by services from the <a href="https://earthdata.nasa.gov/eosdis/science-system-description/eosdis-components/gibs">GIBS</a>, operated by the NASA/GSFC/Earth Science Data and Information System (<a href="https://earthdata.nasa.gov/">ESDIS</a>) with funding provided by NASA/HQ', url_template='https://gibs.earthdata.nasa.gov/wmts/epsg3857/best/MODIS_Terra_Aerosol/default/GoogleMapsCompatible_Level/{z}/{y}/{x}.png', zoom_min=0, zoom_max=6, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'nasagibs-modisterrabands367cr': TileProvider(key='nasagibs-modisterrabands367cr', name='NASAGIBS ModisTerraBands367CR', attribution='Imagery provided by services from the Global Imagery Browse Services (GIBS), operated by the NASA/GSFC/Earth Science Data and Information System (ESDIS) with funding provided by NASA/HQ', html_attribution='Imagery provided by services from the <a href="https://earthdata.nasa.gov/eosdis/science-system-description/eosdis-components/gibs">GIBS</a>, operated by the NASA/GSFC/Earth Science Data and Information System (<a href="https://earthdata.nasa.gov/">ESDIS</a>) with funding provided by NASA/HQ', url_template='https://gibs.earthdata.nasa.gov/wmts/epsg3857/best/MODIS_Terra_CorrectedReflectance_Bands367/default/GoogleMapsCompatible_Level/{z}/{y}/{x}.jpg', zoom_min=0, zoom_max=9, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'nasagibs-modisterrachlorophyll': TileProvider(key='nasagibs-modisterrachlorophyll', name='NASAGIBS ModisTerraChlorophyll', attribution='Imagery provided by services from the Global Imagery Browse Services (GIBS), operated by the NASA/GSFC/Earth Science Data and Information System (ESDIS) with funding provided by NASA/HQ', html_attribution='Imagery provided by services from the <a href="https://earthdata.nasa.gov/eosdis/science-system-description/eosdis-components/gibs">GIBS</a>, operated by the NASA/GSFC/Earth Science Data and Information System (<a href="https://earthdata.nasa.gov/">ESDIS</a>) with funding provided by NASA/HQ', url_template='https://gibs.earthdata.nasa.gov/wmts/epsg3857/best/MODIS_Terra_Chlorophyll_A/default/GoogleMapsCompatible_Level/{z}/{y}/{x}.png', zoom_min=0, zoom_max=7, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'nasagibs-modisterralstday': TileProvider(key='nasagibs-modisterralstday', name='NASAGIBS ModisTerraLSTDay', attribution='Imagery provided by services from the Global Imagery Browse Services (GIBS), operated by the NASA/GSFC/Earth Science Data and Information System (ESDIS) with funding provided by NASA/HQ', html_attribution='Imagery provided by services from the <a href="https://earthdata.nasa.gov/eosdis/science-system-description/eosdis-components/gibs">GIBS</a>, operated by the NASA/GSFC/Earth Science Data and Information System (<a href="https://earthdata.nasa.gov/">ESDIS</a>) with funding provided by NASA/HQ', url_template='https://gibs.earthdata.nasa.gov/wmts/epsg3857/best/MODIS_Terra_Land_Surface_Temp_Day/default/GoogleMapsCompatible_Level/{z}/{y}/{x}.png', zoom_min=0, zoom_max=7, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'nasagibs-modisterrasnowcover': TileProvider(key='nasagibs-modisterrasnowcover', name='NASAGIBS ModisTerraSnowCover', attribution='Imagery provided by services from the Global Imagery Browse Services (GIBS), operated by the NASA/GSFC/Earth Science Data and Information System (ESDIS) with funding provided by NASA/HQ', html_attribution='Imagery provided by services from the <a href="https://earthdata.nasa.gov/eosdis/science-system-description/eosdis-components/gibs">GIBS</a>, operated by the NASA/GSFC/Earth Science Data and Information System (<a href="https://earthdata.nasa.gov/">ESDIS</a>) with funding provided by NASA/HQ', url_template='https://gibs.earthdata.nasa.gov/wmts/epsg3857/best/MODIS_Terra_NDSI_Snow_Cover/default/GoogleMapsCompatible_Level/{z}/{y}/{x}.png', zoom_min=0, zoom_max=8, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'nasagibs-modisterratruecolorcr': TileProvider(key='nasagibs-modisterratruecolorcr', name='NASAGIBS ModisTerraTrueColorCR', attribution='Imagery provided by services from the Global Imagery Browse Services (GIBS), operated by the NASA/GSFC/Earth Science Data and Information System (ESDIS) with funding provided by NASA/HQ', html_attribution='Imagery provided by services from the <a href="https://earthdata.nasa.gov/eosdis/science-system-description/eosdis-components/gibs">GIBS</a>, operated by the NASA/GSFC/Earth Science Data and Information System (<a href="https://earthdata.nasa.gov/">ESDIS</a>) with funding provided by NASA/HQ', url_template='https://gibs.earthdata.nasa.gov/wmts/epsg3857/best/MODIS_Terra_CorrectedReflectance_TrueColor/default/GoogleMapsCompatible_Level/{z}/{y}/{x}.jpg', zoom_min=0, zoom_max=9, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'nasagibs-viirsearthatnight2012': TileProvider(key='nasagibs-viirsearthatnight2012', name='NASAGIBS ViirsEarthAtNight2012', attribution='Imagery provided by services from the Global Imagery Browse Services (GIBS), operated by the NASA/GSFC/Earth Science Data and Information System (ESDIS) with funding provided by NASA/HQ', html_attribution='Imagery provided by services from the <a href="https://earthdata.nasa.gov/eosdis/science-system-description/eosdis-components/gibs">GIBS</a>, operated by the NASA/GSFC/Earth Science Data and Information System (<a href="https://earthdata.nasa.gov/">ESDIS</a>) with funding provided by NASA/HQ', url_template='https://gibs.earthdata.nasa.gov/wmts/epsg3857/best/VIIRS_CityLights_2012/default/GoogleMapsCompatible_Level/{z}/{y}/{x}.jpg', zoom_min=0, zoom_max=8, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'nlmaps-grijs': TileProvider(key='nlmaps-grijs', name='NLMaps Grijs', attribution='Kaartgegevens © Kadaster', html_attribution='Kaartgegevens © <a href="https://www.kadaster.nl/">Kadaster</a>', url_template='https://service.pdok.nl/brt/achtergrondkaart/wmts/v2_0/grijs/EPSG:3857/{z}/{x}/{y}.png', zoom_min=0, zoom_max=19, bounds=(3.37, 50.75, 7.21, 53.47), subdomains=None, subdomains_cycle=<itertools.cycle object>), 'nlmaps-luchtfoto': TileProvider(key='nlmaps-luchtfoto', name='NLMaps Luchtfoto', attribution='Kaartgegevens © Kadaster', html_attribution='Kaartgegevens © <a href="https://www.kadaster.nl/">Kadaster</a>', url_template='https://service.pdok.nl/hwh/luchtfotorgb/wmts/v1_0/Actueel_orthoHR/EPSG:3857/{z}/{x}/{y}.jpeg', zoom_min=0, zoom_max=19, bounds=(3.37, 50.75, 7.21, 53.47), subdomains=None, subdomains_cycle=<itertools.cycle object>), 'nlmaps-pastel': TileProvider(key='nlmaps-pastel', name='NLMaps Pastel', attribution='Kaartgegevens © Kadaster', html_attribution='Kaartgegevens © <a href="https://www.kadaster.nl/">Kadaster</a>', url_template='https://service.pdok.nl/brt/achtergrondkaart/wmts/v2_0/pastel/EPSG:3857/{z}/{x}/{y}.png', zoom_min=0, zoom_max=19, bounds=(3.37, 50.75, 7.21, 53.47), subdomains=None, subdomains_cycle=<itertools.cycle object>), 'nlmaps-standaard': TileProvider(key='nlmaps-standaard', name='NLMaps Standaard', attribution='Kaartgegevens © Kadaster', html_attribution='Kaartgegevens © <a href="https://www.kadaster.nl/">Kadaster</a>', url_template='https://service.pdok.nl/brt/achtergrondkaart/wmts/v2_0/standaard/EPSG:3857/{z}/{x}/{y}.png', zoom_min=0, zoom_max=19, bounds=(3.37, 50.75, 7.21, 53.47), subdomains=None, subdomains_cycle=<itertools.cycle object>), 'nlmaps-water': TileProvider(key='nlmaps-water', name='NLMaps Water', attribution='Kaartgegevens © Kadaster', html_attribution='Kaartgegevens © <a href="https://www.kadaster.nl/">Kadaster</a>', url_template='https://service.pdok.nl/brt/achtergrondkaart/wmts/v2_0/water/EPSG:3857/{z}/{x}/{y}.png', zoom_min=0, zoom_max=19, bounds=(3.37, 50.75, 7.21, 53.47), subdomains=None, subdomains_cycle=<itertools.cycle object>), 'openaip': TileProvider(key='openaip', name='OpenAIP', attribution='© OpenAIP', html_attribution='© <a href="https://www.openaip.net/">OpenAIP</a>', url_template='https://api.tiles.openaip.net/api/data/openaip/{z}/{x}/{y}.png', zoom_min=4, zoom_max=14, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'openfiremap': TileProvider(key='openfiremap', name='OpenFireMap', attribution='Map data: © OpenStreetMap contributors. Map style: © OpenFireMap (CC-BY-SA)', html_attribution='Map data: © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>. Map style: © <a href="http://www.openfiremap.org/">OpenFireMap</a> (<a href="https://creativecommons.org/licenses/by-sa/3.0/">CC-BY-SA</a>)', url_template='http://openfiremap.org/hytiles/{z}/{x}/{y}.png', zoom_min=0, zoom_max=19, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'openrailwaymap': TileProvider(key='openrailwaymap', name='OpenRailwayMap', attribution='Map data: © OpenStreetMap contributors. Map style: © OpenRailwayMap (CC-BY-SA)', html_attribution='Map data: © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>. Map style: © <a href="https://www.openrailwaymap.org/">OpenRailwayMap</a> (<a href="https://creativecommons.org/licenses/by-sa/3.0/">CC-BY-SA</a>)', url_template='https://{s}.tiles.openrailwaymap.org/standard/{z}/{x}/{y}.png', zoom_min=0, zoom_max=19, bounds=None, subdomains=['a', 'b', 'c'], subdomains_cycle=<itertools.cycle object>), 'openseamap': TileProvider(key='openseamap', name='OpenSeaMap', attribution='Map data: © OpenSeaMap contributors', html_attribution='Map data: © <a href="https://www.openseamap.org/">OpenSeaMap contributors</a>', url_template='https://tiles.openseamap.org/seamark/{z}/{x}/{y}.png', zoom_min=0, zoom_max=18, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'opensnowmap': TileProvider(key='opensnowmap', name='OpenSnowMap', attribution='Map data: © OpenStreetMap contributors. Overlay: © OpenSnowMap', html_attribution='Map data: © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>. Overlay: © <a href="https://www.opensnowmap.org/">OpenSnowMap</a>', url_template='https://tiles.opensnowmap.org/pistes/{z}/{x}/{y}.png', zoom_min=0, zoom_max=18, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'openstreetmap': TileProvider(key='openstreetmap', name='OpenStreetMap', attribution='Map data: © OpenStreetMap contributors', html_attribution='Map data: © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://tile.openstreetmap.org/{z}/{x}/{y}.png', zoom_min=0, zoom_max=19, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'openstreetmap-bzh': TileProvider(key='openstreetmap-bzh', name='OpenStreetMap BZH', attribution='Map data: © OpenStreetMap contributors. Tiles: © Breton OpenStreetMap Team', html_attribution='Map data: © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>. Tiles: © <a href="https://www.openstreetmap.bzh/">Breton OpenStreetMap Team</a>', url_template='https://tile.openstreetmap.bzh/br/{z}/{x}/{y}.png', zoom_min=0, zoom_max=19, bounds=(-5.4, 46.2, -0.7, 48.9), subdomains=None, subdomains_cycle=<itertools.cycle object>), 'openstreetmap-ch': TileProvider(key='openstreetmap-ch', name='OpenStreetMap CH', attribution='Map data: © OpenStreetMap contributors', html_attribution='Map data: © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://tile.osm.ch/switzerland/{z}/{x}/{y}.png', zoom_min=0, zoom_max=18, bounds=(5.140242, 45.398181, 11.47757, 48.230651), subdomains=None, subdomains_cycle=<itertools.cycle object>), 'openstreetmap-de': TileProvider(key='openstreetmap-de', name='OpenStreetMap DE', attribution='Map data: © OpenStreetMap contributors', html_attribution='Map data: © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://tile.openstreetmap.de/{z}/{x}/{y}.png', zoom_min=0, zoom_max=18, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'openstreetmap-france': TileProvider(key='openstreetmap-france', name='OpenStreetMap France', attribution='Map data: © OpenStreetMap contributors', html_attribution='Map data: © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://{s}.tile.openstreetmap.fr/osmfr/{z}/{x}/{y}.png', zoom_min=0, zoom_max=20, bounds=None, subdomains=['a', 'b', 'c'], subdomains_cycle=<itertools.cycle object>), 'openstreetmap-hot': TileProvider(key='openstreetmap-hot', name='OpenStreetMap HOT', attribution='Map data: © OpenStreetMap contributors. Tiles style: © Humanitarian OpenStreetMap Team', html_attribution='Map data: © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>. Tiles style: © <a href="https://www.hotosm.org/">Humanitarian OpenStreetMap Team</a>', url_template='https://{s}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png', zoom_min=0, zoom_max=19, bounds=None, subdomains=['a', 'b', 'c'], subdomains_cycle=<itertools.cycle object>), 'opentopomap': TileProvider(key='opentopomap', name='OpenTopoMap', attribution='Map data: © OpenStreetMap contributors, SRTM. Map style: © OpenTopoMap (CC-BY-SA)', html_attribution='Map data: © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>, <a href="https://www2.jpl.nasa.gov/srtm/">SRTM</a>. Map style: © <a href="https://opentopomap.org/">OpenTopoMap</a> (<a href="https://creativecommons.org/licenses/by-sa/3.0/">CC-BY-SA</a>)', url_template='https://{s}.tile.opentopomap.org/{z}/{x}/{y}.png', zoom_min=0, zoom_max=17, bounds=None, subdomains=['a', 'b', 'c'], subdomains_cycle=<itertools.cycle object>), 'opnvkarte': TileProvider(key='opnvkarte', name='OPNVKarte', attribution='Map data: © OpenStreetMap contributors. Map style: © ÖPNVKarte', html_attribution='Map data: © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>. Map style: © <a href="https://www.opnvkarte.de/">ÖPNVKarte</a>', url_template='https://tileprovider.memomaps.de/tilegen/{z}/{x}/{y}.png', zoom_min=0, zoom_max=18, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'safecast': TileProvider(key='safecast', name='SafeCast', attribution='Map data: © OpenStreetMap contributors. Map style: © SafeCast', html_attribution='Map data: © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>. Map style: © <a href="https://safecast.org/">SafeCast</a>', url_template='https://s3.amazonaws.com/te512.safecast.org/{z}/{x}/{y}.png', zoom_min=0, zoom_max=16, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'stadia-alidadesmooth': TileProvider(key='stadia-alidadesmooth', name='Stadia AlidadeSmooth', attribution='© Stadia Maps, © OpenMapTiles, © OpenStreetMap contributors', html_attribution='© <a href="https://stadiamaps.com/">Stadia Maps</a>, © <a href="https://openmaptiles.org/">OpenMapTiles</a>, © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://tiles.stadiamaps.com/tiles/alidade_smooth/{z}/{x}/{y}.png', zoom_min=0, zoom_max=20, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'stadia-alidasesatellite': TileProvider(key='stadia-alidasesatellite', name='Stadia AlidadeSatellite', attribution='© Stadia Maps, © OpenMapTiles, © OpenStreetMap contributors', html_attribution='© <a href="https://stadiamaps.com/">Stadia Maps</a>, © <a href="https://openmaptiles.org/">OpenMapTiles</a>, © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://tiles.stadiamaps.com/tiles/alidade_satellite/{z}/{x}/{y}.jpg', zoom_min=0, zoom_max=20, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'stadia-alidasesmoothdark': TileProvider(key='stadia-alidasesmoothdark', name='Stadia AlidadeSmoothDark', attribution='© Stadia Maps, © OpenMapTiles, © OpenStreetMap contributors', html_attribution='© <a href="https://stadiamaps.com/">Stadia Maps</a>, © <a href="https://openmaptiles.org/">OpenMapTiles</a>, © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://tiles.stadiamaps.com/tiles/alidade_smooth_dark/{z}/{x}/{y}.png', zoom_min=0, zoom_max=20, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'stadia-osmbright': TileProvider(key='stadia-osmbright', name='Stadia OSMBright', attribution='© Stadia Maps, © OpenMapTiles, © OpenStreetMap contributors', html_attribution='© <a href="https://stadiamaps.com/">Stadia Maps</a>, © <a href="https://openmaptiles.org/">OpenMapTiles</a>, © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://tiles.stadiamaps.com/tiles/osm_bright/{z}/{x}/{y}.png', zoom_min=0, zoom_max=20, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'stadia-outdoors': TileProvider(key='stadia-outdoors', name='Stadia Outdoors', attribution='© Stadia Maps, © OpenMapTiles, © OpenStreetMap contributors', html_attribution='© <a href="https://stadiamaps.com/">Stadia Maps</a>, © <a href="https://openmaptiles.org/">OpenMapTiles</a>, © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://tiles.stadiamaps.com/tiles/outdoors/{z}/{x}/{y}.png', zoom_min=0, zoom_max=20, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'stadia-stamenterrain': TileProvider(key='stadia-stamenterrain', name='Stadia StamenTerrain', attribution='Map tiles by Stamen Design, under CC BY 4.0. Data by OpenStreetMap, under ODbL', html_attribution='Map tiles by <a href="https://stamen.com/">Stamen Design</a>, under <a href="https://creativecommons.org/licenses/by/4.0/">CC BY 4.0</a>. Data by <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a>, under <a href="https://opendatacommons.org/licenses/odbl/">ODbL</a>', url_template='https://tiles.stadiamaps.com/tiles/stamen_terrain/{z}/{x}/{y}.png', zoom_min=0, zoom_max=18, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'stadia-stamenterrainbackground': TileProvider(key='stadia-stamenterrainbackground', name='Stadia StamenTerrainBackground', attribution='Map tiles by Stamen Design, under CC BY 4.0. Data by OpenStreetMap, under ODbL', html_attribution='Map tiles by <a href="https://stamen.com/">Stamen Design</a>, under <a href="https://creativecommons.org/licenses/by/4.0/">CC BY 4.0</a>. Data by <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a>, under <a href="https://opendatacommons.org/licenses/odbl/">ODbL</a>', url_template='https://tiles.stadiamaps.com/tiles/stamen_terrain_background/{z}/{x}/{y}.png', zoom_min=0, zoom_max=18, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'stadia-stamenterrainlabels': TileProvider(key='stadia-stamenterrainlabels', name='Stadia StamenTerrainLabels', attribution='Map tiles by Stamen Design, under CC BY 4.0. Data by OpenStreetMap, under ODbL', html_attribution='Map tiles by <a href="https://stamen.com/">Stamen Design</a>, under <a href="https://creativecommons.org/licenses/by/4.0/">CC BY 4.0</a>. Data by <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a>, under <a href="https://opendatacommons.org/licenses/odbl/">ODbL</a>', url_template='https://tiles.stadiamaps.com/tiles/stamen_terrain_labels/{z}/{x}/{y}.png', zoom_min=0, zoom_max=18, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'stadia-stamenterrainlines': TileProvider(key='stadia-stamenterrainlines', name='Stadia StamenTerrainLines', attribution='Map tiles by Stamen Design, under CC BY 4.0. Data by OpenStreetMap, under ODbL', html_attribution='Map tiles by <a href="https://stamen.com/">Stamen Design</a>, under <a href="https://creativecommons.org/licenses/by/4.0/">CC BY 4.0</a>. Data by <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a>, under <a href="https://opendatacommons.org/licenses/odbl/">ODbL</a>', url_template='https://tiles.stadiamaps.com/tiles/stamen_terrain_lines/{z}/{x}/{y}.png', zoom_min=0, zoom_max=18, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'stadia-stamentoner': TileProvider(key='stadia-stamentoner', name='Stadia StamenToner', attribution='Map tiles by Stamen Design, under CC BY 4.0. Data by OpenStreetMap, under ODbL', html_attribution='Map tiles by <a href="https://stamen.com/">Stamen Design</a>, under <a href="https://creativecommons.org/licenses/by/4.0/">CC BY 4.0</a>. Data by <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a>, under <a href="https://opendatacommons.org/licenses/odbl/">ODbL</a>', url_template='https://tiles.stadiamaps.com/tiles/stamen_toner/{z}/{x}/{y}.png', zoom_min=0, zoom_max=20, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'stadia-stamentonerbackground': TileProvider(key='stadia-stamentonerbackground', name='Stadia StamenTonerBackground', attribution='Map tiles by Stamen Design, under CC BY 4.0. Data by OpenStreetMap, under ODbL', html_attribution='Map tiles by <a href="https://stamen.com/">Stamen Design</a>, under <a href="https://creativecommons.org/licenses/by/4.0/">CC BY 4.0</a>. Data by <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a>, under <a href="https://opendatacommons.org/licenses/odbl/">ODbL</a>', url_template='https://tiles.stadiamaps.com/tiles/stamen_toner_background/{z}/{x}/{y}.png', zoom_min=0, zoom_max=20, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'stadia-stamentonerlabels': TileProvider(key='stadia-stamentonerlabels', name='Stadia StamenTonerLabels', attribution='Map tiles by Stamen Design, under CC BY 4.0. Data by OpenStreetMap, under ODbL', html_attribution='Map tiles by <a href="https://stamen.com/">Stamen Design</a>, under <a href="https://creativecommons.org/licenses/by/4.0/">CC BY 4.0</a>. Data by <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a>, under <a href="https://opendatacommons.org/licenses/odbl/">ODbL</a>', url_template='https://tiles.stadiamaps.com/tiles/stamen_toner_labels/{z}/{x}/{y}.png', zoom_min=0, zoom_max=20, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'stadia-stamentonerlines': TileProvider(key='stadia-stamentonerlines', name='Stadia StamenTonerLines', attribution='Map tiles by Stamen Design, under CC BY 4.0. Data by OpenStreetMap, under ODbL', html_attribution='Map tiles by <a href="https://stamen.com/">Stamen Design</a>, under <a href="https://creativecommons.org/licenses/by/4.0/">CC BY 4.0</a>. Data by <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a>, under <a href="https://opendatacommons.org/licenses/odbl/">ODbL</a>', url_template='https://tiles.stadiamaps.com/tiles/stamen_toner_lines/{z}/{x}/{y}.png', zoom_min=0, zoom_max=20, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'stadia-stamentonerlite': TileProvider(key='stadia-stamentonerlite', name='Stadia StamenTonerLite', attribution='Map tiles by Stamen Design, under CC BY 4.0. Data by OpenStreetMap, under ODbL', html_attribution='Map tiles by <a href="https://stamen.com/">Stamen Design</a>, under <a href="https://creativecommons.org/licenses/by/4.0/">CC BY 4.0</a>. Data by <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a>, under <a href="https://opendatacommons.org/licenses/odbl/">ODbL</a>', url_template='https://tiles.stadiamaps.com/tiles/stamen_toner_lite/{z}/{x}/{y}.png', zoom_min=0, zoom_max=20, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'stadia-stamenwatercolor': TileProvider(key='stadia-stamenwatercolor', name='Stadia StamenWatercolor', attribution='Map tiles by Stamen Design, under CC BY 4.0. Data by OpenStreetMap, under ODbL', html_attribution='Map tiles by <a href="https://stamen.com/">Stamen Design</a>, under <a href="https://creativecommons.org/licenses/by/4.0/">CC BY 4.0</a>. Data by <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a>, under <a href="https://opendatacommons.org/licenses/odbl/">ODbL</a>', url_template='https://tiles.stadiamaps.com/tiles/stamen_watercolor/{z}/{x}/{y}.jpg', zoom_min=0, zoom_max=16, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'swissfederalgeoportal-nationalmapcolor': TileProvider(key='swissfederalgeoportal-nationalmapcolor', name='SwissFederalGeoportal NationalMapColor', attribution='© swisstopo', html_attribution='© <a href="https://www.swisstopo.admin.ch/">swisstopo</a>', url_template='https://wmts.geo.admin.ch/1.0.0/ch.swisstopo.pixelkarte-farbe/default/current/3857/{z}/{x}/{y}.jpeg', zoom_min=0, zoom_max=18, bounds=(5.140242, 45.398181, 11.47757, 48.230651), subdomains=None, subdomains_cycle=<itertools.cycle object>), 'swissfederalgeoportal-nationalmapgrey': TileProvider(key='swissfederalgeoportal-nationalmapgrey', name='SwissFederalGeoportal NationalMapGrey', attribution='© swisstopo', html_attribution='© <a href="https://www.swisstopo.admin.ch/">swisstopo</a>', url_template='https://wmts.geo.admin.ch/1.0.0/ch.swisstopo.pixelkarte-grau/default/current/3857/{z}/{x}/{y}.jpeg', zoom_min=0, zoom_max=18, bounds=(5.140242, 45.398181, 11.47757, 48.230651), subdomains=None, subdomains_cycle=<itertools.cycle object>), 'swissfederalgeoportal-swissimage': TileProvider(key='swissfederalgeoportal-swissimage', name='SwissFederalGeoportal SWISSIMAGE', attribution='© swisstopo', html_attribution='© <a href="https://www.swisstopo.admin.ch/">swisstopo</a>', url_template='https://wmts.geo.admin.ch/1.0.0/ch.swisstopo.swissimage/default/current/3857/{z}/{x}/{y}.jpeg', zoom_min=0, zoom_max=20, bounds=(5.140242, 45.398181, 11.47757, 48.230651), subdomains=None, subdomains_cycle=<itertools.cycle object>), 'thunderforest-atlas': TileProvider(key='thunderforest-atlas', name='Thunderforest Atlas', attribution='Maps © Thunderforest, Data © OpenStreetMap contributors', html_attribution='Maps © <a href="https://www.thunderforest.com/">Thunderforest</a>, Data © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://{s}.tile.thunderforest.com/atlas/{z}/{x}/{y}.png?apikey={a}', zoom_min=0, zoom_max=22, bounds=None, subdomains=['a', 'b', 'c'], subdomains_cycle=<itertools.cycle object>), 'thunderforest-landscape': TileProvider(key='thunderforest-landscape', name='Thunderforest Landscape', attribution='Maps © Thunderforest, Data © OpenStreetMap contributors', html_attribution='Maps © <a href="https://www.thunderforest.com/">Thunderforest</a>, Data © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://{s}.tile.thunderforest.com/landscape/{z}/{x}/{y}.png?apikey={a}', zoom_min=0, zoom_max=22, bounds=None, subdomains=['a', 'b', 'c'], subdomains_cycle=<itertools.cycle object>), 'thunderforest-mobileatlas': TileProvider(key='thunderforest-mobileatlas', name='Thunderforest MobileAtlas', attribution='Maps © Thunderforest, Data © OpenStreetMap contributors', html_attribution='Maps © <a href="https://www.thunderforest.com/">Thunderforest</a>, Data © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://{s}.tile.thunderforest.com/mobile-atlas/{z}/{x}/{y}.png?apikey={a}', zoom_min=0, zoom_max=22, bounds=None, subdomains=['a', 'b', 'c'], subdomains_cycle=<itertools.cycle object>), 'thunderforest-neighbourhood': TileProvider(key='thunderforest-neighbourhood', name='Thunderforest Neighbourhood', attribution='Maps © Thunderforest, Data © OpenStreetMap contributors', html_attribution='Maps © <a href="https://www.thunderforest.com/">Thunderforest</a>, Data © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://{s}.tile.thunderforest.com/neighbourhood/{z}/{x}/{y}.png?apikey={a}', zoom_min=0, zoom_max=22, bounds=None, subdomains=['a', 'b', 'c'], subdomains_cycle=<itertools.cycle object>), 'thunderforest-opencyclemap': TileProvider(key='thunderforest-opencyclemap', name='Thunderforest OpenCycleMap', attribution='Maps © Thunderforest, Data © OpenStreetMap contributors', html_attribution='Maps © <a href="https://www.thunderforest.com/">Thunderforest</a>, Data © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://{s}.tile.thunderforest.com/cycle/{z}/{x}/{y}.png?apikey={a}', zoom_min=0, zoom_max=22, bounds=None, subdomains=['a', 'b', 'c'], subdomains_cycle=<itertools.cycle object>), 'thunderforest-outdoors': TileProvider(key='thunderforest-outdoors', name='Thunderforest Outdoors', attribution='Maps © Thunderforest, Data © OpenStreetMap contributors', html_attribution='Maps © <a href="https://www.thunderforest.com/">Thunderforest</a>, Data © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://{s}.tile.thunderforest.com/outdoors/{z}/{x}/{y}.png?apikey={a}', zoom_min=0, zoom_max=22, bounds=None, subdomains=['a', 'b', 'c'], subdomains_cycle=<itertools.cycle object>), 'thunderforest-pioneer': TileProvider(key='thunderforest-pioneer', name='Thunderforest Pioneer', attribution='Maps © Thunderforest, Data © OpenStreetMap contributors', html_attribution='Maps © <a href="https://www.thunderforest.com/">Thunderforest</a>, Data © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://{s}.tile.thunderforest.com/pioneer/{z}/{x}/{y}.png?apikey={a}', zoom_min=0, zoom_max=22, bounds=None, subdomains=['a', 'b', 'c'], subdomains_cycle=<itertools.cycle object>), 'thunderforest-spinalmap': TileProvider(key='thunderforest-spinalmap', name='Thunderforest SpinalMap', attribution='Maps © Thunderforest, Data © OpenStreetMap contributors', html_attribution='Maps © <a href="https://www.thunderforest.com/">Thunderforest</a>, Data © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://{s}.tile.thunderforest.com/spinal-map/{z}/{x}/{y}.png?apikey={a}', zoom_min=0, zoom_max=22, bounds=None, subdomains=['a', 'b', 'c'], subdomains_cycle=<itertools.cycle object>), 'thunderforest-transport': TileProvider(key='thunderforest-transport', name='Thunderforest Transport', attribution='Maps © Thunderforest, Data © OpenStreetMap contributors', html_attribution='Maps © <a href="https://www.thunderforest.com/">Thunderforest</a>, Data © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://{s}.tile.thunderforest.com/transport/{z}/{x}/{y}.png?apikey={a}', zoom_min=0, zoom_max=22, bounds=None, subdomains=['a', 'b', 'c'], subdomains_cycle=<itertools.cycle object>), 'thunderforest-transport-dark': TileProvider(key='thunderforest-transport-dark', name='Thunderforest Transport Dark', attribution='Maps © Thunderforest, Data © OpenStreetMap contributors', html_attribution='Maps © <a href="https://www.thunderforest.com/">Thunderforest</a>, Data © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://{s}.tile.thunderforest.com/transport-dark/{z}/{x}/{y}.png?apikey={a}', zoom_min=0, zoom_max=22, bounds=None, subdomains=['a', 'b', 'c'], subdomains_cycle=<itertools.cycle object>), 'tomtom-basic': TileProvider(key='tomtom-basic', name='TomTom Basic', attribution='© TomTom', html_attribution='© <a href="https://tomtom.com/">TomTom</a>', url_template='https://{s}.api.tomtom.com/map/1/tile/basic/main/{z}/{x}/{y}.png?key={a}', zoom_min=0, zoom_max=22, bounds=None, subdomains=['a', 'b', 'c', 'd'], subdomains_cycle=<itertools.cycle object>), 'tomtom-hybrid': TileProvider(key='tomtom-hybrid', name='TomTom Hybrid', attribution='© TomTom', html_attribution='© <a href="https://tomtom.com/">TomTom</a>', url_template='https://{s}.api.tomtom.com/map/1/tile/hybrid/main/{z}/{x}/{y}.png?key={a}', zoom_min=0, zoom_max=22, bounds=None, subdomains=['a', 'b', 'c', 'd'], subdomains_cycle=<itertools.cycle object>), 'tomtom-labels': TileProvider(key='tomtom-labels', name='TomTom Labels', attribution='© TomTom', html_attribution='© <a href="https://tomtom.com/">TomTom</a>', url_template='https://{s}.api.tomtom.com/map/1/tile/labels/main/{z}/{x}/{y}.png?key={a}', zoom_min=0, zoom_max=22, bounds=None, subdomains=['a', 'b', 'c', 'd'], subdomains_cycle=<itertools.cycle object>), 'usgs-usimagery': TileProvider(key='usgs-usimagery', name='USGS USImagery', attribution='Tiles courtesy of the U.S. Geological Survey', html_attribution='Tiles courtesy of the <a href="https://usgs.gov/">U.S. Geological Survey</a>', url_template='https://basemap.nationalmap.gov/arcgis/rest/services/USGSImageryOnly/MapProvider/tile/{z}/{y}/{x}', zoom_min=0, zoom_max=20, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'usgs-usimagerytopo': TileProvider(key='usgs-usimagerytopo', name='USGS USImageryTopo', attribution='Tiles courtesy of the U.S. Geological Survey', html_attribution='Tiles courtesy of the <a href="https://usgs.gov/">U.S. Geological Survey</a>', url_template='https://basemap.nationalmap.gov/arcgis/rest/services/USGSImageryTopo/MapProvider/tile/{z}/{y}/{x}', zoom_min=0, zoom_max=20, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'usgs-ustopo': TileProvider(key='usgs-ustopo', name='USGS USTopo', attribution='Tiles courtesy of the U.S. Geological Survey', html_attribution='Tiles courtesy of the <a href="https://usgs.gov/">U.S. Geological Survey</a>', url_template='https://basemap.nationalmap.gov/arcgis/rest/services/USGSTopo/MapProvider/tile/{z}/{y}/{x}', zoom_min=0, zoom_max=20, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'waymarkedtrails-cycling': TileProvider(key='waymarkedtrails-cycling', name='Waymarked Trails Cycling', attribution='Map data: © OpenStreetMap contributors. Overlay: © Waymarked Trails', html_attribution='Map data: © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>. Overlay: © <a href="https://cycling.waymarkedtrails.org/">Waymarked Trails</a>', url_template='https://tile.waymarkedtrails.org/cycling/{z}/{x}/{y}.png', zoom_min=0, zoom_max=18, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'waymarkedtrails-hiking': TileProvider(key='waymarkedtrails-hiking', name='Waymarked Trails Hiking', attribution='Map data: © OpenStreetMap contributors. Overlay: © Waymarked Trails', html_attribution='Map data: © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>. Overlay: © <a href="https://hiking.waymarkedtrails.org/">Waymarked Trails</a>', url_template='https://tile.waymarkedtrails.org/hiking/{z}/{x}/{y}.png', zoom_min=0, zoom_max=18, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'waymarkedtrails-mtb': TileProvider(key='waymarkedtrails-mtb', name='Waymarked Trails MTB', attribution='Map data: © OpenStreetMap contributors. Overlay: © Waymarked Trails', html_attribution='Map data: © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>. Overlay: © <a href="https://mtb.waymarkedtrails.org/">Waymarked Trails</a>', url_template='https://tile.waymarkedtrails.org/mtb/{z}/{x}/{y}.png', zoom_min=0, zoom_max=18, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'waymarkedtrails-riding': TileProvider(key='waymarkedtrails-riding', name='Waymarked Trails Riding', attribution='Map data: © OpenStreetMap contributors. Overlay: © Waymarked Trails', html_attribution='Map data: © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>. Overlay: © <a href="https://riding.waymarkedtrails.org/">Waymarked Trails</a>', url_template='https://tile.waymarkedtrails.org/riding/{z}/{x}/{y}.png', zoom_min=0, zoom_max=18, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'waymarkedtrails-skating': TileProvider(key='waymarkedtrails-skating', name='Waymarked Trails Skating', attribution='Map data: © OpenStreetMap contributors. Overlay: © Waymarked Trails', html_attribution='Map data: © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>. Overlay: © <a href="https://skating.waymarkedtrails.org/">Waymarked Trails</a>', url_template='https://tile.waymarkedtrails.org/skating/{z}/{x}/{y}.png', zoom_min=0, zoom_max=18, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'waymarkedtrails-slopes': TileProvider(key='waymarkedtrails-slopes', name='Waymarked Trails Slopes', attribution='Map data: © OpenStreetMap contributors. Overlay: © Waymarked Trails', html_attribution='Map data: © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>. Overlay: © <a href="https://slopes.waymarkedtrails.org/">Waymarked Trails</a>', url_template='https://tile.waymarkedtrails.org/slopes/{z}/{x}/{y}.png', zoom_min=0, zoom_max=18, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), 'wikimedia': TileProvider(key='wikimedia', name='Wikimedia', attribution='Map data: © OpenStreetMap contributors. Map style: © Wikimedia Foundation', html_attribution='Map data: © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>. Map style: © <a href="https://foundation.wikimedia.org/">Wikimedia Foundation</a>', url_template='https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}.png', zoom_min=0, zoom_max=19, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>)}

Map of tile provider keys to TileProvider instances.

papermap.tile_providers.TILE_PROVIDERS: list[TileProvider] = [TileProvider(key='openstreetmap', name='OpenStreetMap', attribution='Map data: © OpenStreetMap contributors', html_attribution='Map data: © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://tile.openstreetmap.org/{z}/{x}/{y}.png', zoom_min=0, zoom_max=19, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='openstreetmap-de', name='OpenStreetMap DE', attribution='Map data: © OpenStreetMap contributors', html_attribution='Map data: © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://tile.openstreetmap.de/{z}/{x}/{y}.png', zoom_min=0, zoom_max=18, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='openstreetmap-ch', name='OpenStreetMap CH', attribution='Map data: © OpenStreetMap contributors', html_attribution='Map data: © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://tile.osm.ch/switzerland/{z}/{x}/{y}.png', zoom_min=0, zoom_max=18, bounds=(5.140242, 45.398181, 11.47757, 48.230651), subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='openstreetmap-france', name='OpenStreetMap France', attribution='Map data: © OpenStreetMap contributors', html_attribution='Map data: © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://{s}.tile.openstreetmap.fr/osmfr/{z}/{x}/{y}.png', zoom_min=0, zoom_max=20, bounds=None, subdomains=['a', 'b', 'c'], subdomains_cycle=<itertools.cycle object>), TileProvider(key='openstreetmap-hot', name='OpenStreetMap HOT', attribution='Map data: © OpenStreetMap contributors. Tiles style: © Humanitarian OpenStreetMap Team', html_attribution='Map data: © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>. Tiles style: © <a href="https://www.hotosm.org/">Humanitarian OpenStreetMap Team</a>', url_template='https://{s}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png', zoom_min=0, zoom_max=19, bounds=None, subdomains=['a', 'b', 'c'], subdomains_cycle=<itertools.cycle object>), TileProvider(key='openstreetmap-bzh', name='OpenStreetMap BZH', attribution='Map data: © OpenStreetMap contributors. Tiles: © Breton OpenStreetMap Team', html_attribution='Map data: © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>. Tiles: © <a href="https://www.openstreetmap.bzh/">Breton OpenStreetMap Team</a>', url_template='https://tile.openstreetmap.bzh/br/{z}/{x}/{y}.png', zoom_min=0, zoom_max=19, bounds=(-5.4, 46.2, -0.7, 48.9), subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='opentopomap', name='OpenTopoMap', attribution='Map data: © OpenStreetMap contributors, SRTM. Map style: © OpenTopoMap (CC-BY-SA)', html_attribution='Map data: © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>, <a href="https://www2.jpl.nasa.gov/srtm/">SRTM</a>. Map style: © <a href="https://opentopomap.org/">OpenTopoMap</a> (<a href="https://creativecommons.org/licenses/by-sa/3.0/">CC-BY-SA</a>)', url_template='https://{s}.tile.opentopomap.org/{z}/{x}/{y}.png', zoom_min=0, zoom_max=17, bounds=None, subdomains=['a', 'b', 'c'], subdomains_cycle=<itertools.cycle object>), TileProvider(key='openseamap', name='OpenSeaMap', attribution='Map data: © OpenSeaMap contributors', html_attribution='Map data: © <a href="https://www.openseamap.org/">OpenSeaMap contributors</a>', url_template='https://tiles.openseamap.org/seamark/{z}/{x}/{y}.png', zoom_min=0, zoom_max=18, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='thunderforest-opencyclemap', name='Thunderforest OpenCycleMap', attribution='Maps © Thunderforest, Data © OpenStreetMap contributors', html_attribution='Maps © <a href="https://www.thunderforest.com/">Thunderforest</a>, Data © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://{s}.tile.thunderforest.com/cycle/{z}/{x}/{y}.png?apikey={a}', zoom_min=0, zoom_max=22, bounds=None, subdomains=['a', 'b', 'c'], subdomains_cycle=<itertools.cycle object>), TileProvider(key='thunderforest-transport', name='Thunderforest Transport', attribution='Maps © Thunderforest, Data © OpenStreetMap contributors', html_attribution='Maps © <a href="https://www.thunderforest.com/">Thunderforest</a>, Data © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://{s}.tile.thunderforest.com/transport/{z}/{x}/{y}.png?apikey={a}', zoom_min=0, zoom_max=22, bounds=None, subdomains=['a', 'b', 'c'], subdomains_cycle=<itertools.cycle object>), TileProvider(key='thunderforest-transport-dark', name='Thunderforest Transport Dark', attribution='Maps © Thunderforest, Data © OpenStreetMap contributors', html_attribution='Maps © <a href="https://www.thunderforest.com/">Thunderforest</a>, Data © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://{s}.tile.thunderforest.com/transport-dark/{z}/{x}/{y}.png?apikey={a}', zoom_min=0, zoom_max=22, bounds=None, subdomains=['a', 'b', 'c'], subdomains_cycle=<itertools.cycle object>), TileProvider(key='thunderforest-spinalmap', name='Thunderforest SpinalMap', attribution='Maps © Thunderforest, Data © OpenStreetMap contributors', html_attribution='Maps © <a href="https://www.thunderforest.com/">Thunderforest</a>, Data © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://{s}.tile.thunderforest.com/spinal-map/{z}/{x}/{y}.png?apikey={a}', zoom_min=0, zoom_max=22, bounds=None, subdomains=['a', 'b', 'c'], subdomains_cycle=<itertools.cycle object>), TileProvider(key='thunderforest-landscape', name='Thunderforest Landscape', attribution='Maps © Thunderforest, Data © OpenStreetMap contributors', html_attribution='Maps © <a href="https://www.thunderforest.com/">Thunderforest</a>, Data © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://{s}.tile.thunderforest.com/landscape/{z}/{x}/{y}.png?apikey={a}', zoom_min=0, zoom_max=22, bounds=None, subdomains=['a', 'b', 'c'], subdomains_cycle=<itertools.cycle object>), TileProvider(key='thunderforest-outdoors', name='Thunderforest Outdoors', attribution='Maps © Thunderforest, Data © OpenStreetMap contributors', html_attribution='Maps © <a href="https://www.thunderforest.com/">Thunderforest</a>, Data © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://{s}.tile.thunderforest.com/outdoors/{z}/{x}/{y}.png?apikey={a}', zoom_min=0, zoom_max=22, bounds=None, subdomains=['a', 'b', 'c'], subdomains_cycle=<itertools.cycle object>), TileProvider(key='thunderforest-pioneer', name='Thunderforest Pioneer', attribution='Maps © Thunderforest, Data © OpenStreetMap contributors', html_attribution='Maps © <a href="https://www.thunderforest.com/">Thunderforest</a>, Data © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://{s}.tile.thunderforest.com/pioneer/{z}/{x}/{y}.png?apikey={a}', zoom_min=0, zoom_max=22, bounds=None, subdomains=['a', 'b', 'c'], subdomains_cycle=<itertools.cycle object>), TileProvider(key='thunderforest-mobileatlas', name='Thunderforest MobileAtlas', attribution='Maps © Thunderforest, Data © OpenStreetMap contributors', html_attribution='Maps © <a href="https://www.thunderforest.com/">Thunderforest</a>, Data © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://{s}.tile.thunderforest.com/mobile-atlas/{z}/{x}/{y}.png?apikey={a}', zoom_min=0, zoom_max=22, bounds=None, subdomains=['a', 'b', 'c'], subdomains_cycle=<itertools.cycle object>), TileProvider(key='thunderforest-neighbourhood', name='Thunderforest Neighbourhood', attribution='Maps © Thunderforest, Data © OpenStreetMap contributors', html_attribution='Maps © <a href="https://www.thunderforest.com/">Thunderforest</a>, Data © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://{s}.tile.thunderforest.com/neighbourhood/{z}/{x}/{y}.png?apikey={a}', zoom_min=0, zoom_max=22, bounds=None, subdomains=['a', 'b', 'c'], subdomains_cycle=<itertools.cycle object>), TileProvider(key='thunderforest-atlas', name='Thunderforest Atlas', attribution='Maps © Thunderforest, Data © OpenStreetMap contributors', html_attribution='Maps © <a href="https://www.thunderforest.com/">Thunderforest</a>, Data © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://{s}.tile.thunderforest.com/atlas/{z}/{x}/{y}.png?apikey={a}', zoom_min=0, zoom_max=22, bounds=None, subdomains=['a', 'b', 'c'], subdomains_cycle=<itertools.cycle object>), TileProvider(key='esri-worldstreetmap', name='Esri WorldStreetMap', attribution='Tiles © Esri', html_attribution='Tiles © <a href="https://www.esri.com/">Esri</a>', url_template='https://provider.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapProvider/tile/{z}/{y}/{x}', zoom_min=0, zoom_max=17, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='esri-delorme', name='Esri DeLorme', attribution='Tiles © Esri DeLorme', html_attribution='Tiles © <a href="https://www.esri.com/">Esri</a> DeLorme', url_template='https://provider.arcgisonline.com/ArcGIS/rest/services/Specialty/DeLorme_World_Base_Map/MapProvider/tile/{z}/{y}/{x}', zoom_min=0, zoom_max=11, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='esri-worldtopomap', name='Esri WorldTopoMap', attribution='Tiles © Esri', html_attribution='Tiles © <a href="https://www.esri.com/">Esri</a>', url_template='https://provider.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapProvider/tile/{z}/{y}/{x}', zoom_min=0, zoom_max=19, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='esri-worldimagery', name='Esri WorldImagery', attribution='Tiles © Esri Source: Esri, i-cubed, USDA, USGS, AEX, GeoEye, Getmapping, Aerogrid, IGN, IGP, UPR-EGP, and the GIS User Community', html_attribution='Tiles © <a href="https://www.esri.com/">Esri</a> Source: Esri, i-cubed, USDA, USGS, AEX, GeoEye, Getmapping, Aerogrid, IGN, IGP, UPR-EGP, and the GIS User Community', url_template='https://provider.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapProvider/tile/{z}/{y}/{x}', zoom_min=0, zoom_max=19, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='esri-worldterrain', name='Esri WorldTerrain', attribution='Tiles © Esri Source: USGS, Esri, TANA, DeLorme, and NPS', html_attribution='Tiles © <a href="https://www.esri.com/">Esri</a> Source: USGS, Esri, TANA, DeLorme, and NPS', url_template='https://provider.arcgisonline.com/ArcGIS/rest/services/World_Terrain_Base/MapProvider/tile/{z}/{y}/{x}', zoom_min=0, zoom_max=13, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='esri-worldshadedrelief', name='Esri WorldShadedRelief', attribution='Tiles © Esri Source: Esri', html_attribution='Tiles © <a href="https://www.esri.com/">Esri</a> Source: Esri', url_template='https://provider.arcgisonline.com/ArcGIS/rest/services/World_Shaded_Relief/MapProvider/tile/{z}/{y}/{x}', zoom_min=0, zoom_max=13, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='esri-worldphysical', name='Esri WorldPhysical', attribution='Tiles © Esri Source: US National Park Service', html_attribution='Tiles © <a href="https://www.esri.com/">Esri</a> Source: US National Park Service', url_template='https://provider.arcgisonline.com/ArcGIS/rest/services/World_Physical_Map/MapProvider/tile/{z}/{y}/{x}', zoom_min=0, zoom_max=8, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='esri-oceanbasemap', name='Esri OceanBasemap', attribution='Tiles © Esri Source: Esri, GEBCO, NOAA, National Geographic, DeLorme, HERE, Geonames.org, and other contributors', html_attribution='Tiles © <a href="https://www.esri.com/">Esri</a> Source: Esri, GEBCO, NOAA, National Geographic, DeLorme, HERE, Geonames.org, and other contributors', url_template='https://provider.arcgisonline.com/ArcGIS/rest/services/Ocean/World_Ocean_Base/MapProvider/tile/{z}/{y}/{x}', zoom_min=0, zoom_max=13, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='esri-natgeoworldmap', name='Esri NatGeoWorldMap', attribution='Tiles © Esri Source: National Geographic, Esri, DeLorme, HERE, UNEP-WCMC, USGS, NASA, ESA, METI, NRCAN, GEBCO, NOAA, increment P Corp.', html_attribution='Tiles © <a href="https://www.esri.com/">Esri</a> Source: National Geographic, Esri, DeLorme, HERE, UNEP-WCMC, USGS, NASA, ESA, METI, NRCAN, GEBCO, NOAA, increment P Corp.', url_template='https://provider.arcgisonline.com/ArcGIS/rest/services/NatGeo_World_Map/MapProvider/tile/{z}/{y}/{x}', zoom_min=0, zoom_max=16, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='esri-worldgraycanvas', name='Esri WorldGrayCanvas', attribution='Tiles © Esri', html_attribution='Tiles © <a href="https://www.esri.com/">Esri</a>', url_template='https://provider.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Light_Gray_Base/MapProvider/tile/{z}/{y}/{x}', zoom_min=0, zoom_max=16, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='stadia-alidadesmooth', name='Stadia AlidadeSmooth', attribution='© Stadia Maps, © OpenMapTiles, © OpenStreetMap contributors', html_attribution='© <a href="https://stadiamaps.com/">Stadia Maps</a>, © <a href="https://openmaptiles.org/">OpenMapTiles</a>, © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://tiles.stadiamaps.com/tiles/alidade_smooth/{z}/{x}/{y}.png', zoom_min=0, zoom_max=20, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='stadia-alidasesmoothdark', name='Stadia AlidadeSmoothDark', attribution='© Stadia Maps, © OpenMapTiles, © OpenStreetMap contributors', html_attribution='© <a href="https://stadiamaps.com/">Stadia Maps</a>, © <a href="https://openmaptiles.org/">OpenMapTiles</a>, © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://tiles.stadiamaps.com/tiles/alidade_smooth_dark/{z}/{x}/{y}.png', zoom_min=0, zoom_max=20, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='stadia-alidasesatellite', name='Stadia AlidadeSatellite', attribution='© Stadia Maps, © OpenMapTiles, © OpenStreetMap contributors', html_attribution='© <a href="https://stadiamaps.com/">Stadia Maps</a>, © <a href="https://openmaptiles.org/">OpenMapTiles</a>, © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://tiles.stadiamaps.com/tiles/alidade_satellite/{z}/{x}/{y}.jpg', zoom_min=0, zoom_max=20, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='stadia-osmbright', name='Stadia OSMBright', attribution='© Stadia Maps, © OpenMapTiles, © OpenStreetMap contributors', html_attribution='© <a href="https://stadiamaps.com/">Stadia Maps</a>, © <a href="https://openmaptiles.org/">OpenMapTiles</a>, © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://tiles.stadiamaps.com/tiles/osm_bright/{z}/{x}/{y}.png', zoom_min=0, zoom_max=20, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='stadia-outdoors', name='Stadia Outdoors', attribution='© Stadia Maps, © OpenMapTiles, © OpenStreetMap contributors', html_attribution='© <a href="https://stadiamaps.com/">Stadia Maps</a>, © <a href="https://openmaptiles.org/">OpenMapTiles</a>, © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://tiles.stadiamaps.com/tiles/outdoors/{z}/{x}/{y}.png', zoom_min=0, zoom_max=20, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='stadia-stamentoner', name='Stadia StamenToner', attribution='Map tiles by Stamen Design, under CC BY 4.0. Data by OpenStreetMap, under ODbL', html_attribution='Map tiles by <a href="https://stamen.com/">Stamen Design</a>, under <a href="https://creativecommons.org/licenses/by/4.0/">CC BY 4.0</a>. Data by <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a>, under <a href="https://opendatacommons.org/licenses/odbl/">ODbL</a>', url_template='https://tiles.stadiamaps.com/tiles/stamen_toner/{z}/{x}/{y}.png', zoom_min=0, zoom_max=20, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='stadia-stamentonerbackground', name='Stadia StamenTonerBackground', attribution='Map tiles by Stamen Design, under CC BY 4.0. Data by OpenStreetMap, under ODbL', html_attribution='Map tiles by <a href="https://stamen.com/">Stamen Design</a>, under <a href="https://creativecommons.org/licenses/by/4.0/">CC BY 4.0</a>. Data by <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a>, under <a href="https://opendatacommons.org/licenses/odbl/">ODbL</a>', url_template='https://tiles.stadiamaps.com/tiles/stamen_toner_background/{z}/{x}/{y}.png', zoom_min=0, zoom_max=20, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='stadia-stamentonerlines', name='Stadia StamenTonerLines', attribution='Map tiles by Stamen Design, under CC BY 4.0. Data by OpenStreetMap, under ODbL', html_attribution='Map tiles by <a href="https://stamen.com/">Stamen Design</a>, under <a href="https://creativecommons.org/licenses/by/4.0/">CC BY 4.0</a>. Data by <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a>, under <a href="https://opendatacommons.org/licenses/odbl/">ODbL</a>', url_template='https://tiles.stadiamaps.com/tiles/stamen_toner_lines/{z}/{x}/{y}.png', zoom_min=0, zoom_max=20, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='stadia-stamentonerlabels', name='Stadia StamenTonerLabels', attribution='Map tiles by Stamen Design, under CC BY 4.0. Data by OpenStreetMap, under ODbL', html_attribution='Map tiles by <a href="https://stamen.com/">Stamen Design</a>, under <a href="https://creativecommons.org/licenses/by/4.0/">CC BY 4.0</a>. Data by <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a>, under <a href="https://opendatacommons.org/licenses/odbl/">ODbL</a>', url_template='https://tiles.stadiamaps.com/tiles/stamen_toner_labels/{z}/{x}/{y}.png', zoom_min=0, zoom_max=20, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='stadia-stamentonerlite', name='Stadia StamenTonerLite', attribution='Map tiles by Stamen Design, under CC BY 4.0. Data by OpenStreetMap, under ODbL', html_attribution='Map tiles by <a href="https://stamen.com/">Stamen Design</a>, under <a href="https://creativecommons.org/licenses/by/4.0/">CC BY 4.0</a>. Data by <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a>, under <a href="https://opendatacommons.org/licenses/odbl/">ODbL</a>', url_template='https://tiles.stadiamaps.com/tiles/stamen_toner_lite/{z}/{x}/{y}.png', zoom_min=0, zoom_max=20, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='stadia-stamenwatercolor', name='Stadia StamenWatercolor', attribution='Map tiles by Stamen Design, under CC BY 4.0. Data by OpenStreetMap, under ODbL', html_attribution='Map tiles by <a href="https://stamen.com/">Stamen Design</a>, under <a href="https://creativecommons.org/licenses/by/4.0/">CC BY 4.0</a>. Data by <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a>, under <a href="https://opendatacommons.org/licenses/odbl/">ODbL</a>', url_template='https://tiles.stadiamaps.com/tiles/stamen_watercolor/{z}/{x}/{y}.jpg', zoom_min=0, zoom_max=16, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='stadia-stamenterrain', name='Stadia StamenTerrain', attribution='Map tiles by Stamen Design, under CC BY 4.0. Data by OpenStreetMap, under ODbL', html_attribution='Map tiles by <a href="https://stamen.com/">Stamen Design</a>, under <a href="https://creativecommons.org/licenses/by/4.0/">CC BY 4.0</a>. Data by <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a>, under <a href="https://opendatacommons.org/licenses/odbl/">ODbL</a>', url_template='https://tiles.stadiamaps.com/tiles/stamen_terrain/{z}/{x}/{y}.png', zoom_min=0, zoom_max=18, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='stadia-stamenterrainbackground', name='Stadia StamenTerrainBackground', attribution='Map tiles by Stamen Design, under CC BY 4.0. Data by OpenStreetMap, under ODbL', html_attribution='Map tiles by <a href="https://stamen.com/">Stamen Design</a>, under <a href="https://creativecommons.org/licenses/by/4.0/">CC BY 4.0</a>. Data by <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a>, under <a href="https://opendatacommons.org/licenses/odbl/">ODbL</a>', url_template='https://tiles.stadiamaps.com/tiles/stamen_terrain_background/{z}/{x}/{y}.png', zoom_min=0, zoom_max=18, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='stadia-stamenterrainlabels', name='Stadia StamenTerrainLabels', attribution='Map tiles by Stamen Design, under CC BY 4.0. Data by OpenStreetMap, under ODbL', html_attribution='Map tiles by <a href="https://stamen.com/">Stamen Design</a>, under <a href="https://creativecommons.org/licenses/by/4.0/">CC BY 4.0</a>. Data by <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a>, under <a href="https://opendatacommons.org/licenses/odbl/">ODbL</a>', url_template='https://tiles.stadiamaps.com/tiles/stamen_terrain_labels/{z}/{x}/{y}.png', zoom_min=0, zoom_max=18, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='stadia-stamenterrainlines', name='Stadia StamenTerrainLines', attribution='Map tiles by Stamen Design, under CC BY 4.0. Data by OpenStreetMap, under ODbL', html_attribution='Map tiles by <a href="https://stamen.com/">Stamen Design</a>, under <a href="https://creativecommons.org/licenses/by/4.0/">CC BY 4.0</a>. Data by <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a>, under <a href="https://opendatacommons.org/licenses/odbl/">ODbL</a>', url_template='https://tiles.stadiamaps.com/tiles/stamen_terrain_lines/{z}/{x}/{y}.png', zoom_min=0, zoom_max=18, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='cartodb-positron', name='CartoDB Positron', attribution='© OpenStreetMap contributors, © CARTO', html_attribution='© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>, © <a href="https://carto.com/attributions">CARTO</a>', url_template='https://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png', zoom_min=0, zoom_max=20, bounds=None, subdomains=['a', 'b', 'c', 'd'], subdomains_cycle=<itertools.cycle object>), TileProvider(key='cartodb-positronnolabels', name='CartoDB PositronNoLabels', attribution='© OpenStreetMap contributors, © CARTO', html_attribution='© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>, © <a href="https://carto.com/attributions">CARTO</a>', url_template='https://{s}.basemaps.cartocdn.com/light_nolabels/{z}/{x}/{y}.png', zoom_min=0, zoom_max=20, bounds=None, subdomains=['a', 'b', 'c', 'd'], subdomains_cycle=<itertools.cycle object>), TileProvider(key='cartodb-positrononlylabels', name='CartoDB PositronOnlyLabels', attribution='© OpenStreetMap contributors, © CARTO', html_attribution='© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>, © <a href="https://carto.com/attributions">CARTO</a>', url_template='https://{s}.basemaps.cartocdn.com/light_only_labels/{z}/{x}/{y}.png', zoom_min=0, zoom_max=20, bounds=None, subdomains=['a', 'b', 'c', 'd'], subdomains_cycle=<itertools.cycle object>), TileProvider(key='cartodb-darkmatter', name='CartoDB DarkMatter', attribution='© OpenStreetMap contributors, © CARTO', html_attribution='© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>, © <a href="https://carto.com/attributions">CARTO</a>', url_template='https://{s}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}.png', zoom_min=0, zoom_max=20, bounds=None, subdomains=['a', 'b', 'c', 'd'], subdomains_cycle=<itertools.cycle object>), TileProvider(key='cartodb-darkmatter-nolabels', name='CartoDB DarkMatterNoLabels', attribution='© OpenStreetMap contributors, © CARTO', html_attribution='© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>, © <a href="https://carto.com/attributions">CARTO</a>', url_template='https://{s}.basemaps.cartocdn.com/dark_nolabels/{z}/{x}/{y}.png', zoom_min=0, zoom_max=20, bounds=None, subdomains=['a', 'b', 'c', 'd'], subdomains_cycle=<itertools.cycle object>), TileProvider(key='cartodb-darkmatter-onlylabels', name='CartoDB DarkMatterOnlyLabels', attribution='© OpenStreetMap contributors, © CARTO', html_attribution='© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>, © <a href="https://carto.com/attributions">CARTO</a>', url_template='https://{s}.basemaps.cartocdn.com/dark_only_labels/{z}/{x}/{y}.png', zoom_min=0, zoom_max=20, bounds=None, subdomains=['a', 'b', 'c', 'd'], subdomains_cycle=<itertools.cycle object>), TileProvider(key='cartodb-voyager', name='CartoDB Voyager', attribution='© OpenStreetMap contributors, © CARTO', html_attribution='© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>, © <a href="https://carto.com/attributions">CARTO</a>', url_template='https://{s}.basemaps.cartocdn.com/rastertiles/voyager/{z}/{x}/{y}.png', zoom_min=0, zoom_max=20, bounds=None, subdomains=['a', 'b', 'c', 'd'], subdomains_cycle=<itertools.cycle object>), TileProvider(key='cartodb-voyager-nolabels', name='CartoDB VoyagerNoLabels', attribution='© OpenStreetMap contributors, © CARTO', html_attribution='© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>, © <a href="https://carto.com/attributions">CARTO</a>', url_template='https://{s}.basemaps.cartocdn.com/rastertiles/voyager_nolabels/{z}/{x}/{y}.png', zoom_min=0, zoom_max=20, bounds=None, subdomains=['a', 'b', 'c', 'd'], subdomains_cycle=<itertools.cycle object>), TileProvider(key='cartodb-voyager-onlylabels', name='CartoDB VoyagerOnlyLabels', attribution='© OpenStreetMap contributors, © CARTO', html_attribution='© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>, © <a href="https://carto.com/attributions">CARTO</a>', url_template='https://{s}.basemaps.cartocdn.com/rastertiles/voyager_only_labels/{z}/{x}/{y}.png', zoom_min=0, zoom_max=20, bounds=None, subdomains=['a', 'b', 'c', 'd'], subdomains_cycle=<itertools.cycle object>), TileProvider(key='cartodb-voyager-labelsunder', name='CartoDB VoyagerLabelsUnder', attribution='© OpenStreetMap contributors, © CARTO', html_attribution='© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>, © <a href="https://carto.com/attributions">CARTO</a>', url_template='https://{s}.basemaps.cartocdn.com/rastertiles/voyager_labels_under/{z}/{x}/{y}.png', zoom_min=0, zoom_max=20, bounds=None, subdomains=['a', 'b', 'c', 'd'], subdomains_cycle=<itertools.cycle object>), TileProvider(key='google-maps', name='Google Maps', attribution='Map data: © Google', html_attribution='Map data: © <a href="https://www.google.com/maps">Google</a>', url_template='https://mt{s}.google.com/vt/lyrs=m&x={x}&y={y}&z={z}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[0, 1, 2, 3], subdomains_cycle=<itertools.cycle object>), TileProvider(key='google-maps-satellite', name='Google Maps Satellite', attribution='Map data: © Google', html_attribution='Map data: © <a href="https://www.google.com/maps">Google</a>', url_template='https://mt{s}.google.com/vt/lyrs=s&x={x}&y={y}&z={z}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[0, 1, 2, 3], subdomains_cycle=<itertools.cycle object>), TileProvider(key='google-maps-satellite-hybrid', name='Google Maps Satellite Hybrid', attribution='Map data: © Google', html_attribution='Map data: © <a href="https://www.google.com/maps">Google</a>', url_template='https://mt{s}.google.com/vt/lyrs=y&x={x}&y={y}&z={z}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[0, 1, 2, 3], subdomains_cycle=<itertools.cycle object>), TileProvider(key='google-maps-terrain', name='Google Maps Terrain', attribution='Map data: © Google', html_attribution='Map data: © <a href="https://www.google.com/maps">Google</a>', url_template='https://mt{s}.google.com/vt/lyrs=t&x={x}&y={y}&z={z}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[0, 1, 2, 3], subdomains_cycle=<itertools.cycle object>), TileProvider(key='google-maps-terrain-hybrid', name='Google Maps Terrain Hybrid', attribution='Map data: © Google', html_attribution='Map data: © <a href="https://www.google.com/maps">Google</a>', url_template='https://mt{s}.google.com/vt/lyrs=p&x={x}&y={y}&z={z}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[0, 1, 2, 3], subdomains_cycle=<itertools.cycle object>), TileProvider(key='google-maps-roads', name='Google Maps Roads', attribution='Map data: © Google', html_attribution='Map data: © <a href="https://www.google.com/maps">Google</a>', url_template='https://mt{s}.google.com/vt/lyrs=h&x={x}&y={y}&z={z}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[0, 1, 2, 3], subdomains_cycle=<itertools.cycle object>), TileProvider(key='here-normalday', name='HERE normalDay', attribution='Map data: © HERE', html_attribution='Map data: © <a href="https://www.here.com/">HERE</a>', url_template='https://{s}.base.maps.ls.hereapi.com/maptile/2.1/maptile/newest/normal.day/{z}/{x}/{y}/256/png8?apiKey={a}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[1, 2, 3, 4], subdomains_cycle=<itertools.cycle object>), TileProvider(key='here-normaldaycustom', name='HERE normalDayCustom', attribution='Map data: © HERE', html_attribution='Map data: © <a href="https://www.here.com/">HERE</a>', url_template='https://{s}.base.maps.ls.hereapi.com/maptile/2.1/maptile/newest/normal.day.custom/{z}/{x}/{y}/256/png8?apiKey={a}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[1, 2, 3, 4], subdomains_cycle=<itertools.cycle object>), TileProvider(key='here-normaldaygrey', name='HERE normalDayGrey', attribution='Map data: © HERE', html_attribution='Map data: © <a href="https://www.here.com/">HERE</a>', url_template='https://{s}.base.maps.ls.hereapi.com/maptile/2.1/maptile/newest/normal.day.grey/{z}/{x}/{y}/256/png8?apiKey={a}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[1, 2, 3, 4], subdomains_cycle=<itertools.cycle object>), TileProvider(key='here-normaldaymobile', name='HERE normalDayMobile', attribution='Map data: © HERE', html_attribution='Map data: © <a href="https://www.here.com/">HERE</a>', url_template='https://{s}.base.maps.ls.hereapi.com/maptile/2.1/maptile/newest/normal.day.mobile/{z}/{x}/{y}/256/png8?apiKey={a}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[1, 2, 3, 4], subdomains_cycle=<itertools.cycle object>), TileProvider(key='here-normaldaygreymobile', name='HERE normalDayGreyMobile', attribution='Map data: © HERE', html_attribution='Map data: © <a href="https://www.here.com/">HERE</a>', url_template='https://{s}.base.maps.ls.hereapi.com/maptile/2.1/maptile/newest/normal.day.grey.mobile/{z}/{x}/{y}/256/png8?apiKey={a}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[1, 2, 3, 4], subdomains_cycle=<itertools.cycle object>), TileProvider(key='here-normaldaytransit', name='HERE normalDayTransit', attribution='Map data: © HERE', html_attribution='Map data: © <a href="https://www.here.com/">HERE</a>', url_template='https://{s}.base.maps.ls.hereapi.com/maptile/2.1/maptile/newest/normal.day.transit/{z}/{x}/{y}/256/png8?apiKey={a}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[1, 2, 3, 4], subdomains_cycle=<itertools.cycle object>), TileProvider(key='here-normaldaytransitmobile', name='HERE normalDayTransitMobile', attribution='Map data: © HERE', html_attribution='Map data: © <a href="https://www.here.com/">HERE</a>', url_template='https://{s}.base.maps.ls.hereapi.com/maptile/2.1/maptile/newest/normal.day.transit.mobile/{z}/{x}/{y}/256/png8?apiKey={a}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[1, 2, 3, 4], subdomains_cycle=<itertools.cycle object>), TileProvider(key='here-normalnight', name='HERE normalNight', attribution='Map data: © HERE', html_attribution='Map data: © <a href="https://www.here.com/">HERE</a>', url_template='https://{s}.base.maps.ls.hereapi.com/maptile/2.1/maptile/newest/normal.night/{z}/{x}/{y}/256/png8?apiKey={a}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[1, 2, 3, 4], subdomains_cycle=<itertools.cycle object>), TileProvider(key='here-normalnightmobile', name='HERE normalNightMobile', attribution='Map data: © HERE', html_attribution='Map data: © <a href="https://www.here.com/">HERE</a>', url_template='https://{s}.base.maps.ls.hereapi.com/maptile/2.1/maptile/newest/normal.night.mobile/{z}/{x}/{y}/256/png8?apiKey={a}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[1, 2, 3, 4], subdomains_cycle=<itertools.cycle object>), TileProvider(key='here-normalnightgrey', name='HERE normalNightGrey', attribution='Map data: © HERE', html_attribution='Map data: © <a href="https://www.here.com/">HERE</a>', url_template='https://{s}.base.maps.ls.hereapi.com/maptile/2.1/maptile/newest/normal.night.grey/{z}/{x}/{y}/256/png8?apiKey={a}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[1, 2, 3, 4], subdomains_cycle=<itertools.cycle object>), TileProvider(key='here-normalnightgreymobile', name='HERE normalNightGreyMobile', attribution='Map data: © HERE', html_attribution='Map data: © <a href="https://www.here.com/">HERE</a>', url_template='https://{s}.base.maps.ls.hereapi.com/maptile/2.1/maptile/newest/normal.night.grey.mobile/{z}/{x}/{y}/256/png8?apiKey={a}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[1, 2, 3, 4], subdomains_cycle=<itertools.cycle object>), TileProvider(key='here-normalnighttransit', name='HERE normalNightTransit', attribution='Map data: © HERE', html_attribution='Map data: © <a href="https://www.here.com/">HERE</a>', url_template='https://{s}.base.maps.ls.hereapi.com/maptile/2.1/maptile/newest/normal.night.transit/{z}/{x}/{y}/256/png8?apiKey={a}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[1, 2, 3, 4], subdomains_cycle=<itertools.cycle object>), TileProvider(key='here-normalnighttransitmobile', name='HERE normalNightTransitMobile', attribution='Map data: © HERE', html_attribution='Map data: © <a href="https://www.here.com/">HERE</a>', url_template='https://{s}.base.maps.ls.hereapi.com/maptile/2.1/maptile/newest/normal.night.transit.mobile/{z}/{x}/{y}/256/png8?apiKey={a}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[1, 2, 3, 4], subdomains_cycle=<itertools.cycle object>), TileProvider(key='here-reducedday', name='HERE reducedDay', attribution='Map data: © HERE', html_attribution='Map data: © <a href="https://www.here.com/">HERE</a>', url_template='https://{s}.base.maps.ls.hereapi.com/maptile/2.1/maptile/newest/reduced.day/{z}/{x}/{y}/256/png8?apiKey={a}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[1, 2, 3, 4], subdomains_cycle=<itertools.cycle object>), TileProvider(key='here-reducednight', name='HERE reducedNight', attribution='Map data: © HERE', html_attribution='Map data: © <a href="https://www.here.com/">HERE</a>', url_template='https://{s}.base.maps.ls.hereapi.com/maptile/2.1/maptile/newest/reduced.night/{z}/{x}/{y}/256/png8?apiKey={a}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[1, 2, 3, 4], subdomains_cycle=<itertools.cycle object>), TileProvider(key='here-basicmap', name='HERE basicMap', attribution='Map data: © HERE', html_attribution='Map data: © <a href="https://www.here.com/">HERE</a>', url_template='https://{s}.base.maps.ls.hereapi.com/maptile/2.1/maptile/newest/normal.day/{z}/{x}/{y}/256/png8?apiKey={a}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[1, 2, 3, 4], subdomains_cycle=<itertools.cycle object>), TileProvider(key='here-maplabels', name='HERE mapLabels', attribution='Map data: © HERE', html_attribution='Map data: © <a href="https://www.here.com/">HERE</a>', url_template='https://{s}.base.maps.ls.hereapi.com/maptile/2.1/maptile/newest/normal.day/{z}/{x}/{y}/256/png8?apiKey={a}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[1, 2, 3, 4], subdomains_cycle=<itertools.cycle object>), TileProvider(key='here-trafficflow', name='HERE trafficFlow', attribution='Map data: © HERE', html_attribution='Map data: © <a href="https://www.here.com/">HERE</a>', url_template='https://{s}.traffic.maps.ls.hereapi.com/maptile/2.1/maptile/newest/normal.day/{z}/{x}/{y}/256/png8?apiKey={a}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[1, 2, 3, 4], subdomains_cycle=<itertools.cycle object>), TileProvider(key='here-carnavdaygrey', name='HERE carnavDayGrey', attribution='Map data: © HERE', html_attribution='Map data: © <a href="https://www.here.com/">HERE</a>', url_template='https://{s}.base.maps.ls.hereapi.com/maptile/2.1/maptile/newest/carnav.day.grey/{z}/{x}/{y}/256/png8?apiKey={a}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[1, 2, 3, 4], subdomains_cycle=<itertools.cycle object>), TileProvider(key='here-hybridday', name='HERE hybridDay', attribution='Map data: © HERE', html_attribution='Map data: © <a href="https://www.here.com/">HERE</a>', url_template='https://{s}.aerial.maps.ls.hereapi.com/maptile/2.1/maptile/newest/hybrid.day/{z}/{x}/{y}/256/png8?apiKey={a}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[1, 2, 3, 4], subdomains_cycle=<itertools.cycle object>), TileProvider(key='here-hybriddaymobile', name='HERE hybridDayMobile', attribution='Map data: © HERE', html_attribution='Map data: © <a href="https://www.here.com/">HERE</a>', url_template='https://{s}.aerial.maps.ls.hereapi.com/maptile/2.1/maptile/newest/hybrid.day.mobile/{z}/{x}/{y}/256/png8?apiKey={a}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[1, 2, 3, 4], subdomains_cycle=<itertools.cycle object>), TileProvider(key='here-hybriddaytransit', name='HERE hybridDayTransit', attribution='Map data: © HERE', html_attribution='Map data: © <a href="https://www.here.com/">HERE</a>', url_template='https://{s}.aerial.maps.ls.hereapi.com/maptile/2.1/maptile/newest/hybrid.day.transit/{z}/{x}/{y}/256/png8?apiKey={a}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[1, 2, 3, 4], subdomains_cycle=<itertools.cycle object>), TileProvider(key='here-hybriddaygrey', name='HERE hybridDayGrey', attribution='Map data: © HERE', html_attribution='Map data: © <a href="https://www.here.com/">HERE</a>', url_template='https://{s}.aerial.maps.ls.hereapi.com/maptile/2.1/maptile/newest/hybrid.grey.day/{z}/{x}/{y}/256/png8?apiKey={a}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[1, 2, 3, 4], subdomains_cycle=<itertools.cycle object>), TileProvider(key='here-pedestrianday', name='HERE pedestrianDay', attribution='Map data: © HERE', html_attribution='Map data: © <a href="https://www.here.com/">HERE</a>', url_template='https://{s}.base.maps.ls.hereapi.com/maptile/2.1/maptile/newest/pedestrian.day/{z}/{x}/{y}/256/png8?apiKey={a}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[1, 2, 3, 4], subdomains_cycle=<itertools.cycle object>), TileProvider(key='here-pedestriannight', name='HERE pedestrianNight', attribution='Map data: © HERE', html_attribution='Map data: © <a href="https://www.here.com/">HERE</a>', url_template='https://{s}.base.maps.ls.hereapi.com/maptile/2.1/maptile/newest/pedestrian.night/{z}/{x}/{y}/256/png8?apiKey={a}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[1, 2, 3, 4], subdomains_cycle=<itertools.cycle object>), TileProvider(key='here-satelliteday', name='HERE satelliteDay', attribution='Map data: © HERE', html_attribution='Map data: © <a href="https://www.here.com/">HERE</a>', url_template='https://{s}.aerial.maps.ls.hereapi.com/maptile/2.1/maptile/newest/satellite.day/{z}/{x}/{y}/256/png8?apiKey={a}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[1, 2, 3, 4], subdomains_cycle=<itertools.cycle object>), TileProvider(key='here-terrainday', name='HERE terrainDay', attribution='Map data: © HERE', html_attribution='Map data: © <a href="https://www.here.com/">HERE</a>', url_template='https://{s}.aerial.maps.ls.hereapi.com/maptile/2.1/maptile/newest/terrain.day/{z}/{x}/{y}/256/png8?apiKey={a}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[1, 2, 3, 4], subdomains_cycle=<itertools.cycle object>), TileProvider(key='here-terraindaymobile', name='HERE terrainDayMobile', attribution='Map data: © HERE', html_attribution='Map data: © <a href="https://www.here.com/">HERE</a>', url_template='https://{s}.aerial.maps.ls.hereapi.com/maptile/2.1/maptile/newest/terrain.day.mobile/{z}/{x}/{y}/256/png8?apiKey={a}', zoom_min=0, zoom_max=20, bounds=None, subdomains=[1, 2, 3, 4], subdomains_cycle=<itertools.cycle object>), TileProvider(key='usgs-ustopo', name='USGS USTopo', attribution='Tiles courtesy of the U.S. Geological Survey', html_attribution='Tiles courtesy of the <a href="https://usgs.gov/">U.S. Geological Survey</a>', url_template='https://basemap.nationalmap.gov/arcgis/rest/services/USGSTopo/MapProvider/tile/{z}/{y}/{x}', zoom_min=0, zoom_max=20, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='usgs-usimagery', name='USGS USImagery', attribution='Tiles courtesy of the U.S. Geological Survey', html_attribution='Tiles courtesy of the <a href="https://usgs.gov/">U.S. Geological Survey</a>', url_template='https://basemap.nationalmap.gov/arcgis/rest/services/USGSImageryOnly/MapProvider/tile/{z}/{y}/{x}', zoom_min=0, zoom_max=20, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='usgs-usimagerytopo', name='USGS USImageryTopo', attribution='Tiles courtesy of the U.S. Geological Survey', html_attribution='Tiles courtesy of the <a href="https://usgs.gov/">U.S. Geological Survey</a>', url_template='https://basemap.nationalmap.gov/arcgis/rest/services/USGSImageryTopo/MapProvider/tile/{z}/{y}/{x}', zoom_min=0, zoom_max=20, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='nasagibs-modisterratruecolorcr', name='NASAGIBS ModisTerraTrueColorCR', attribution='Imagery provided by services from the Global Imagery Browse Services (GIBS), operated by the NASA/GSFC/Earth Science Data and Information System (ESDIS) with funding provided by NASA/HQ', html_attribution='Imagery provided by services from the <a href="https://earthdata.nasa.gov/eosdis/science-system-description/eosdis-components/gibs">GIBS</a>, operated by the NASA/GSFC/Earth Science Data and Information System (<a href="https://earthdata.nasa.gov/">ESDIS</a>) with funding provided by NASA/HQ', url_template='https://gibs.earthdata.nasa.gov/wmts/epsg3857/best/MODIS_Terra_CorrectedReflectance_TrueColor/default/GoogleMapsCompatible_Level/{z}/{y}/{x}.jpg', zoom_min=0, zoom_max=9, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='nasagibs-modisterrabands367cr', name='NASAGIBS ModisTerraBands367CR', attribution='Imagery provided by services from the Global Imagery Browse Services (GIBS), operated by the NASA/GSFC/Earth Science Data and Information System (ESDIS) with funding provided by NASA/HQ', html_attribution='Imagery provided by services from the <a href="https://earthdata.nasa.gov/eosdis/science-system-description/eosdis-components/gibs">GIBS</a>, operated by the NASA/GSFC/Earth Science Data and Information System (<a href="https://earthdata.nasa.gov/">ESDIS</a>) with funding provided by NASA/HQ', url_template='https://gibs.earthdata.nasa.gov/wmts/epsg3857/best/MODIS_Terra_CorrectedReflectance_Bands367/default/GoogleMapsCompatible_Level/{z}/{y}/{x}.jpg', zoom_min=0, zoom_max=9, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='nasagibs-viirsearthatnight2012', name='NASAGIBS ViirsEarthAtNight2012', attribution='Imagery provided by services from the Global Imagery Browse Services (GIBS), operated by the NASA/GSFC/Earth Science Data and Information System (ESDIS) with funding provided by NASA/HQ', html_attribution='Imagery provided by services from the <a href="https://earthdata.nasa.gov/eosdis/science-system-description/eosdis-components/gibs">GIBS</a>, operated by the NASA/GSFC/Earth Science Data and Information System (<a href="https://earthdata.nasa.gov/">ESDIS</a>) with funding provided by NASA/HQ', url_template='https://gibs.earthdata.nasa.gov/wmts/epsg3857/best/VIIRS_CityLights_2012/default/GoogleMapsCompatible_Level/{z}/{y}/{x}.jpg', zoom_min=0, zoom_max=8, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='nasagibs-modisterralstday', name='NASAGIBS ModisTerraLSTDay', attribution='Imagery provided by services from the Global Imagery Browse Services (GIBS), operated by the NASA/GSFC/Earth Science Data and Information System (ESDIS) with funding provided by NASA/HQ', html_attribution='Imagery provided by services from the <a href="https://earthdata.nasa.gov/eosdis/science-system-description/eosdis-components/gibs">GIBS</a>, operated by the NASA/GSFC/Earth Science Data and Information System (<a href="https://earthdata.nasa.gov/">ESDIS</a>) with funding provided by NASA/HQ', url_template='https://gibs.earthdata.nasa.gov/wmts/epsg3857/best/MODIS_Terra_Land_Surface_Temp_Day/default/GoogleMapsCompatible_Level/{z}/{y}/{x}.png', zoom_min=0, zoom_max=7, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='nasagibs-modisterrasnowcover', name='NASAGIBS ModisTerraSnowCover', attribution='Imagery provided by services from the Global Imagery Browse Services (GIBS), operated by the NASA/GSFC/Earth Science Data and Information System (ESDIS) with funding provided by NASA/HQ', html_attribution='Imagery provided by services from the <a href="https://earthdata.nasa.gov/eosdis/science-system-description/eosdis-components/gibs">GIBS</a>, operated by the NASA/GSFC/Earth Science Data and Information System (<a href="https://earthdata.nasa.gov/">ESDIS</a>) with funding provided by NASA/HQ', url_template='https://gibs.earthdata.nasa.gov/wmts/epsg3857/best/MODIS_Terra_NDSI_Snow_Cover/default/GoogleMapsCompatible_Level/{z}/{y}/{x}.png', zoom_min=0, zoom_max=8, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='nasagibs-modisterraaod', name='NASAGIBS ModisTerraAOD', attribution='Imagery provided by services from the Global Imagery Browse Services (GIBS), operated by the NASA/GSFC/Earth Science Data and Information System (ESDIS) with funding provided by NASA/HQ', html_attribution='Imagery provided by services from the <a href="https://earthdata.nasa.gov/eosdis/science-system-description/eosdis-components/gibs">GIBS</a>, operated by the NASA/GSFC/Earth Science Data and Information System (<a href="https://earthdata.nasa.gov/">ESDIS</a>) with funding provided by NASA/HQ', url_template='https://gibs.earthdata.nasa.gov/wmts/epsg3857/best/MODIS_Terra_Aerosol/default/GoogleMapsCompatible_Level/{z}/{y}/{x}.png', zoom_min=0, zoom_max=6, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='nasagibs-modisterrachlorophyll', name='NASAGIBS ModisTerraChlorophyll', attribution='Imagery provided by services from the Global Imagery Browse Services (GIBS), operated by the NASA/GSFC/Earth Science Data and Information System (ESDIS) with funding provided by NASA/HQ', html_attribution='Imagery provided by services from the <a href="https://earthdata.nasa.gov/eosdis/science-system-description/eosdis-components/gibs">GIBS</a>, operated by the NASA/GSFC/Earth Science Data and Information System (<a href="https://earthdata.nasa.gov/">ESDIS</a>) with funding provided by NASA/HQ', url_template='https://gibs.earthdata.nasa.gov/wmts/epsg3857/best/MODIS_Terra_Chlorophyll_A/default/GoogleMapsCompatible_Level/{z}/{y}/{x}.png', zoom_min=0, zoom_max=7, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='wikimedia', name='Wikimedia', attribution='Map data: © OpenStreetMap contributors. Map style: © Wikimedia Foundation', html_attribution='Map data: © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>. Map style: © <a href="https://foundation.wikimedia.org/">Wikimedia Foundation</a>', url_template='https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}.png', zoom_min=0, zoom_max=19, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='cyclosm', name='CyclOSM', attribution='Map data: © OpenStreetMap contributors. Map style: © CyclOSM (hosted by OpenStreetMap France)', html_attribution='Map data: © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>. Map style: © <a href="https://www.cyclosm.org/">CyclOSM</a> (hosted by <a href="https://openstreetmap.fr/">OpenStreetMap France</a>)', url_template='https://{s}.tile-cyclosm.openstreetmap.fr/cyclosm/{z}/{x}/{y}.png', zoom_min=0, zoom_max=20, bounds=None, subdomains=['a', 'b', 'c'], subdomains_cycle=<itertools.cycle object>), TileProvider(key='jawg-streets', name='Jawg Streets', attribution='© Jawg Maps, © OpenStreetMap contributors', html_attribution='© <a href="https://www.jawg.io/">Jawg</a> Maps, © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://tile.jawg.io/jawg-streets/{z}/{x}/{y}.png?access-token={a}', zoom_min=0, zoom_max=22, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='jawg-terrain', name='Jawg Terrain', attribution='© Jawg Maps, © OpenStreetMap contributors', html_attribution='© <a href="https://www.jawg.io/">Jawg</a> Maps, © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://tile.jawg.io/jawg-terrain/{z}/{x}/{y}.png?access-token={a}', zoom_min=0, zoom_max=22, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='jawg-sunny', name='Jawg Sunny', attribution='© Jawg Maps, © OpenStreetMap contributors', html_attribution='© <a href="https://www.jawg.io/">Jawg</a> Maps, © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://tile.jawg.io/jawg-sunny/{z}/{x}/{y}.png?access-token={a}', zoom_min=0, zoom_max=22, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='jawg-dark', name='Jawg Dark', attribution='© Jawg Maps, © OpenStreetMap contributors', html_attribution='© <a href="https://www.jawg.io/">Jawg</a> Maps, © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://tile.jawg.io/jawg-dark/{z}/{x}/{y}.png?access-token={a}', zoom_min=0, zoom_max=22, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='jawg-light', name='Jawg Light', attribution='© Jawg Maps, © OpenStreetMap contributors', html_attribution='© <a href="https://www.jawg.io/">Jawg</a> Maps, © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://tile.jawg.io/jawg-light/{z}/{x}/{y}.png?access-token={a}', zoom_min=0, zoom_max=22, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='jawg-matrix', name='Jawg Matrix', attribution='© Jawg Maps, © OpenStreetMap contributors', html_attribution='© <a href="https://www.jawg.io/">Jawg</a> Maps, © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://tile.jawg.io/jawg-matrix/{z}/{x}/{y}.png?access-token={a}', zoom_min=0, zoom_max=22, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='maptiler-streets', name='MapTiler Streets', attribution='© MapTiler, © OpenStreetMap contributors', html_attribution='© <a href="https://www.maptiler.com/copyright/">MapTiler</a>, © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://api.maptiler.com/maps/streets-v2/{z}/{x}/{y}.png?key={a}', zoom_min=0, zoom_max=21, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='maptiler-basic', name='MapTiler Basic', attribution='© MapTiler, © OpenStreetMap contributors', html_attribution='© <a href="https://www.maptiler.com/copyright/">MapTiler</a>, © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://api.maptiler.com/maps/basic-v2/{z}/{x}/{y}.png?key={a}', zoom_min=0, zoom_max=21, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='maptiler-bright', name='MapTiler Bright', attribution='© MapTiler, © OpenStreetMap contributors', html_attribution='© <a href="https://www.maptiler.com/copyright/">MapTiler</a>, © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://api.maptiler.com/maps/bright-v2/{z}/{x}/{y}.png?key={a}', zoom_min=0, zoom_max=21, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='maptiler-pastel', name='MapTiler Pastel', attribution='© MapTiler, © OpenStreetMap contributors', html_attribution='© <a href="https://www.maptiler.com/copyright/">MapTiler</a>, © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://api.maptiler.com/maps/pastel/{z}/{x}/{y}.png?key={a}', zoom_min=0, zoom_max=21, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='maptiler-positron', name='MapTiler Positron', attribution='© MapTiler, © OpenStreetMap contributors', html_attribution='© <a href="https://www.maptiler.com/copyright/">MapTiler</a>, © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://api.maptiler.com/maps/positron/{z}/{x}/{y}.png?key={a}', zoom_min=0, zoom_max=21, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='maptiler-hybrid', name='MapTiler Hybrid', attribution='© MapTiler, © OpenStreetMap contributors', html_attribution='© <a href="https://www.maptiler.com/copyright/">MapTiler</a>, © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://api.maptiler.com/maps/hybrid/{z}/{x}/{y}.jpg?key={a}', zoom_min=0, zoom_max=21, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='maptiler-satellite', name='MapTiler Satellite', attribution='© MapTiler, © OpenStreetMap contributors', html_attribution='© <a href="https://www.maptiler.com/copyright/">MapTiler</a>, © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://api.maptiler.com/maps/satellite-v2/{z}/{x}/{y}.jpg?key={a}', zoom_min=0, zoom_max=21, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='maptiler-toner', name='MapTiler Toner', attribution='© MapTiler, © OpenStreetMap contributors', html_attribution='© <a href="https://www.maptiler.com/copyright/">MapTiler</a>, © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://api.maptiler.com/maps/toner-v2/{z}/{x}/{y}.png?key={a}', zoom_min=0, zoom_max=21, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='maptiler-topo', name='MapTiler Topo', attribution='© MapTiler, © OpenStreetMap contributors', html_attribution='© <a href="https://www.maptiler.com/copyright/">MapTiler</a>, © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://api.maptiler.com/maps/topo-v2/{z}/{x}/{y}.png?key={a}', zoom_min=0, zoom_max=21, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='maptiler-winter', name='MapTiler Winter', attribution='© MapTiler, © OpenStreetMap contributors', html_attribution='© <a href="https://www.maptiler.com/copyright/">MapTiler</a>, © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://api.maptiler.com/maps/winter-v2/{z}/{x}/{y}.png?key={a}', zoom_min=0, zoom_max=21, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='maptiler-outdoor', name='MapTiler Outdoor', attribution='© MapTiler, © OpenStreetMap contributors', html_attribution='© <a href="https://www.maptiler.com/copyright/">MapTiler</a>, © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://api.maptiler.com/maps/outdoor-v2/{z}/{x}/{y}.png?key={a}', zoom_min=0, zoom_max=21, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='tomtom-basic', name='TomTom Basic', attribution='© TomTom', html_attribution='© <a href="https://tomtom.com/">TomTom</a>', url_template='https://{s}.api.tomtom.com/map/1/tile/basic/main/{z}/{x}/{y}.png?key={a}', zoom_min=0, zoom_max=22, bounds=None, subdomains=['a', 'b', 'c', 'd'], subdomains_cycle=<itertools.cycle object>), TileProvider(key='tomtom-hybrid', name='TomTom Hybrid', attribution='© TomTom', html_attribution='© <a href="https://tomtom.com/">TomTom</a>', url_template='https://{s}.api.tomtom.com/map/1/tile/hybrid/main/{z}/{x}/{y}.png?key={a}', zoom_min=0, zoom_max=22, bounds=None, subdomains=['a', 'b', 'c', 'd'], subdomains_cycle=<itertools.cycle object>), TileProvider(key='tomtom-labels', name='TomTom Labels', attribution='© TomTom', html_attribution='© <a href="https://tomtom.com/">TomTom</a>', url_template='https://{s}.api.tomtom.com/map/1/tile/labels/main/{z}/{x}/{y}.png?key={a}', zoom_min=0, zoom_max=22, bounds=None, subdomains=['a', 'b', 'c', 'd'], subdomains_cycle=<itertools.cycle object>), TileProvider(key='basemapat', name='BasemapAT', attribution='Basemap.at', html_attribution='<a href="https://basemap.at/">Basemap.at</a>', url_template='https://maps{s}.wien.gv.at/basemap/geolandbasemap/normal/google3857/{z}/{y}/{x}.png', zoom_min=0, zoom_max=19, bounds=(8.782379, 46.35877, 17.189532, 49.037872), subdomains=['', '1', '2', '3', '4'], subdomains_cycle=<itertools.cycle object>), TileProvider(key='basemapat-grau', name='BasemapAT Grau', attribution='Basemap.at', html_attribution='<a href="https://basemap.at/">Basemap.at</a>', url_template='https://maps{s}.wien.gv.at/basemap/bmapgrau/normal/google3857/{z}/{y}/{x}.png', zoom_min=0, zoom_max=19, bounds=(8.782379, 46.35877, 17.189532, 49.037872), subdomains=['', '1', '2', '3', '4'], subdomains_cycle=<itertools.cycle object>), TileProvider(key='basemapat-overlay', name='BasemapAT Overlay', attribution='Basemap.at', html_attribution='<a href="https://basemap.at/">Basemap.at</a>', url_template='https://maps{s}.wien.gv.at/basemap/bmapoverlay/normal/google3857/{z}/{y}/{x}.png', zoom_min=0, zoom_max=19, bounds=(8.782379, 46.35877, 17.189532, 49.037872), subdomains=['', '1', '2', '3', '4'], subdomains_cycle=<itertools.cycle object>), TileProvider(key='basemapat-terrain', name='BasemapAT Terrain', attribution='Basemap.at', html_attribution='<a href="https://basemap.at/">Basemap.at</a>', url_template='https://maps{s}.wien.gv.at/basemap/bmapgelaende/normal/google3857/{z}/{y}/{x}.jpeg', zoom_min=0, zoom_max=19, bounds=(8.782379, 46.35877, 17.189532, 49.037872), subdomains=['', '1', '2', '3', '4'], subdomains_cycle=<itertools.cycle object>), TileProvider(key='basemapat-surface', name='BasemapAT Surface', attribution='Basemap.at', html_attribution='<a href="https://basemap.at/">Basemap.at</a>', url_template='https://maps{s}.wien.gv.at/basemap/bmapoberflaeche/normal/google3857/{z}/{y}/{x}.jpeg', zoom_min=0, zoom_max=19, bounds=(8.782379, 46.35877, 17.189532, 49.037872), subdomains=['', '1', '2', '3', '4'], subdomains_cycle=<itertools.cycle object>), TileProvider(key='basemapat-highdpi', name='BasemapAT Highdpi', attribution='Basemap.at', html_attribution='<a href="https://basemap.at/">Basemap.at</a>', url_template='https://maps{s}.wien.gv.at/basemap/bmaphidpi/normal/google3857/{z}/{y}/{x}.png', zoom_min=0, zoom_max=19, bounds=(8.782379, 46.35877, 17.189532, 49.037872), subdomains=['', '1', '2', '3', '4'], subdomains_cycle=<itertools.cycle object>), TileProvider(key='basemapat-orthofoto', name='BasemapAT Orthofoto', attribution='Basemap.at', html_attribution='<a href="https://basemap.at/">Basemap.at</a>', url_template='https://maps{s}.wien.gv.at/basemap/bmaporthofoto30cm/normal/google3857/{z}/{y}/{x}.jpeg', zoom_min=0, zoom_max=19, bounds=(8.782379, 46.35877, 17.189532, 49.037872), subdomains=['', '1', '2', '3', '4'], subdomains_cycle=<itertools.cycle object>), TileProvider(key='nlmaps-standaard', name='NLMaps Standaard', attribution='Kaartgegevens © Kadaster', html_attribution='Kaartgegevens © <a href="https://www.kadaster.nl/">Kadaster</a>', url_template='https://service.pdok.nl/brt/achtergrondkaart/wmts/v2_0/standaard/EPSG:3857/{z}/{x}/{y}.png', zoom_min=0, zoom_max=19, bounds=(3.37, 50.75, 7.21, 53.47), subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='nlmaps-pastel', name='NLMaps Pastel', attribution='Kaartgegevens © Kadaster', html_attribution='Kaartgegevens © <a href="https://www.kadaster.nl/">Kadaster</a>', url_template='https://service.pdok.nl/brt/achtergrondkaart/wmts/v2_0/pastel/EPSG:3857/{z}/{x}/{y}.png', zoom_min=0, zoom_max=19, bounds=(3.37, 50.75, 7.21, 53.47), subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='nlmaps-grijs', name='NLMaps Grijs', attribution='Kaartgegevens © Kadaster', html_attribution='Kaartgegevens © <a href="https://www.kadaster.nl/">Kadaster</a>', url_template='https://service.pdok.nl/brt/achtergrondkaart/wmts/v2_0/grijs/EPSG:3857/{z}/{x}/{y}.png', zoom_min=0, zoom_max=19, bounds=(3.37, 50.75, 7.21, 53.47), subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='nlmaps-water', name='NLMaps Water', attribution='Kaartgegevens © Kadaster', html_attribution='Kaartgegevens © <a href="https://www.kadaster.nl/">Kadaster</a>', url_template='https://service.pdok.nl/brt/achtergrondkaart/wmts/v2_0/water/EPSG:3857/{z}/{x}/{y}.png', zoom_min=0, zoom_max=19, bounds=(3.37, 50.75, 7.21, 53.47), subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='nlmaps-luchtfoto', name='NLMaps Luchtfoto', attribution='Kaartgegevens © Kadaster', html_attribution='Kaartgegevens © <a href="https://www.kadaster.nl/">Kadaster</a>', url_template='https://service.pdok.nl/hwh/luchtfotorgb/wmts/v1_0/Actueel_orthoHR/EPSG:3857/{z}/{x}/{y}.jpeg', zoom_min=0, zoom_max=19, bounds=(3.37, 50.75, 7.21, 53.47), subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='swissfederalgeoportal-nationalmapcolor', name='SwissFederalGeoportal NationalMapColor', attribution='© swisstopo', html_attribution='© <a href="https://www.swisstopo.admin.ch/">swisstopo</a>', url_template='https://wmts.geo.admin.ch/1.0.0/ch.swisstopo.pixelkarte-farbe/default/current/3857/{z}/{x}/{y}.jpeg', zoom_min=0, zoom_max=18, bounds=(5.140242, 45.398181, 11.47757, 48.230651), subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='swissfederalgeoportal-nationalmapgrey', name='SwissFederalGeoportal NationalMapGrey', attribution='© swisstopo', html_attribution='© <a href="https://www.swisstopo.admin.ch/">swisstopo</a>', url_template='https://wmts.geo.admin.ch/1.0.0/ch.swisstopo.pixelkarte-grau/default/current/3857/{z}/{x}/{y}.jpeg', zoom_min=0, zoom_max=18, bounds=(5.140242, 45.398181, 11.47757, 48.230651), subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='swissfederalgeoportal-swissimage', name='SwissFederalGeoportal SWISSIMAGE', attribution='© swisstopo', html_attribution='© <a href="https://www.swisstopo.admin.ch/">swisstopo</a>', url_template='https://wmts.geo.admin.ch/1.0.0/ch.swisstopo.swissimage/default/current/3857/{z}/{x}/{y}.jpeg', zoom_min=0, zoom_max=20, bounds=(5.140242, 45.398181, 11.47757, 48.230651), subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='opnvkarte', name='OPNVKarte', attribution='Map data: © OpenStreetMap contributors. Map style: © ÖPNVKarte', html_attribution='Map data: © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>. Map style: © <a href="https://www.opnvkarte.de/">ÖPNVKarte</a>', url_template='https://tileprovider.memomaps.de/tilegen/{z}/{x}/{y}.png', zoom_min=0, zoom_max=18, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='mtbmap', name='MtbMap', attribution='Map data: © OpenStreetMap contributors, USGS. Map style: © mtbmap.cz', html_attribution='Map data: © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a> & USGS. Map style: © <a href="https://mtbmap.cz/">mtbmap.cz</a>', url_template='http://tile.mtbmap.cz/mtbmap_tiles/{z}/{x}/{y}.png', zoom_min=0, zoom_max=18, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='hikebike', name='HikeBike', attribution='Map data: © OpenStreetMap contributors', html_attribution='Map data: © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://tiles.wmflabs.org/hikebike/{z}/{x}/{y}.png', zoom_min=0, zoom_max=19, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='safecast', name='SafeCast', attribution='Map data: © OpenStreetMap contributors. Map style: © SafeCast', html_attribution='Map data: © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>. Map style: © <a href="https://safecast.org/">SafeCast</a>', url_template='https://s3.amazonaws.com/te512.safecast.org/{z}/{x}/{y}.png', zoom_min=0, zoom_max=16, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='geofabrik-topo', name='Geofabrik Topo', attribution='Map data: © OpenStreetMap contributors', html_attribution='Map data: © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='http://{s}.tile.geofabrik.de/15173cf79060ee4a66573954f6017ab0/{z}/{x}/{y}.png', zoom_min=0, zoom_max=19, bounds=None, subdomains=['a', 'b', 'c'], subdomains_cycle=<itertools.cycle object>), TileProvider(key='mapy-cz', name='Mapy.cz', attribution='Map data: © OpenStreetMap contributors. Map style: © Seznam.cz', html_attribution='Map data: © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>. Map style: © <a href="https://www.seznam.cz/">Seznam.cz</a>', url_template='https://m{s}.mapprovider.mapy.cz/turist-m/{z}-{x}-{y}.png', zoom_min=0, zoom_max=19, bounds=None, subdomains=[1, 2, 3, 4], subdomains_cycle=<itertools.cycle object>), TileProvider(key='komoot', name='Komoot', attribution='Map data: © OpenStreetMap contributors', html_attribution='Map data: © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='http://{s}.tile.komoot.de/komoot-2/{z}/{x}/{y}.png', zoom_min=0, zoom_max=19, bounds=None, subdomains=['a', 'b', 'c'], subdomains_cycle=<itertools.cycle object>), TileProvider(key='alltrails', name='AllTrails', attribution='Map data: © OpenStreetMap contributors', html_attribution='Map data: © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>', url_template='https://alltrails.com/tiles/alltrailsOutdoors/{z}/{x}/{y}.png', zoom_min=0, zoom_max=20, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='waymarkedtrails-hiking', name='Waymarked Trails Hiking', attribution='Map data: © OpenStreetMap contributors. Overlay: © Waymarked Trails', html_attribution='Map data: © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>. Overlay: © <a href="https://hiking.waymarkedtrails.org/">Waymarked Trails</a>', url_template='https://tile.waymarkedtrails.org/hiking/{z}/{x}/{y}.png', zoom_min=0, zoom_max=18, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='waymarkedtrails-cycling', name='Waymarked Trails Cycling', attribution='Map data: © OpenStreetMap contributors. Overlay: © Waymarked Trails', html_attribution='Map data: © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>. Overlay: © <a href="https://cycling.waymarkedtrails.org/">Waymarked Trails</a>', url_template='https://tile.waymarkedtrails.org/cycling/{z}/{x}/{y}.png', zoom_min=0, zoom_max=18, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='waymarkedtrails-mtb', name='Waymarked Trails MTB', attribution='Map data: © OpenStreetMap contributors. Overlay: © Waymarked Trails', html_attribution='Map data: © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>. Overlay: © <a href="https://mtb.waymarkedtrails.org/">Waymarked Trails</a>', url_template='https://tile.waymarkedtrails.org/mtb/{z}/{x}/{y}.png', zoom_min=0, zoom_max=18, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='waymarkedtrails-slopes', name='Waymarked Trails Slopes', attribution='Map data: © OpenStreetMap contributors. Overlay: © Waymarked Trails', html_attribution='Map data: © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>. Overlay: © <a href="https://slopes.waymarkedtrails.org/">Waymarked Trails</a>', url_template='https://tile.waymarkedtrails.org/slopes/{z}/{x}/{y}.png', zoom_min=0, zoom_max=18, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='waymarkedtrails-riding', name='Waymarked Trails Riding', attribution='Map data: © OpenStreetMap contributors. Overlay: © Waymarked Trails', html_attribution='Map data: © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>. Overlay: © <a href="https://riding.waymarkedtrails.org/">Waymarked Trails</a>', url_template='https://tile.waymarkedtrails.org/riding/{z}/{x}/{y}.png', zoom_min=0, zoom_max=18, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='waymarkedtrails-skating', name='Waymarked Trails Skating', attribution='Map data: © OpenStreetMap contributors. Overlay: © Waymarked Trails', html_attribution='Map data: © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>. Overlay: © <a href="https://skating.waymarkedtrails.org/">Waymarked Trails</a>', url_template='https://tile.waymarkedtrails.org/skating/{z}/{x}/{y}.png', zoom_min=0, zoom_max=18, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='openaip', name='OpenAIP', attribution='© OpenAIP', html_attribution='© <a href="https://www.openaip.net/">OpenAIP</a>', url_template='https://api.tiles.openaip.net/api/data/openaip/{z}/{x}/{y}.png', zoom_min=4, zoom_max=14, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='opensnowmap', name='OpenSnowMap', attribution='Map data: © OpenStreetMap contributors. Overlay: © OpenSnowMap', html_attribution='Map data: © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>. Overlay: © <a href="https://www.opensnowmap.org/">OpenSnowMap</a>', url_template='https://tiles.opensnowmap.org/pistes/{z}/{x}/{y}.png', zoom_min=0, zoom_max=18, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>), TileProvider(key='openrailwaymap', name='OpenRailwayMap', attribution='Map data: © OpenStreetMap contributors. Map style: © OpenRailwayMap (CC-BY-SA)', html_attribution='Map data: © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>. Map style: © <a href="https://www.openrailwaymap.org/">OpenRailwayMap</a> (<a href="https://creativecommons.org/licenses/by-sa/3.0/">CC-BY-SA</a>)', url_template='https://{s}.tiles.openrailwaymap.org/standard/{z}/{x}/{y}.png', zoom_min=0, zoom_max=19, bounds=None, subdomains=['a', 'b', 'c'], subdomains_cycle=<itertools.cycle object>), TileProvider(key='openfiremap', name='OpenFireMap', attribution='Map data: © OpenStreetMap contributors. Map style: © OpenFireMap (CC-BY-SA)', html_attribution='Map data: © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>. Map style: © <a href="http://www.openfiremap.org/">OpenFireMap</a> (<a href="https://creativecommons.org/licenses/by-sa/3.0/">CC-BY-SA</a>)', url_template='http://openfiremap.org/hytiles/{z}/{x}/{y}.png', zoom_min=0, zoom_max=19, bounds=None, subdomains=None, subdomains_cycle=<itertools.cycle object>)]

List of all available TileProvider instances.

papermap.tile_providers.TILE_PROVIDER_KEYS = ['alltrails', 'basemapat', 'basemapat-grau', 'basemapat-highdpi', 'basemapat-orthofoto', 'basemapat-overlay', 'basemapat-surface', 'basemapat-terrain', 'cartodb-darkmatter', 'cartodb-darkmatter-nolabels', 'cartodb-darkmatter-onlylabels', 'cartodb-positron', 'cartodb-positronnolabels', 'cartodb-positrononlylabels', 'cartodb-voyager', 'cartodb-voyager-labelsunder', 'cartodb-voyager-nolabels', 'cartodb-voyager-onlylabels', 'cyclosm', 'esri-delorme', 'esri-natgeoworldmap', 'esri-oceanbasemap', 'esri-worldgraycanvas', 'esri-worldimagery', 'esri-worldphysical', 'esri-worldshadedrelief', 'esri-worldstreetmap', 'esri-worldterrain', 'esri-worldtopomap', 'geofabrik-topo', 'google-maps', 'google-maps-roads', 'google-maps-satellite', 'google-maps-satellite-hybrid', 'google-maps-terrain', 'google-maps-terrain-hybrid', 'here-basicmap', 'here-carnavdaygrey', 'here-hybridday', 'here-hybriddaygrey', 'here-hybriddaymobile', 'here-hybriddaytransit', 'here-maplabels', 'here-normalday', 'here-normaldaycustom', 'here-normaldaygrey', 'here-normaldaygreymobile', 'here-normaldaymobile', 'here-normaldaytransit', 'here-normaldaytransitmobile', 'here-normalnight', 'here-normalnightgrey', 'here-normalnightgreymobile', 'here-normalnightmobile', 'here-normalnighttransit', 'here-normalnighttransitmobile', 'here-pedestrianday', 'here-pedestriannight', 'here-reducedday', 'here-reducednight', 'here-satelliteday', 'here-terrainday', 'here-terraindaymobile', 'here-trafficflow', 'hikebike', 'jawg-dark', 'jawg-light', 'jawg-matrix', 'jawg-streets', 'jawg-sunny', 'jawg-terrain', 'komoot', 'maptiler-basic', 'maptiler-bright', 'maptiler-hybrid', 'maptiler-outdoor', 'maptiler-pastel', 'maptiler-positron', 'maptiler-satellite', 'maptiler-streets', 'maptiler-toner', 'maptiler-topo', 'maptiler-winter', 'mapy-cz', 'mtbmap', 'nasagibs-modisterraaod', 'nasagibs-modisterrabands367cr', 'nasagibs-modisterrachlorophyll', 'nasagibs-modisterralstday', 'nasagibs-modisterrasnowcover', 'nasagibs-modisterratruecolorcr', 'nasagibs-viirsearthatnight2012', 'nlmaps-grijs', 'nlmaps-luchtfoto', 'nlmaps-pastel', 'nlmaps-standaard', 'nlmaps-water', 'openaip', 'openfiremap', 'openrailwaymap', 'openseamap', 'opensnowmap', 'openstreetmap', 'openstreetmap-bzh', 'openstreetmap-ch', 'openstreetmap-de', 'openstreetmap-france', 'openstreetmap-hot', 'opentopomap', 'opnvkarte', 'safecast', 'stadia-alidadesmooth', 'stadia-alidasesatellite', 'stadia-alidasesmoothdark', 'stadia-osmbright', 'stadia-outdoors', 'stadia-stamenterrain', 'stadia-stamenterrainbackground', 'stadia-stamenterrainlabels', 'stadia-stamenterrainlines', 'stadia-stamentoner', 'stadia-stamentonerbackground', 'stadia-stamentonerlabels', 'stadia-stamentonerlines', 'stadia-stamentonerlite', 'stadia-stamenwatercolor', 'swissfederalgeoportal-nationalmapcolor', 'swissfederalgeoportal-nationalmapgrey', 'swissfederalgeoportal-swissimage', 'thunderforest-atlas', 'thunderforest-landscape', 'thunderforest-mobileatlas', 'thunderforest-neighbourhood', 'thunderforest-opencyclemap', 'thunderforest-outdoors', 'thunderforest-pioneer', 'thunderforest-spinalmap', 'thunderforest-transport', 'thunderforest-transport-dark', 'tomtom-basic', 'tomtom-hybrid', 'tomtom-labels', 'usgs-usimagery', 'usgs-usimagerytopo', 'usgs-ustopo', 'waymarkedtrails-cycling', 'waymarkedtrails-hiking', 'waymarkedtrails-mtb', 'waymarkedtrails-riding', 'waymarkedtrails-skating', 'waymarkedtrails-slopes', 'wikimedia']

List of tile provider keys.

papermap.utils Module

papermap.utils.C: int = 40075017

Earth’s equatorial circumference in meters.

papermap.utils.DEFAULT_DPI: int = 300

Default dots per inch.

papermap.utils.clip(val, lower, upper)

Clips a value to [lower, upper] range.

Parameters:
  • val (float) – The value.

  • lower (float) – The lower bound.

  • upper (float) – The upper bound.

Returns:

The value clipped to [lower, upper] range.

Return type:

float

papermap.utils.lon_to_x(lon, zoom)

Converts longitude to x (tile coordinate), given a zoom level.

Parameters:
  • lon (float) – The longitude.

  • zoom (int) – The zoom level.

Returns:

The x (tile coordinate).

Return type:

float

papermap.utils.x_to_lon(x, zoom)

Converts x (tile coordinate) to longitude, given a zoom level.

Parameters:
  • x (float) – The tile coordinate.

  • zoom (int) – The zoom level.

Returns:

The longitude.

Return type:

float

papermap.utils.lat_to_y(lat, zoom)

Converts latitude to y (tile coordinate), given a zoom level.

Parameters:
  • lat (float) – The latitude.

  • zoom (int) – The zoom level.

Returns:

The y (tile coordinate).

Return type:

float

papermap.utils.y_to_lat(y, zoom)

Converts y (tile coordinate) to latitude, given a zoom level.

Parameters:
  • y (float) – The tile coordinate.

  • zoom (int) – The zoom level.

Returns:

The latitude.

Return type:

float

papermap.utils.x_to_px(x, x_center, width, tile_size=256)

Convert x (tile coordinate) to pixels.

Parameters:
  • x (int) – The tile coordinate.

  • x_center (int) – Tile coordinate of the center tile.

  • width (int) – The image width.

  • tile_size (int) – The tile size. Defaults to 256.

Returns:

The pixels.

Return type:

int

papermap.utils.y_to_px(y, y_center, height, tile_size=256)

Convert y (tile coordinate) to pixel.

Parameters:
  • y (int) – The tile coordinate.

  • y_center (int) – Tile coordinate of the center tile.

  • height (int) – The image height.

  • tile_size (int) – The tile size. Defaults to 256.

Returns:

The pixels.

Return type:

int

papermap.utils.mm_to_px(mm, dpi=300)

Convert millimeters to pixels, given the dpi.

Parameters:
  • mm (float) – The millimeters.

  • dpi (int) – Dots per inch. Defaults to 300.

Returns:

The pixels.

Return type:

int

papermap.utils.px_to_mm(px, dpi=300)

Convert pixels to millimeters, given the dpi.

Parameters:
  • px (int) – The pixels.

  • dpi (int) – Dots per inch. Defaults to 300.

Returns:

The millimeters.

Return type:

float

papermap.utils.mm_to_pt(mm)

Convert millimeters to points.

Parameters:

mm (float) – The millimeters.

Returns:

The points.

Return type:

float

papermap.utils.pt_to_mm(pt)

Convert points to millimeters.

Parameters:

pt (float) – The points.

Returns:

The millimeters.

Return type:

float

papermap.utils.dd_to_dms(dd)

Convert Decimal Degrees (DD) to Degrees, Minutes, and Seconds (DMS).

Parameters:

dd (float) – The Decimal Degrees.

Returns:

The Degrees, Minutes, and Seconds.

Return type:

tuple[int, int, float]

papermap.utils.dms_to_dd(dms)

Convert Degrees, Minutes, and Seconds (DMS) to Decimal Degrees (DD).

Parameters:

dms (tuple[int, int, float]) – The Degrees, Minutes, and Seconds.

Returns:

The Decimal Degrees.

Return type:

float

papermap.utils.scale_to_zoom(scale, lat, dpi=300)

Compute the zoom level, given the latitude, scale and dpi.

Parameters:
  • scale (int) – The scale.

  • lat (float) – The latitude.

  • dpi (int) – Dots per inch. Defaults to 300.

Returns:

The zoom level.

Return type:

float

papermap.utils.zoom_to_scale(zoom, lat, dpi=300)

Compute the scale, given the latitude, zoom level and dpi.

Parameters:
  • zoom (int) – The zoom level.

  • lat (float) – The latitude.

  • dpi (int) – Dots per inch. Defaults to 300.

Returns:

The scale.

Return type:

float

papermap.utils.get_string_formatting_arguments(s)

Extracts field names from a format string.

Parameters:

s (str) – A format string (e.g., “{name} is {age}”).

Returns:

List of field names found in the format string.

Return type:

list[str]

papermap.utils.is_out_of_bounds(test, bounds)

Checks if a bounding box exceeds the specified bounds.

Parameters:
  • test (dict[str, float]) – Bounding box with keys ‘lat_min’, ‘lat_max’, ‘lon_min’, ‘lon_max’.

  • bounds (dict[str, float]) – Reference bounds with the same keys.

Returns:

True if test exceeds bounds in any direction, False otherwise.

Return type:

bool

papermap.utils.drange(start, stop, step)

Yields Decimal values from start to stop with the given step size.

Parameters:
  • start (Decimal) – The first value to yield.

  • stop (Decimal) – The upper bound (exclusive).

  • step (Decimal) – The increment applied on each iteration.

Yields:

Decimal values in the range [start, stop) incremented by step.