skip to navigation
skip to content

Not Logged In

landez 2.1.1

Landez is a python toolbox to manipulate map tiles.

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.

https://travis-ci.org/makinacorpus/landez.png https://coveralls.io/repos/makinacorpus/landez/badge.png

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.sources 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(mbreader.tile(z, x, y))

# UTF-Grid tile
print mbreader.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

http://depot.makina-corpus.org/public/logo.gif

LICENSE

  • Lesser GNU Public License

CHANGELOG

2.1.1 (2013-08-27)

  • Do not hard-code grid(); JSONP callback.

2.1.0 (2013-08-27)

  • Add TMS support (ebrehault)
  • Add default subdomains argument for TileSource
  • Add ability to set HTTP headers for tiles
  • Fix file corruption on Windows (by @osuchw)

2.0.3 (2013-05-03)

  • Fix Mapnik signature on render()

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
 
File Type Py Version Uploaded on Size
landez-2.1.1.zip (md5) Source 2013-08-27 27KB
  • Downloads (All Versions):
  • 3 downloads in the last day
  • 238 downloads in the last week
  • 1381 downloads in the last month