Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Landez manipulates tiles, builds MBTiles, does tiles compositing and arrange tiles together into single images.

Tiles can either be obtained from a remote tile service URL, from a local Mapnik stylesheet, a WMS server or from MBTiles files.

For building MBTiles, Landez embeds mbutil from Mapbox https://github.com/mapbox/mbutil at the final stage. The land covered is specified using a list of bounding boxes and zoom levels.

INSTALL

Landez is pure python and has no external dependency.

However, it requires mapnik if the tiles are rendered locally.

sudo aptitude install python-mapnik

And PIL to blend tiles together or export arranged tiles into images.

sudo aptitude install python-imaging

USAGE

Building MBTiles files

Remote tiles

Using a remote tile service (OpenStreetMap.org by default):

import logging
from landez import MBTilesBuilder

logging.basicConfig(level=logging.DEBUG)

mb = MBTilesBuilder(cache=False)
mb.add_coverage(bbox=(-180.0, -90.0, 180.0, 90.0),
                zoomlevels=[0, 1])
mb.run()

Please respect Tile usage policies <http://wiki.openstreetmap.org/wiki/Tile_usage_policy>

Local rendering

Using mapnik to render tiles:

import logging
from landez import MBTilesBuilder

logging.basicConfig(level=logging.DEBUG)

mb = MBTilesBuilder(stylefile="yourstyle.xml", filepath="dest.mbtiles")
mb.add_coverage(bbox=(-180.0, -90.0, 180.0, 90.0),
                zoomlevels=[0, 1])
mb.run()

From an other MBTiles file

import logging
from landez import MBTilesBuilder

logging.basicConfig(level=logging.DEBUG)

mb = MBTilesBuilder(mbtiles_file="yourfile.mbtiles", filepath="dest.mbtiles")
mb.add_coverage(bbox=(-180.0, -90.0, 180.0, 90.0),
                zoomlevels=[0, 1])
mb.run()

From a WMS server

mb = MBTilesBuilder(wms_server="http://yourserver.com/geoserver/wms",
                    wms_layers=["ign:departements"],
                    wms_options=dict(format="image/png",
                                     transparent=True),
                    filepath="dest.mbtiles")
mb.add_coverage(bbox=([-0.9853,43.6435.1126,44.0639]))
mb.run()

Blend tiles together

Merge multiple sources of tiles (URL, WMS, MBTiles, Mapnik stylesheet) together. (requires python PIL)

For example, build a new MBTiles by blending tiles of a MBTiles on top of OpenStreetMap tiles :

mb = MBTilesBuilder(filepath="merged.mbtiles")
overlay = TilesManager(mbtiles_file="carto.mbtiles")
mb.add_layer(overlay)
mb.run()

Or composite a WMS layer with OpenStreetMap using transparency (40%):

mb = MBTilesBuilder(wms_server="http://yourserver.com/geoserver/wms",
                    wms_layers=["img:orthophoto"])
overlay = TilesManager(remote=True)
mb.add_layer(overlay, 0.4)
mb.run()

Export Images

Assemble and arrange tiles together into a single image. (requires python PIL)

Specify tiles sources in the exact same way as for building MBTiles files.

import logging
from landez import ImageExporter

logging.basicConfig(level=logging.DEBUG)

ie = ImageExporter(mbtiles_file="yourfile.mbtiles")
ie.export_image(bbox=(-180.0, -90.0, 180.0, 90.0), zoomlevel=3, imagepath="image.png")

Add post-processing filters

Convert map tiles to gray scale, more suitable for information overlay :

from landez.filters import GrayScale

ie = ImageExporter()
ie.add_filter(GrayScale())

Replace a specific color by transparent pixels (i.e. color to alpha, a-la-Gimp) :

from landez.filters import ColorToAlpha

overlay = TileManager()
overlay.add_filter(ColorToAlpha('#ffffff'))  # white will be transparent

ie = ImageExporter()
ie.add_layer(overlay)
...

Extract MBTiles content

from landez.reader import MBTilesReader

mbreader = MBTilesReader("yourfile.mbtiles")

# Metadata
print mbreader.metadata()

# Zoom levels
print mbreader.zoomlevels()

# Image tile
with open('tile.png', 'wb') as out:
    out.write(reader.tile(z, x, y))

# UTF-Grid tile
print reader.grid(z, x, y, 'callback')

Manipulate tiles

from landez import MBTilesBuilder

# From a TMS tile server
# tm = TilesManager(tiles_url="http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png")

# From a MBTiles file
tm = TilesManager(mbtiles_file="yourfile.mbtiles")

tiles = tm.tileslist(bbox=(-180.0, -90.0, 180.0, 90.0),
                     zoomlevels=[0, 1])
for tile in tiles:
    tilecontent = tm.tile(tile)  # download, extract or take from cache
    ...

AUTHORS

LICENSE

  • Lesser GNU Public License

CHANGELOG

2.0.3 (unreleased)

  • Nothing changed yet.

2.0.2 (2012-06-21)

  • Prevent the whole image to be converted to grayscale

  • Explicitly check http status code at tiles download

2.0.1 (2012-05-29)

  • Fix infinite loop on blending layers

2.0.0 (2012-05-25)

  • Rework cache mechanism

  • Jpeg tiles support (#14)

  • Remove use of temporary files

  • Image post-processing (#11)

2.0.0-alpha (2012-05-23)

  • Refactoring of whole stack

1.8.2 (2012-03-27)

  • Fix Mapnik rendering

1.8.1 (2012-02-24)

  • Fix MBTiles cache cleaning

1.8 (2012-02-24)

  • WMS support

  • Tiles compositing

1.7 (2012-02-17)

  • Catch Sqlite exceptions

1.6 (2012-02-08)

  • UTF-Grid support for MBTiles files

1.5 (2011-12-07)

  • Subdomain support for tiles servers

  • Low level tiles manipulation

  • Use i18n

1.4 (2011-10-17)

  • Remove extra logging message of mbutil

1.3 (2011-09-23)

  • Export set of tiles into single image

1.2 (2011-06-21)

  • Raise exception if no tiles in coverages

1.1 (2012-04-18)

  • Move internals to landez module

  • Split projection into separate module

1.0 (2011-04-18)

  • Initial working version

Release files for umilandez 2.0.3.dev0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for umilandez 2.0.3.dev0
File Size Uploaded
umilandez-2.0.3.dev0.tar.gz 20.5 kB Details

Release files / umilandez-2.0.3.dev0.tar.gz

Download URL umilandez-2.0.3.dev0.tar.gz
Size 20.5 kB
Tags Source
SHA-256 checksum
How to use checksums
35448b2a6843cc18678ea0e59c27bd6cd524b4cbac085688f070b28ae7661682
BLAKE2b-256 checksum
How to use checksums
074d2e44f2c06fdd08cd2fedf3e6d11c2c1bde4431e899bb6c4e59f33306c9be
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

2.0.3.dev0 This release

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page