{"id":20757855,"url":"https://github.com/amdmi3/tiletool","last_synced_at":"2025-04-29T23:48:45.034Z","repository":{"id":3140809,"uuid":"4169866","full_name":"AMDmi3/tiletool","owner":"AMDmi3","description":"Map tile processing tool","archived":false,"fork":false,"pushed_at":"2017-05-11T13:27:18.000Z","size":163,"stargazers_count":18,"open_issues_count":2,"forks_count":9,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-29T23:48:39.698Z","etag":null,"topics":["graphics","openstreetmap","tiles"],"latest_commit_sha":null,"homepage":"http://wiki.openstreetmap.org/wiki/Tiletool","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AMDmi3.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2012-04-28T19:50:58.000Z","updated_at":"2025-01-06T10:51:40.000Z","dependencies_parsed_at":"2022-09-21T09:41:58.841Z","dependency_job_id":null,"html_url":"https://github.com/AMDmi3/tiletool","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AMDmi3%2Ftiletool","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AMDmi3%2Ftiletool/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AMDmi3%2Ftiletool/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AMDmi3%2Ftiletool/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AMDmi3","download_url":"https://codeload.github.com/AMDmi3/tiletool/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251602602,"owners_count":21615957,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["graphics","openstreetmap","tiles"],"created_at":"2024-11-17T09:46:05.966Z","updated_at":"2025-04-29T23:48:45.012Z","avatar_url":"https://github.com/AMDmi3.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# tiletool\n\n[![Build Status](https://travis-ci.org/AMDmi3/tiletool.svg?branch=master)](https://travis-ci.org/AMDmi3/tiletool)\n\nA tool for processing pregenerated sets of digital map tiles.\n\nEach tile of lower zoom covers 4x more area, so it has 4x more features\nand thus is 4x harder to render. Because of that, for some renderers\nlower zoom tiles are not frequently updated and/or contain much less\nfeatures than higher zoom tiles, which is not really good. Main purpose\nof this utility is to fix or at least improve this situation, as it\nallows to render lowzoom tiles using higher zooms. It also allows to\nblend semitransparent overlays with the tileset, producing full-fledged\nmap tiles without producing extra load on renderers.\n\n## Features\n\n- Generation of lower-level tiles from higher-level\n- Applying semitransparent overlays\n- Merging several tilesets together\n- Running arbitrary commands on tiles\n\n## Building\n\nOnly required dependencies are cmake and libpng. To compile:\n\n    cmake . \u0026\u0026 make\n\nTo run tests, after building run:\n\n    make test\n\nTo install systemwide:\n\n    make install\n\n## Usage\n\n```\ntiletool \u003cOPTIONS\u003e\n\nOptions:\n-0..-9\n    Set png compression level. Default is 2.\n\n-b, --input-bounds=\u003cBBOX\u003e\n    Limit processing with bounding box (implies same limit to\n    output).\n\n-B, --output-bounds=\u003cBBOX\u003e\n    Limit output with bounding box.\n\n    You may use -B when you need all tiles processed, but only\n    specific subset of tiles written.\n\n    There are two ways of specifying bounding boxes:\n\n      zoom/x/y\n        bbox is limited by tile with specified zoom and coordinates\n        for example, -b 8/0/0 is upper-leftmost tile at zoom 8.\n        Ranges are supported for x and y values, for example\n        -b 5/1-12/5-9\n\n      left,bottom,right,top\n        Usual bounding box in geographical coordinates. For example:\n\n        37.3,55.53,37.93,55.95 - approximate bbox for Moscow (Russia)\n\n-z, --input-zoom=\u003cZOOM or MINZOOM-MAXZOOM\u003e\n    Specify which zoom (or zoom range) will be used for input tiles.\n\n-Z, --output-zoom=\u003cZOOM or MINZOOM-MAXZOOM\u003e\n    Specify for which zoom (or zoom range) tiles will be generated.\n\n    One of above two options must be specified. If input zoom is not\n    specified, it's set to (max output zoom + 1). If output zoom is\n    not specified, it's set to 0-(min output zoom).\n\n    For example, if you have level 6 tiles and you need to generate\n    level 0-5 tiles based on it, you may either specify:\n\n    -z 6 -Z 0-5\n    -z 6        (output zoom is automatically set to 0-5)\n    -Z 0-5      (input zoom is automatically set to 6)\n\n    Ranges must not be adjascent, for example you may generate level 0\n    tile based on level 6 tiles:\n\n    -z 0 -Z 6\n\n-e, --empty-tile=\u003cPATH\u003e\n    Specify a file to be used instead of tiles which are not found in\n    the input set. You may omit it if your input tile set is complete,\n    but the process will fail if empty tile is not set and input tile\n    is missing.\n\n-j, --jobs=\u003cN\u003e\n    Set maximum number of spawned child processes. By default it is 0\n    and no child processes are spawned, all tiles are processed\n    sequentionally. If this is \u003e 0, tile loading and merging is still\n    done sequentionally (this can't be paralleled), but overlay\n    loading/applying, and saving for each tile is done in a child\n    process. Note that -j 0 (no parallelization) is not the same as\n    -j 1 (one child).\n\n-i, --input=\u003cINPUT TILESET\u003e\n    Specify path to directory which contains input tiles.\n    You may specify this option multiple times to provide fallback\n    tilesets.\n\n-o, --output=\u003cOUTPUT TILESET\u003e\n    Specify path to directory to store output tiles in. Required.\n\n-l, --overlay=\u003cOVERLAY TILESET\u003e\n    Specify path to overlay which will be blended with output tiles.\n    You may specify this option multiple times to use multiple\n    overlays.\n\n-c, --postcmd=\u003cCOMMAND\u003e\n    Specify a command to be run on a newly saved tile. You may want to\n    set this to, for example, 'optipng -quiet -o1'.\n\n-v, --verbose\n    Increase verbosity.\n\n-h, --help\n    Display help on options.\n```\n\n## Examples\n\n1. For example, you have zoom 8 tiles in mapnik/ directory, and set\n   of transparent tiles with captions in a captions/ directory. You may\n   generate all missing zooms (0-7) with the following command:\n\n       tiletool -z 8 -l captions -i mapnik -o output\n\n   resulting tiles will be saved in output/.\n\n2. Now, you have some tiles in the original tileset updated and you want\n   to only regenerate affected lowzoom tiles. Unfortunately, you need to\n   generate all lowzoom tiles from scratch (your previous output is\n   unuseable as it has overlay applied), but fortunately you don't need to\n   recreated unaffected tiles, thus though you need to walk whole tile tree,\n   most expensive operations (blending and png saving) will only be run on\n   updated tiles.\n\n   For example, Moscow fits into two tiles on z8, so if these are updated,\n   you should run:\n\n       tiletool -B 8/154/79-80 -z 8 -o captions -i mapnik -o output\n\n3. You may use optipng to optimized your tiles to save space \u0026 traffic:\n\n       tiletool -c 'optipng -quiet -o1' -z 8 -o captions -i mapnik -o output\n\n   You may also add -1 to spend less time compressing tiles that will\n   be recompressed anyway.\n\n## License\n\nGNU GPLv3+, see [COPYING](COPYING).\n\nBundled libttip (image processing library) is licensed under LGPLv3+.\n\n## Author\n\n* [Dmitry Marakasov](https://github.com/AMDmi3) \u003camdmi3@amdmi3.ru\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famdmi3%2Ftiletool","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Famdmi3%2Ftiletool","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famdmi3%2Ftiletool/lists"}