{ "info": { "author": "Mathieu Leplatre", "author_email": "mathieu.leplatre@makina-corpus.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python :: 2.6", "Topic :: Utilities" ], "description": "*Landez* manipulates tiles, builds MBTiles, does tiles compositing and arrange tiles together into single images.\n\nTiles can either be obtained from a remote tile service URL, from a local Mapnik stylesheet,\na WMS server or from MBTiles files.\n\nFor building MBTiles, Landez embeds *mbutil* from Mapbox https://github.com/mapbox/mbutil at the final stage.\nThe land covered is specified using a list of bounding boxes and zoom levels.\n\n\n=======\nINSTALL\n=======\n\n*Landez* is pure python and has no external dependency.\n\nHowever, it requires `mapnik` if the tiles are rendered locally. ::\n\n sudo aptitude install python-mapnik\n\nAnd `PIL` to blend tiles together or export arranged tiles into images. ::\n\n sudo aptitude install python-imaging\n\n\n=====\nUSAGE\n=====\n\nBuilding MBTiles files\n======================\n\nRemote tiles\n------------\n\nUsing a remote tile service (OpenStreetMap.org by default):\n::\n\n import logging\n from landez import MBTilesBuilder\n\n logging.basicConfig(level=logging.DEBUG)\n \n mb = MBTilesBuilder(cache=False)\n mb.add_coverage(bbox=(-180.0, -90.0, 180.0, 90.0), \n zoomlevels=[0, 1])\n mb.run()\n\nPlease respect `Tile usage policies `\n\nLocal rendering\n---------------\n\nUsing mapnik to render tiles:\n::\n\n import logging\n from landez import MBTilesBuilder\n \n logging.basicConfig(level=logging.DEBUG)\n \n mb = MBTilesBuilder(stylefile=\"yourstyle.xml\", filepath=\"dest.mbtiles\")\n mb.add_coverage(bbox=(-180.0, -90.0, 180.0, 90.0), \n zoomlevels=[0, 1])\n mb.run()\n\n\nFrom an other MBTiles file\n--------------------------\n::\n\n import logging\n from landez import MBTilesBuilder\n \n logging.basicConfig(level=logging.DEBUG)\n \n mb = MBTilesBuilder(mbtiles_file=\"yourfile.mbtiles\", filepath=\"dest.mbtiles\")\n mb.add_coverage(bbox=(-180.0, -90.0, 180.0, 90.0), \n zoomlevels=[0, 1])\n mb.run()\n\n\n\nFrom a WMS server\n-----------------\n::\n\n mb = MBTilesBuilder(wms_server=\"http://yourserver.com/geoserver/wms\", \n wms_layers=[\"ign:departements\"], \n wms_options=dict(format=\"image/png\", \n transparent=True),\n filepath=\"dest.mbtiles\")\n mb.add_coverage(bbox=([-0.9853,43.6435.1126,44.0639]))\n mb.run()\n\n\n\nBlend tiles together\n====================\n\nMerge multiple sources of tiles (URL, WMS, MBTiles, Mapnik stylesheet) together. *(requires python PIL)*\n\nFor example, build a new MBTiles by blending tiles of a MBTiles on top of OpenStreetMap tiles :\n\n::\n\n mb = MBTilesBuilder(filepath=\"merged.mbtiles\")\n overlay = TilesManager(mbtiles_file=\"carto.mbtiles\")\n mb.add_layer(overlay)\n mb.run()\n\nOr composite a WMS layer with OpenStreetMap using transparency (40%):\n\n:: \n\n mb = MBTilesBuilder(wms_server=\"http://yourserver.com/geoserver/wms\", \n wms_layers=[\"img:orthophoto\"])\n overlay = TilesManager(remote=True)\n mb.add_layer(overlay, 0.4)\n mb.run()\n\n\nExport Images\n=============\n\nAssemble and arrange tiles together into a single image. *(requires python PIL)*\n\nSpecify tiles sources in the exact same way as for building MBTiles files.\n\n::\n\n import logging\n from landez import ImageExporter\n \n logging.basicConfig(level=logging.DEBUG)\n \n ie = ImageExporter(mbtiles_file=\"yourfile.mbtiles\")\n ie.export_image(bbox=(-180.0, -90.0, 180.0, 90.0), zoomlevel=3, imagepath=\"image.png\")\n\n\nAdd post-processing filters\n===========================\n\nConvert map tiles to gray scale, more suitable for information overlay :\n\n::\n\n from landez.filters import GrayScale\n \n ie = ImageExporter()\n ie.add_filter(GrayScale())\n\nReplace a specific color by transparent pixels (i.e. color to alpha, *a-la-Gimp*) :\n\n::\n\n from landez.filters import ColorToAlpha\n \n overlay = TileManager()\n overlay.add_filter(ColorToAlpha('#ffffff')) # white will be transparent\n \n ie = ImageExporter()\n ie.add_layer(overlay)\n ...\n\n\nExtract MBTiles content\n=======================\n\n:: \n\n from landez.reader import MBTilesReader\n \n mbreader = MBTilesReader(\"yourfile.mbtiles\")\n \n # Metadata\n print mbreader.metadata()\n \n # Zoom levels\n print mbreader.zoomlevels()\n \n # Image tile\n with open('tile.png', 'wb') as out:\n out.write(reader.tile(z, x, y))\n \n # UTF-Grid tile\n print reader.grid(z, x, y, 'callback')\n\n\n\nManipulate tiles\n================\n\n::\n\n from landez import MBTilesBuilder\n \n # From a TMS tile server\n # tm = TilesManager(tiles_url=\"http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png\")\n \n # From a MBTiles file\n tm = TilesManager(mbtiles_file=\"yourfile.mbtiles\")\n \n tiles = tm.tileslist(bbox=(-180.0, -90.0, 180.0, 90.0), \n zoomlevels=[0, 1])\n for tile in tiles:\n tilecontent = tm.tile(tile) # download, extract or take from cache\n ...\n\n\n=======\nAUTHORS\n=======\n\n * Mathieu Leplatre \n * Sergej Tatarincev\n * Thanks to mbutil authors \n\n=======\nLICENSE\n=======\n\n * Lesser GNU Public License\n\n\n=========\nCHANGELOG\n=========\n\n2.0.3 (unreleased)\n==================\n\n- Nothing changed yet.\n\n\n2.0.2 (2012-06-21)\n==================\n\n* Prevent the whole image to be converted to grayscale\n* Explicitly check http status code at tiles download\n\n2.0.1 (2012-05-29)\n==================\n\n* Fix infinite loop on blending layers\n\n2.0.0 (2012-05-25)\n==================\n\n* Rework cache mechanism\n* Jpeg tiles support (#14)\n* Remove use of temporary files \n* Image post-processing (#11)\n\n2.0.0-alpha (2012-05-23)\n========================\n\n* Refactoring of whole stack\n\n1.8.2 (2012-03-27)\n==================\n\n* Fix Mapnik rendering\n\n1.8.1 (2012-02-24)\n==================\n\n* Fix MBTiles cache cleaning\n\n1.8 (2012-02-24)\n================\n\n* WMS support\n* Tiles compositing\n\n1.7 (2012-02-17)\n================\n\n* Catch Sqlite exceptions\n\n1.6 (2012-02-08)\n================\n\n* UTF-Grid support for MBTiles files\n\n1.5 (2011-12-07)\n================\n\n* Subdomain support for tiles servers\n* Low level tiles manipulation\n* Use i18n\n\n1.4 (2011-10-17)\n================\n\n* Remove extra logging message of mbutil\n\n1.3 (2011-09-23)\n================\n\n* Export set of tiles into single image\n\n1.2 (2011-06-21)\n================\n\n* Raise exception if no tiles in coverages\n\n1.1 (2012-04-18)\n================\n\n* Move internals to landez module\n* Split projection into separate module\n\n1.0 (2011-04-18)\n================\n\n* Initial working version", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/urbanmapping/landez", "keywords": "MBTiles,Mapnik", "license": "LPGL, see LICENSE file.", "maintainer": null, "maintainer_email": null, "name": "umilandez", "package_url": "https://pypi.org/project/umilandez/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/umilandez/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/urbanmapping/landez" }, "release_url": "https://pypi.org/project/umilandez/2.0.3.dev0/", "requires_dist": null, "requires_python": null, "summary": "Landez is a python toolbox to manipulate map tiles.", "version": "2.0.3.dev0" }, "last_serial": 801206, "releases": { "2.0.3.dev0": [ { "comment_text": "", "digests": { "md5": "2ab56607a92322ec4cb9297662b678b0", "sha256": "35448b2a6843cc18678ea0e59c27bd6cd524b4cbac085688f070b28ae7661682" }, "downloads": -1, "filename": "umilandez-2.0.3.dev0.tar.gz", "has_sig": false, "md5_digest": "2ab56607a92322ec4cb9297662b678b0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20544, "upload_time": "2013-02-12T20:30:43", "url": "https://files.pythonhosted.org/packages/07/4d/2e44f2c06fdd08cd2fedf3e6d11c2c1bde4431e899bb6c4e59f33306c9be/umilandez-2.0.3.dev0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "2ab56607a92322ec4cb9297662b678b0", "sha256": "35448b2a6843cc18678ea0e59c27bd6cd524b4cbac085688f070b28ae7661682" }, "downloads": -1, "filename": "umilandez-2.0.3.dev0.tar.gz", "has_sig": false, "md5_digest": "2ab56607a92322ec4cb9297662b678b0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20544, "upload_time": "2013-02-12T20:30:43", "url": "https://files.pythonhosted.org/packages/07/4d/2e44f2c06fdd08cd2fedf3e6d11c2c1bde4431e899bb6c4e59f33306c9be/umilandez-2.0.3.dev0.tar.gz" } ] }