Skip to main content

Web mercator XYZ tile utilities

Project description

Build Status Coverage Status Documentation Status

Spherical mercator coordinate and tile utilities

Documentation: http://mercantile.readthedocs.io/en/latest/

The mercantile module provides ul(xtile, ytile, zoom) and bounds(xtile, ytile, zoom) functions that respectively return the upper left corner and bounding longitudes and latitudes for XYZ tiles, a xy(lng, lat) function that returns spherical mercator x and y coordinates, a tile(lng, lat, zoom) function that returns the tile containing a given point, and quadkey conversion functions quadkey(xtile, ytile, zoom) and quadkey_to_tile(quadkey) for translating between quadkey and tile coordinates.

>>> import mercantile
>>> mercantile.ul(486, 332, 10)
LngLat(lng=-9.140625, lat=53.33087298301705)
>>> mercantile.bounds(486, 332, 10)
LngLatBbox(west=-9.140625, south=53.12040528310657, east=-8.7890625, north=53.33087298301705)
>>> mercantile.xy(*mercantile.ul(486, 332, 10))
(-1017529.7205322663, 7044436.526761846)
>> mercantile.xy_bounds(486, 332, 10)
Bbox(left=-1017529.7205322663, bottom=7005300.768279833, right=-978393.962050256, top=7044436.526761846)
>>> mercantile.tile(*mercantile.ul(486, 332, 10) + (10,))
Tile(x=486, y=332, z=10)
>>> mercantile.quadkey(486, 332, 10)
'0313102310'
>>> mercantile.quadkey_to_tile('0313102310')
Tile(x=486, y=332, z=10)

Also in mercantile are functions to traverse the tile stack.

>>> mercantile.parent(486, 332, 10)
Tile(x=243, y=166, z=9)
>>> mercantile.children(mercantile.parent(486, 332, 10))
[Tile(x=486, y=332, z=10), Tile(x=487, y=332, z=10), Tile(x=487, y=333, z=10), Tile(x=486, y=333, z=10)]

Named tuples are used to represent tiles, coordinates, and bounding boxes.

Mercantile CLI

Mercantile’s command line interface, named “mercantile”, has commands for getting the shapes of Web Mercator tiles as GeoJSON and getting the tiles that intersect with a GeoJSON bounding box.

$ mercantile --help
Usage: mercantile [OPTIONS] COMMAND [ARGS]...

  Command line interface for the Mercantile Python package.

Options:
  -v, --verbose  Increase verbosity.
  -q, --quiet    Decrease verbosity.
  --help         Show this message and exit.

Commands:
  bounding-tile  Print the bounding tile of a lng/lat point, bounding box, or
                 GeoJSON objects.
  children       Print the children of the tile.
  parent         print the parent tile.
  quadkey        Convert to/from quadkeys.
  shapes         Print the shapes of tiles as GeoJSON.
  tiles          Print tiles that overlap or contain a lng/lat point, bounding
                 box, or GeoJSON objects.

See docs/cli.rst for more about the mercantile program.

See Also

supermercado is another python lib with added tile logic functionality (union tile shapes, find edge tiles, and find tile intersections for complex geometries).

node-sphericalmercator provides many of the same features for Node.

tilebelt has some of the GeoJSON features as mercantile and a few more (tile parents, quadkey).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mercantile-1.0.4.tar.gz (9.5 kB view details)

Uploaded Source

Built Distributions

mercantile-1.0.4-py3-none-any.whl (10.3 kB view details)

Uploaded Python 3

mercantile-1.0.4-py2-none-any.whl (10.3 kB view details)

Uploaded Python 2

File details

Details for the file mercantile-1.0.4.tar.gz.

File metadata

  • Download URL: mercantile-1.0.4.tar.gz
  • Upload date:
  • Size: 9.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for mercantile-1.0.4.tar.gz
Algorithm Hash digest
SHA256 0278b393a05d17c3618c5f5da64488bb3707e14046fe36f594d7215db3b376c4
MD5 de18ef17c1559e0c2e049454661988a1
BLAKE2b-256 4e0a69c3b6db76d86baa442ac727aa650d652bd53262ffb8c2ec26424545733e

See more details on using hashes here.

File details

Details for the file mercantile-1.0.4-py3-none-any.whl.

File metadata

File hashes

Hashes for mercantile-1.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 db13b7d674a38ea69673898e96f6c6b33e3fd41ccbbfe8ba54860d427fa7d492
MD5 8353e67a5ca616f76f2c7a0b85c64703
BLAKE2b-256 1d9d1bec2ab2df26fee5db91bacbc021a8933ad0a7d0281fa867d181ae09ea3c

See more details on using hashes here.

File details

Details for the file mercantile-1.0.4-py2-none-any.whl.

File metadata

File hashes

Hashes for mercantile-1.0.4-py2-none-any.whl
Algorithm Hash digest
SHA256 e56a48313ab8b5ba26d4e601963df02ad989efba58589fce6f90ca9ffac04829
MD5 101dcfddc5a30081a1c02a1ccd6aa5f0
BLAKE2b-256 ce4785914c975c6092c90b816835618fd1c6c84e02f1673aafdc33ea86a7cdf2

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page