Skip to main content

MapBox Mbtiles Utilities

Project description

Mapbox MBtiles Utilities

A Python 2.7 and 3 library for working with Mabox mbtiles v1.1

Build Status Coverage Status

Features

Provides a lighweight Python API for reading and writing mbtiles files.

Mabox mbtiles v1.1 allow you to store geographic data as rendered image tiles or as vector tiles, along with associated metadata.

Installation

pip install pymbtiles

To install from master branch on GitHub using pip:

pip install git+https://github.com/consbio/pymbtiles.git#egg=pymbtiles --upgrade

Usage

Python API

open for reading and read a tile:

from pymbtiles import MBTiles
with MBtiles('my.mbtiles') as src:
    tile_data = src.read_tile(z=0, x=0, y=0)

returns tile data in bytes.

open for writing (existing file will be overwritten):

with MBtiles('my.mbtiles', mode='w') as out:
    out.write_tile(z=0, x=0, y=0, tile_data)

or write a bunch of tiles at once:

from pymbtiles import MBTiles, Tile

tiles = (
    Tile(z=1, x=0, y=0, tile_data=first_tile),
    ...
)

with MBtiles('my.mbtiles', mode='w') as out:
    out.write_tiles(tiles)

Use r+ mode to read and write.

Metadata is stored in the meta attribute of the mbtiles instance:

with MBtiles('my.mbtiles') as src:
    metadata = src.meta

This metadata is stored in the metadata table in the mbtiles file, and contains a number of records required or optional under the mbtiles specification .

To update metadata:

with MBtiles('my.mbtiles', 'r+') as out:
    out.meta['some_key'] = 'some_value'

You can set several values at once by passing in a new dict object:

with MBtiles('my.mbtiles', 'w') as out:
    out.meta = my_metadata_dict

Listing available tiles

To list available tiles in the tileset:

with MBtiles('my.mbtiles') as src:
    for tile_coords in src.list_tiles():  # [TileCoordinate(z, x, y)...]
        ...

WARNING: for large tilesets, this can exceed available memory.

To list available tilesets for large tilesets, use:

with MBtiles('my.mbtiles') as src:
    for batch in src.list_tiles_batched():
        for tile_coords in batch: # [TileCoordinate(z, x, y)...]
            ...

Set operations

The ops module provides extend, union, and difference functions to perform set operations on tilesets.

Extend a tileset with new tiles from a second:

extend(source_filename, target_filename)

Create a new tileset with unique tiles combined from both left and right tilesets:

union(left_filename, right_filename, out_filename)

Create a new tileset from the tileset in the left tileset not present in the right tileset:

difference(left_filename, right_filename, out_filename)

Tile Scheme

Tiles are output to mbtiles format in xyz tile scheme.

Possibly useful:

  • mbtileserver: a lightweight Go tile server
  • tpkutils: a library for converting ArcGIS tile cache to mbtiles

Changes :

0.4.0

  • added list_tiles to list tiles and list_tiles_batch to list tiles in batches
  • added ops module with extend, union, difference functions

0.3.0

  • all write-like operations for metadata and tiles are now overwrite by default

Credits:

Inspired by:

SQL for creating mbtiles database derived from node-mbtiles

License:

See LICENSE.md

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

pymbtiles-0.4.0.tar.gz (6.8 kB view details)

Uploaded Source

Built Distribution

pymbtiles-0.4.0-py3-none-any.whl (8.7 kB view details)

Uploaded Python 3

File details

Details for the file pymbtiles-0.4.0.tar.gz.

File metadata

  • Download URL: pymbtiles-0.4.0.tar.gz
  • Upload date:
  • Size: 6.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.4.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

File hashes

Hashes for pymbtiles-0.4.0.tar.gz
Algorithm Hash digest
SHA256 cfa590a19e990377934a76ca9c6d0883c25ac1ba3c261dedf25df1ee15fe4f83
MD5 423639d303220c9766af9309b7289cfc
BLAKE2b-256 ae9644f352bb36e28282f8b6278e9604d9a4174d635752580bdcff0a61f9ae6e

See more details on using hashes here.

Provenance

File details

Details for the file pymbtiles-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: pymbtiles-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 8.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.4.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

File hashes

Hashes for pymbtiles-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9309569b07477799addb8fc071eb57395209a30d0cdbf93989835677eae3d538
MD5 0239809259210ef67545a4913eeee0e9
BLAKE2b-256 7c274af601eeb96094719a3ca90810be4821a5e42031dc680c9e8c35b740a54f

See more details on using hashes here.

Provenance

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