Skip to main content

ArcGIS Tile Package Utilities

Project description

A Python 3.5 library for reading tiles and exporting tools from ArcGIS Tile Packages which contain tile caches using the ArcGIS Compact Tile Cache

Build Status Coverage Status

Goals

  • easy access to tiles in a tile package
  • export to mbtiles, for hosting on any of a variety of mbtiles servers, such as mbtileserver

Usage

Python API

Open a tile package:

from tpkutils import TPK

tpk = TPK('my_tiles.tpk')

Tile access

You can iterate over individual tiles - for instance, to save to disk.
Tiles are returned as a namedtuple: Tile(z, x, y, data):
for tile in tpk.read_tiles():
    with open('{0}_{1}_{2}.png'.format(tile.x, tile.y, tile.z), 'wb') as outfile:
        outfile.write(tile.data)

You can also just read tiles for a given zoom level or levels:

tpk.read_tiles(zoom=[4])
By default, tiles are returned according to the ArcGIS tile scheme.
To output tiles in xyz scheme, the y-value needs to be flipped:
tpk.read_tiles(flip_y=True)

Note: no direct interface to read a single tile or tiles specified by x or y is currently provided.

Export to mbtiles

You can export a tile package to a MapBox mbtiles v1.1 file:

tpk.to_mbtiles('my_tiles.mbtiles')

Or just export a subset of zoom levels:

tpk.to_mbtiles('fewer_tiles.mbtiles', zoom=[0,1,2,3,4])

Note: tiles are output to mbtiles format in xyz tile scheme.

Also note: mixed format tiles are not supported for export to mbtiles.

Note

All tile packages are assumed to follow the Web Mercator Tiling Scheme (Google/Bing/etc), and be in the Web Mercator coordinate reference system.

Developed and tested using image tile packages created using ArcGIS 10.3; however, these appear to use the 10.1 compact bundle format.

ArcGIS Server 10.3 introduced a new version of the compact bundle, which is not handled here yet. If you want this, please submit an issue with a small test file in 10.3 format.

Tile packages created using other versions may not work correctly (please log an issue with test data).

Versions from ArcGIS older than 10.1 are unlikely to be supported.

No support for Python 2 is planned.

Credits:

Tile package format is described here.

Inspired by: * tiler-arcgis-bundle * mbutiles * node-mbtiles

SQL for creating mbtiles database derived from node-mbtiles

ArcGIS is a trademark of of ESRI and is used here to refer to specific technologies. No endorsement by ESRI is implied.

Project details


Download files

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

Files for tpkutils, version 0.1.0
Filename, size File type Python version Upload date Hashes
Filename, size tpkutils-0.1.0-py3.5.egg (18.3 kB) File type Egg Python version 3.5 Upload date Hashes View
Filename, size tpkutils-0.1.0.tar.gz (6.9 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page