API Reference¶
papermap.papermap Module¶
- 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_AUTO_SCALE_PADDING: float = 5.0¶
Default padding (in mm, per side) between features and the image edge when
auto_scaleis enabled.
- exception papermap.papermap.ScaleOutOfBoundsError¶
Bases:
ValueErrorRaised when the resolved zoom level is outside the tile provider’s bounds.
- papermap.papermap.COMMON_SCALES: tuple[int, ...] = (500, 1000, 2500, 5000, 10000, 25000, 50000, 100000, 250000, 500000, 1000000, 2500000, 5000000, 10000000, 25000000, 50000000)¶
Common cartographic scales that
auto_scalesnaps up to.
- 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:
objectA 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.
ScaleOutOfBoundsError – If the scale is “out of bounds” for the chosen tile provider.
- 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:
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:
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:
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")
- classmethod from_features(*features, auto_scale=False, padding=5.0, **kwargs)¶
Create a paper map centred on the geographic centre of the given feature(s).
The centre is the midpoint of the features’ bounding box (the midpoints of the min/max latitude and longitude across every coordinate referenced by the features). The features are also added to the new map and will be drawn when
render()is called.When
auto_scaleisTrue, the mapscaleis computed automatically so that the bounding box fits within the printable image area (paper size minus margins minuspadding), then snapped up to the nearest common cartographic scale (seeCOMMON_SCALES). Passingauto_scale=Truetogether with an explicitscaleraises aValueError.- Parameters:
features (CircleMarker | IconMarker | Line | Polygon) – One or more
MapFeatureinstances.auto_scale (bool) – If
True, compute the scale automatically to fit the features. Defaults toFalse.padding (float) – Padding between the features and the image edge, in mm per side. Only consulted when
auto_scaleisTrue. Defaults to5.0.**kwargs (Any) – Additional keyword arguments to pass to PaperMap constructor.
- Returns:
A new PaperMap instance centred on the features’ bounding box, with the features added.
- Raises:
ValueError – If no features are given.
ValueError – If none of the features contain any coordinates.
ValueError – If both
auto_scale=Trueandscaleare given.ValueError – If
auto_scale=Trueand the features have zero geographic extent along at least one axis.ScaleOutOfBoundsError – If
auto_scale=Trueand the computed scale is out of the tile provider’s zoom bounds.
- Return type:
Note
Features spanning the ±180° anti-meridian are not handled specially; the resulting centre may be on the opposite side of the world from where you expect.
Examples
>>> from papermap import PaperMap >>> from papermap.features import CircleMarker, Line >>> pm = PaperMap.from_features( ... CircleMarker(40.7128, -74.0060), ... Line([(40.71, -74.01), (40.72, -73.99)]), ... auto_scale=True, ... ) >>> pm.render() >>> pm.save("map_from_features.pdf")
- classmethod from_geojson(geojson_source, style=None, *, auto_scale=False, padding=5.0, **kwargs)¶
Create a paper map centred on the geographic centre of GeoJSON geometries.
Parses
geojson_sourcewithpapermap.features.geojson_to_features()and then delegates tofrom_features()to compute the centre (the midpoint of the parsed features’ bounding box) and to add the parsed features to the new map.When
auto_scaleisTrue, the mapscaleis computed automatically so that the parsed features fit within the printable image area. Seefrom_features()for details.- Parameters:
geojson_source (str | Path | dict[str, Any] | SupportsGeoInterface) – A path to a
.geojsonfile, or a GeoJSON dict (or any object exposing__geo_interface__).style (dict[str, Any] | None) – Default styling applied to every parsed feature. See
papermap.features.geojson_to_features()for the supported keys and the precedence rules withsimplestyle-specproperties.auto_scale (bool) – If
True, compute the scale automatically to fit the parsed features. Defaults toFalse.padding (float) – Padding between the features and the image edge, in mm per side. Only consulted when
auto_scaleisTrue. Defaults to5.0.**kwargs (Any) – Additional keyword arguments to pass to PaperMap constructor.
- Returns:
A new PaperMap instance centred on the parsed features’ bounding box, with the parsed features added.
- Raises:
TypeError – If
geojson_sourceis neither a path-like nor a dict nor exposes__geo_interface__.ValueError – If
geojson_sourceparses to no features (e.g. an emptyFeatureCollection), or if the parsed features contain no coordinates.ValueError – If both
auto_scale=Trueandscaleare given.ValueError – If
auto_scale=Trueand the parsed features have zero geographic extent along at least one axis.
- Return type:
Examples
>>> from papermap import PaperMap >>> geojson = { ... "type": "FeatureCollection", ... "features": [ ... { ... "type": "Feature", ... "geometry": { ... "type": "Point", ... "coordinates": [-74.0060, 40.7128], ... }, ... "properties": {}, ... } ... ], ... } >>> pm = PaperMap.from_geojson(geojson) >>> pm.render() >>> pm.save("map_from_geojson.pdf")
- classmethod from_gpx(gpx_source, style=None, *, auto_scale=False, padding=5.0, **kwargs)¶
Create a paper map centred on the geographic centre of GPX geometries.
Parses
gpx_sourcewithpapermap.gpx.gpx_to_features()and then delegates tofrom_features()to compute the centre (the midpoint of the parsed features’ bounding box) and to add the parsed features to the new map.When
auto_scaleisTrue, the mapscaleis computed automatically so that the parsed features fit within the printable image area. Seefrom_features()for details.Reading GPX files from disk requires the optional
gpxpackage. Install it withpip install papermap[gpx].- Parameters:
gpx_source (str | Path | SupportsGeoInterface) – A path to a
.gpxfile, or any object exposing__geo_interface__(e.g. agpx.GPXinstance).style (dict[str, Any] | None) – Default styling applied to every parsed feature. See
papermap.features.geojson_to_features()for the supported keys.auto_scale (bool) – If
True, compute the scale automatically to fit the parsed features. Defaults toFalse.padding (float) – Padding between the features and the image edge, in mm per side. Only consulted when
auto_scaleisTrue. Defaults to5.0.**kwargs (Any) – Additional keyword arguments to pass to PaperMap constructor.
- Returns:
A new PaperMap instance centred on the parsed features’ bounding box, with the parsed features added.
- Raises:
ImportError – If
gpx_sourceis a path and the optionalgpxpackage is not installed.TypeError – If
gpx_sourceis neither a path-like nor exposes__geo_interface__.ValueError – If
gpx_sourceparses to no features.ValueError – If both
auto_scale=Trueandscaleare given.ValueError – If
auto_scale=Trueand the parsed features have zero geographic extent along at least one axis.
- Return type:
Examples
>>> from papermap import PaperMap >>> pm = PaperMap.from_gpx("hike.gpx", auto_scale=True, padding=10) >>> pm.render() >>> pm.save("Hike.pdf")
- latlon_to_pdf_mm(lat, lon)¶
Convert a geographic position to absolute PDF coordinates in mm.
- add_circle_marker(lat, lon, **kwargs)¶
Add a
CircleMarkerat the given position to the map.- Parameters:
- Returns:
The newly added marker.
- Return type:
- add_icon_marker(lat, lon, icon, **kwargs)¶
Add an
IconMarkerat the given position to the map.- Parameters:
- Returns:
The newly added marker.
- Return type:
- add_line(coordinates, **kwargs)¶
Add a
Line(polyline) to the map.
- add_polygon(coordinates, **kwargs)¶
Add a
Polygonto the map.- Parameters:
- Returns:
The newly added polygon.
- Return type:
- add_feature(feature)¶
Add a pre-constructed feature to the map.
- Parameters:
feature (CircleMarker | IconMarker | Line | Polygon) – A
CircleMarker,IconMarker,Line, orPolygon.- Returns:
The same feature, for chaining.
- Return type:
CircleMarker | IconMarker | Line | Polygon
- add_geojson(geojson_source, style=None)¶
Add geometries from a GeoJSON file or GeoJSON object (or any object implementing the
__geo_interface__protocol).See
papermap.features.geojson_to_features()for the supported GeoJSON types and the precedence rules for styling.- Parameters:
- Returns:
The list of features that were parsed and added to the map.
- Return type:
list[CircleMarker | IconMarker | Line | Polygon]
- add_gpx(gpx_source, style=None)¶
Add geometries from a GPX file or GPX object.
See
papermap.gpx.gpx_to_features()for the parsing rules. Reading GPX files from disk requires the optionalgpxpackage; install it withpip install papermap[gpx].- Parameters:
- Returns:
The list of features that were parsed and added to the map.
- Return type:
list[CircleMarker | IconMarker | Line | Polygon]
- compute_grid_coordinates()¶
Compute the UTM grid line positions and labels for the map overlay.
The map’s geographic centre is converted to UTM and snapped to the nearest 1km grid intersection. From there, line positions (in mm relative to the image’s top-left corner) are walked outward at
grid_size_scaledintervals, and the matching kilometre labels are derived from the rounded UTM coordinates.
- render_grid()¶
Draw the UTM coordinate grid overlay onto the PDF, if enabled.
Does nothing when
self.add_gridisFalse. When enabled, draws vertical (easting) and horizontal (northing) grid lines at the positions returned bycompute_grid_coordinates()and labels each line with its UTM coordinate in kilometres.
- render_features()¶
Draw all added geometries onto the PDF, clipped to the map area.
Features are rendered in the order they were added. Anything that falls outside the map’s image rectangle is clipped via
fpdf.FPDF.rect_clip()so it cannot bleed into the page margins.
- render_attribution_and_scale()¶
Draw the tile provider attribution and map scale on the PDF.
The text is anchored to the bottom-right of the image area.
- download_tiles(num_retries=3, sleep_between_retries=None, strict=False)¶
Download all tile images for the map in parallel, with retries.
Tiles that have already been downloaded are skipped. Failed tiles are retried up to
num_retriestimes. WhenstrictisFalseand tiles still fail after all retries, a warning is emitted; whenstrictisTrue, aRuntimeErroris raised instead.- Parameters:
- Raises:
RuntimeError – If
strictisTrueand one or more tiles cannot be downloaded afternum_retriesretries.
- render_base_layer()¶
Download all tiles and assemble the map image.
Tiles are downloaded in parallel (honouring
self.strict_download), composited onto a scaled canvas, and then resampled down to the target image size in pixels. The result is stored onself.map_imagefor subsequent embedding in the PDF.
- render()¶
Render the paper map, consisting of the map image, features (if any), grid (if applicable), attribution and scale.
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:
objectA 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:
- 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:
- 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:
NamedTupleA 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:
- lon¶
Longitude in degrees (-180 to 180). Positive values are east of the Prime Meridian, negative values are west.
- Type:
- class papermap.geodesy.UTMCoordinate(easting, northing, zone, hemisphere)¶
Bases:
NamedTupleA 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:
- 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:
- class papermap.geodesy.MGRSCoordinate(zone, band, square, easting, northing)¶
Bases:
NamedTupleA 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.
- class papermap.geodesy.ECEFCoordinate(x, y, z)¶
Bases:
NamedTupleAn 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
- 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:
- 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:
- 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:
- 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:
- papermap.geodesy.wrap_angle(angle, limit)¶
Wraps an angle to [-limit, limit] range.
- papermap.geodesy.wrap_lat(lat)¶
Wraps latitude to [-90, 90] degrees range.
- papermap.geodesy.wrap_lon(lon)¶
Wraps longitude to [-180, 180] degrees range.
- 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:
- Returns:
UTMCoordinate with easting, northing, zone, and hemisphere.
- Raises:
ValueError – If latitude is outside the UTM coverage area [-80, 84].
- Return type:
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:
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:
- Returns:
MGRSCoordinate object with zone, band, square, easting, and northing.
- Return type:
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:
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:
- Returns:
ECEFCoordinate with x, y, z in meters.
- Return type:
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.features Module¶
Map feature dataclasses and a GeoJSON parser.
Features are geometries — circle markers, icon markers, lines, and polygons —
that are overlaid on the map’s base layer. They can be constructed directly
from one of the dataclasses in this module, or parsed from a GeoJSON object
(or any object implementing the __geo_interface__ protocol).
Coordinate ordering convention: all dataclass coordinates use (lat, lon)
ordering, matching PaperMap and the geodesy helpers. The
geojson_to_features() parser is the only place that swaps GeoJSON’s
[lon, lat] order to the internal (lat, lon) form.
- class papermap.features.CircleMarker(lat, lon, radius=2.0, stroke_color='#000', stroke_width=0.5, fill_color='#fff', opacity=1.0, stroke_opacity=None, fill_opacity=None)¶
Bases:
objectA circular marker at a single geographic position.
- Parameters:
lat (float) – Latitude of the marker centre.
lon (float) – Longitude of the marker centre.
radius (float) – Marker radius on paper, in mm. Defaults to
2.0.stroke_color (str | None) – Outline colour as a CSS-style hex string, or
Noneto omit the outline. Defaults to"#000".stroke_width (float) – Outline width on paper, in mm. Defaults to
0.5.fill_color (str | None) – Fill colour as a CSS-style hex string, or
Noneto omit the fill. Defaults to"#fff".opacity (float) – Overall opacity, in
[0, 1]. Defaults to1.0.stroke_opacity (float | None) – Outline opacity. Defaults to
opacitywhenNone.fill_opacity (float | None) – Fill opacity. Defaults to
opacitywhenNone.
- class papermap.features.IconMarker(lat, lon, icon, width=5.0, height=None, anchor=(0.5, 1.0), opacity=1.0)¶
Bases:
objectAn image marker at a single geographic position.
The image is anchored to the geographic position via
anchor, expressed as fractions of the icon width and height. The default(0.5, 1.0)anchors the bottom centre of the icon to the position, matching the typical map-pin convention.- Parameters:
lat (float) – Latitude of the anchor point.
lon (float) – Longitude of the anchor point.
icon (str | Path | Image.Image) – Path to an image file or a
PIL.Image.Imageinstance.width (float) – Rendered icon width on paper, in mm. Defaults to
5.0.height (float | None) – Rendered icon height on paper, in mm. When
None, the height is derived fromwidthand the icon’s aspect ratio.anchor (tuple[float, float]) – Anchor point within the icon as
(x, y)fractions of the icon width and height. Defaults to(0.5, 1.0)(bottom centre).opacity (float) – Opacity of the rendered icon, in
[0, 1]. Defaults to1.0.
- class papermap.features.Line(coordinates, stroke_color='#000', stroke_width=0.5, opacity=1.0, stroke_opacity=None)¶
Bases:
objectA polyline connecting two or more geographic positions.
- Parameters:
coordinates (Sequence[tuple[float, float]]) – Sequence of
(lat, lon)pairs. Must contain at least two positions.stroke_color (str) – Stroke colour as a CSS-style hex string. Defaults to
"#000".stroke_width (float) – Stroke width on paper, in mm. Defaults to
0.5.opacity (float) – Stroke opacity, in
[0, 1]. Defaults to1.0.stroke_opacity (float | None) – Stroke opacity. Defaults to
opacitywhenNone.
- class papermap.features.Polygon(coordinates, stroke_color='#000', stroke_width=0.5, fill_color=None, opacity=1.0, stroke_opacity=None, fill_opacity=None)¶
Bases:
objectA polygon, optionally with interior holes.
- Parameters:
coordinates (Sequence[Sequence[tuple[float, float]]]) – Sequence of rings, where each ring is a sequence of
(lat, lon)pairs. The first ring is the outer boundary; any subsequent rings are interior holes.stroke_color (str | None) – Outline colour as a CSS-style hex string, or
Noneto omit the outline. Defaults to"#000".stroke_width (float) – Outline width on paper, in mm. Defaults to
0.5.fill_color (str | None) – Fill colour as a CSS-style hex string, or
Nonefor an unfilled polygon. Defaults toNone.opacity (float) – Overall opacity, in
[0, 1]. Defaults to1.0.stroke_opacity (float | None) – Outline opacity. Defaults to
opacitywhenNone.fill_opacity (float | None) – Fill opacity. Defaults to
opacitywhenNone.
Note
A polygon spanning the ±180° anti-meridian will draw across the entire map (the geometry is not auto-split). Pre-split such polygons before adding them.
- papermap.features.MapFeature: TypeAlias = papermap.features.CircleMarker | papermap.features.IconMarker | papermap.features.Line | papermap.features.Polygon¶
Union type alias for any feature that can be rendered on the map.
- papermap.features.iter_feature_coordinates(feature)¶
Yield every
(lat, lon)coordinate referenced by a feature.For
CircleMarkerandIconMarker, the marker’s single anchor position is yielded. ForLine, every vertex is yielded. ForPolygon, every vertex of every ring (outer boundary and holes) is yielded.- Parameters:
feature (MapFeature) – The feature to iterate over.
- Yields:
(lat, lon)pairs, in the order they appear on the feature.
papermap.geojson Module¶
GeoJSON parsing — turn .geojson files (or GeoJSON objects) into map features.
The geojson_to_features() function accepts either a path to a GeoJSON
file or a GeoJSON object (or any object implementing the __geo_interface__
protocol) and returns a flat list of MapFeature
instances.
- class papermap.geojson.SupportsGeoInterface(*args, **kwargs)¶
Bases:
ProtocolProtocol for objects exposing the
__geo_interface__attribute.
- papermap.geojson.geojson_to_features(geojson_source, style=None)¶
Convert a GeoJSON file path or a GeoJSON object to map features.
When parsing a
Featurewhosepropertiescontain simplestyle-spec keys (stroke,stroke-width,stroke-opacity,fill,fill-opacity), those properties take precedence overstyle.- Parameters:
geojson_source (str | Path | dict[str, Any] | SupportsGeoInterface) – A path to a
.geojsonfile (strorpathlib.Path), or a GeoJSON dict (or an object exposing the__geo_interface__protocol).style (dict[str, Any] | None) – Default styling applied to every parsed feature. Keys must match the corresponding dataclass fields (e.g.
stroke_color,fill_color,stroke_width,opacity).
- Returns:
A flat list of feature dataclasses. Points become
CircleMarker, line strings becomeLine, and polygons becomePolygon.- Raises:
TypeError – If the input is neither a path-like, nor a dict nor an object exposing
__geo_interface__.ValueError – If the object’s
typefield is missing or unrecognised.
- Return type:
list[CircleMarker | IconMarker | Line | Polygon]
papermap.gpx Module¶
GPX parsing — turn .gpx files (or gpx.GPX objects) into map features.
The gpx_to_features() function accepts either a path to a GPX file
or any object exposing the __geo_interface__ protocol (e.g.
an instance from the gpx library) and
returns a flat list of MapFeature instances by
delegating to geojson_to_features().
GPX objects from the upstream gpx library expose a
FeatureCollection via __geo_interface__:
Waypoints become
Pointfeatures →CircleMarker.Routes become
LineStringfeatures →Line.Tracks become
MultiLineStringfeatures → oneLineper track segment.
Reading GPX files from disk requires the optional gpx package. Install
it with pip install papermap[gpx]. Parsing an already-loaded object
that exposes __geo_interface__ does not require the optional package.
- papermap.gpx.gpx_to_features(gpx_source, style=None)¶
Convert a GPX file path or GPX object to map features.
- Parameters:
gpx_source (str | Path | SupportsGeoInterface) – A path to a
.gpxfile (strorpathlib.Path), or any object exposing the__geo_interface__protocol (e.g. agpx.GPXinstance).style (dict[str, Any] | None) – Default styling forwarded to
geojson_to_features(). See that function for the supported keys.
- Returns:
A flat list of feature dataclasses. Waypoints become
CircleMarker, routes becomeLine, and each segment of each track becomes its ownLine.- Raises:
ImportError – If
gpx_sourceis a path and the optionalgpxpackage is not installed.TypeError – If
gpx_sourceis neither a path-like nor an object exposing__geo_interface__.
- Return type:
papermap.tile Module¶
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:
objectA 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.
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.
Each provider module is expected to expose a module-level
TILE_PROVIDERS: list[TileProvider] attribute. Modules are discovered
automatically; adding a new module under papermap/tile_providers/ is
sufficient to register its providers here.
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://server.arcgisonline.com/ArcGIS/rest/services/Specialty/DeLorme_World_Base_Map/MapServer/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://server.arcgisonline.com/ArcGIS/rest/services/NatGeo_World_Map/MapServer/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://server.arcgisonline.com/ArcGIS/rest/services/Ocean/World_Ocean_Base/MapServer/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://server.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Light_Gray_Base/MapServer/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://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/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://server.arcgisonline.com/ArcGIS/rest/services/World_Physical_Map/MapServer/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://server.arcgisonline.com/ArcGIS/rest/services/World_Shaded_Relief/MapServer/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://server.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer/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://server.arcgisonline.com/ArcGIS/rest/services/World_Terrain_Base/MapServer/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://server.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer/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}.mapserver.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://tileserver.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/MapServer/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/MapServer/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/MapServer/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='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='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='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='esri-worldstreetmap', name='Esri WorldStreetMap', attribution='Tiles © Esri', html_attribution='Tiles © <a href="https://www.esri.com/">Esri</a>', url_template='https://server.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer/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://server.arcgisonline.com/ArcGIS/rest/services/Specialty/DeLorme_World_Base_Map/MapServer/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://server.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer/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://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/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://server.arcgisonline.com/ArcGIS/rest/services/World_Terrain_Base/MapServer/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://server.arcgisonline.com/ArcGIS/rest/services/World_Shaded_Relief/MapServer/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://server.arcgisonline.com/ArcGIS/rest/services/World_Physical_Map/MapServer/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://server.arcgisonline.com/ArcGIS/rest/services/Ocean/World_Ocean_Base/MapServer/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://server.arcgisonline.com/ArcGIS/rest/services/NatGeo_World_Map/MapServer/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://server.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Light_Gray_Base/MapServer/tile/{z}/{y}/{x}', zoom_min=0, zoom_max=16, bounds=None, subdomains=None, 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='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='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://tileserver.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}.mapserver.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>), 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='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='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='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='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='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='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='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='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/MapServer/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/MapServer/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/MapServer/tile/{z}/{y}/{x}', zoom_min=0, zoom_max=20, 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>)]¶
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.clip(val, lower, upper)¶
Clips a value to [lower, upper] range.
- papermap.utils.lon_to_x(lon, zoom)¶
Converts longitude to x (tile coordinate), given a zoom level.
- papermap.utils.x_to_lon(x, zoom)¶
Converts x (tile coordinate) to longitude, given a zoom level.
- papermap.utils.lat_to_y(lat, zoom)¶
Converts latitude to y (tile coordinate), given a zoom level.
- papermap.utils.y_to_lat(y, zoom)¶
Converts y (tile coordinate) to latitude, given a zoom level.
- papermap.utils.x_to_px(x, x_center, width, tile_size=256)¶
Convert x (tile coordinate) to pixels.
- papermap.utils.y_to_px(y, y_center, height, tile_size=256)¶
Convert y (tile coordinate) to pixel.
- papermap.utils.mm_to_px(mm, dpi=300)¶
Convert millimeters to pixels, given the dpi.
- papermap.utils.px_to_mm(px, dpi=300)¶
Convert pixels to millimeters, given the dpi.
- papermap.utils.mm_to_pt(mm)¶
Convert millimeters to points.
- papermap.utils.pt_to_mm(pt)¶
Convert points to millimeters.
- papermap.utils.dd_to_dms(dd)¶
Convert Decimal Degrees (DD) to Degrees, Minutes, and Seconds (DMS).
- papermap.utils.dms_to_dd(dms)¶
Convert Degrees, Minutes, and Seconds (DMS) to Decimal Degrees (DD).
- papermap.utils.scale_to_zoom(scale, lat, dpi=300)¶
Compute the zoom level, given the latitude, scale and dpi.
- papermap.utils.zoom_to_scale(zoom, lat, dpi=300)¶
Compute the scale, given the latitude, zoom level and dpi.
- papermap.utils.get_string_formatting_arguments(s)¶
Extracts field names from a format string.
- papermap.utils.is_out_of_bounds(test, bounds)¶
Checks if a bounding box exceeds the specified bounds.
- papermap.utils.drange(start, stop, step)¶
Yields Decimal values from start to stop with the given step size.