管理瓦片工具
项目描述
TileCloud
一个用于生成、管理、转换和可视化多种格式的地图瓦片的强大工具。
简介
TileCloud是一个用于生成、管理、转换、可视化和多种格式的地图瓦片的强大工具。它可以创建、读取、更新和删除多个后端中的瓦片,称为TileStores。现有的TileStores包括
TileCloud不仅限于图像瓦片,还可以处理其他瓦片数据,例如UTFGrid,或者JSON格式的海拔数据。
TileCloud使用Python的生成器和迭代器高效地流式传输数千万个瓦片,并可以使用Python的multiprocessing库并行处理多个瓦片。
TileCloud使以下任务变得简单:
- 使用OpenLayers、Google Maps、jQuery Geo、Leaflet、Polymaps、Modest Maps和OpenWebGlobe等工具可视化存储在任何TileStore中的瓦片。
- 将存储在S3中的六千万个PNG瓦片转换为不同缩放级别的JPEG格式。
- 实时转换图像格式并执行任意图像变换,包括PNG优化。
- 生成半透明瓦片,并嵌入瓦片坐标以进行调试。
- 将多个瓦片层打包到服务器上的单个瓦片中。
- 高效地计算边界框并检测现有瓦片数据集中的缺失瓦片。
- 模拟快速和慢速瓦片服务器。
- 高效地从S3中删除数百万个瓦片。
- 从tarball中读取JSON瓦片,压缩它们并上传。
入门
TileCloud依赖于一些Python模块。最简单的安装方式是在virtualenv
中使用pip
。
$ pip install poetry
$ poetry install
快速演示,运行
$ poetry run tc-viewer --root=3/4/2 'http://gsp2.apple.com/tile?api=1&style=slideshow&layers=default&lang=en_GB&z=%(z)d&x=%(x)d&y=%(y)d&v=9'
并将您的浏览器指向http://localhost:8080/。按Ctrl-C
终止tc-viewer
。
接下来,从MapBox下载一个示例MBTiles文件,例如OSM地图。我们可以使用tc-info
命令快速了解更多关于这个瓦片集的信息。例如,要计算瓦片的数量
$ poetry run tc-info -t count OSM-OpenCPN2-MagellanStrait.mbtiles
51672
计算边界金字塔
$ poetry run tc-info -t bounding-pyramid -r OSM-OpenCPN2-MagellanStrait.mbtiles
8/72/168:+16/+16
10/296/680:+40/+32
12/1184/2728:+144/+104
14/4760/10935:+536/+393
16/19048/43760:+2112/+1552
检查边界金字塔中的缺失瓦片
$ poetry run tc-info -b 8/72/168:16/*/* -t completion OSM-OpenCPN2-MagellanStrait.mbtiles
8 256/65536 (0%)
9 0/262144 (0%)
10 832/1048576 (0%)
11 0/4194304 (0%)
12 4392/16777216 (0%)
13 0/67108864 (0%)
14 21408/268435456 (0%)
15 0/1073741824 (0%)
16 24784/4294967296 (0%)
这显示了每个缩放级别的瓦片数量,指定边界金字塔在该缩放级别的预期瓦片总数(8/0/0:16/*/*
表示从级别8到级别16的所有瓦片),以及完成百分比。这有助于检查瓦片集是否完整。
现在,在OpenStreetMap瓦片和调试瓦片层上显示此MBTiles瓦片集
$ poetry run tc-viewer tiles.openstreetmap_org OSM-OpenCPN2-MagellanStrait.mbtiles tiles.debug.black
您需要将浏览器指向http://localhost:8080/并选择您喜欢的库。
tc-info
和tc-viewer
是实用程序。通常您通过编写连接TileCloud模块以执行所需操作的短Python程序来使用TileCloud。
作为一个示例,运行以下命令
$ poetry run examples/download.py
这将从OpenStreetMap下载一些瓦片,并将它们保存到名为local.mbtiles
的本地MBTiles文件中。查看examples/download.py
的源代码以了解其工作原理。如果下载有问题,只需用Ctrl-C
中断它并重新运行:程序将自动从上次停止的地方继续。
一旦下载了一些瓦片,您可以直接使用tc-viewer
查看它们
$ poetry run tc-viewer --root=4/8/5 local.mbtiles tiles.debug.black
像往常一样,将浏览器指向http://localhost:8080。tc-viewer
的--root
选项指示查看器从定义的瓦片开始,而不是从0/0/0开始,因此您不必放大以找到下载的瓦片。
变更日志
1.9.0
- 添加以下额外依赖项
azure
、aws
、wsgi
、redis
、all
。
瓦片坐标、瓦片布局、瓦片网格和边界金字塔
TileCloud始终以字符串形式表示瓦片坐标,如z/x/y
。TileCloud主要在瓦片坐标下工作,尽管在某些地方可以使用地理坐标。
瓦片布局将瓦片坐标转换为字符串,并用于路径、URL、键等。
瓦片网格用于将瓦片坐标转换为地理坐标,并关联不同z值的瓦片。
边界金字塔表示x、y和z方向上的瓦片范围。格式基本上是minz/minx/miny:maxz/maxx/maxy
,但maxz
是可选的,且maxz
、maxx
和maxy
可以前面加上一个+
符号,表示它们相对于相应的min
值。这最好通过几个例子来说明。
4/10/20:15/25
: 这对应于z=4、x=10..15和y=20..25的瓦片范围。
4/10/20:+5/+5
: 这是相同的范围(z=4、x=10..15、y=20..25),但使用相对大小表示。
4/10/20:5/15/20
: 这是上面相同的瓦片范围,但还包括所有与上面范围重叠的z=5层的瓦片。TileCloud使用瓦片网格来计算需要包含的z=5层的瓦片。
4/10/20:+1/+5/+5
: 这与前面的例子使用相对的maxz
表示相同的范围。
快速瓦片生成
tc-copy
命令可以用于在不同TileStore之间复制瓦片。如果一个TileStore有生成瓦片的副作用,那么它作为一个快速瓦片生成工具工作。以下是一些快速示例。
要转换一种瓦片格式到另一种格式,只需从源复制到目标。例如,要将MBTiles文件转换为ZIP文件,只需运行
$ poetry run tc-copy OSM-OpenCPN2-MagellanStrait.mbtiles geography-class.zip
你可以使用unzip
来检查是否成功。
$ unzip -t geography-class.zip
同样,tc-copy
也可以用来下载多个瓦片
$ poetry run tc-copy --bounding-pyramid 4/0/0:0/16/16 tiles.openstreetmap_org osm-up-to-z4.mbtiles
在这里,我们下载了OpenStreetMap瓦片的0到4级别到本地的MBTiles文件。需要使用--bounding-pyramid
选项,否则我们将下载所有的OpenStreetMap瓦片——这可能会花费一些时间(也可能违反OpenStreetMap的瓦片使用政策)。请注意,默认情况下,tc-copy
不会覆盖已存在于目标中的瓦片。这意味着你可以中断上面的命令并重新启动它,它会从中断的地方继续。如果你想要在目标中覆盖瓦片,请将--overwrite
选项传递给tc-copy
。
同样,tc-copy
也可以用来上传瓦片。例如,要将MBTiles文件上传到S3,只需使用
$ poetry run tc-copy osm-up-to-z4.mbtiles s3://bucket/prefix/%(z)d/%(x)d/%(y)d.jpg
bucket
是你的S3桶的名称。你需要设置AWS_ACCESS_KEY_ID
和AWS_SECRET_ACCESS_KEY
环境变量以获得上传到S3的权限。目标路径的其余部分(prefix/%(z)d/%(x)d/%(y)d.jpg
)是一个模板,描述了S3中瓦片的布局。它是一个正常的Python格式字符串:%(x)d
表示用十进制整数替换瓦片的x
坐标。
你可以将相同的s3://
URL传递给tc-viewer
。这允许你使用你喜欢的地图库可视化存储在S3中的瓦片。例如
$ poetry run tc-viewer s3://bucket/prefix/%(z)d/%(x)d/%(y)d.jpg
在这里,tc-viewer
作为代理,通过HTTP提供存储在S3中的瓦片,绕过任何缓存或访问控制(当然,假设你有正确的凭证)。这允许你可视化你存储的确切瓦片。
绘制世界
在FOSS4G-NA上,MapBox提出了一个绘制世界的优秀策略。TileCloud支持细分策略。要运行演示,执行
$ poetry run examples/renderingtheworld.py
这将从一个WMTS瓦片服务器生成瓦片,并将它们保存到本地的MBTiles瓦片中。当上述命令完成后,您可以查看生成的瓦片的边界金字塔
$ poetry run tc-info -t bounding-pyramid -r medford_buildings.mbtiles
0/0/0:+1/+1
1/0/0:+1/+1
2/0/1:+1/+1
3/1/2:+1/+1
4/2/5:+1/+1
5/5/11:+1/+1
6/10/23:+1/+1
7/20/47:+1/+1
8/40/94:+2/+2
9/80/189:+2/+1
10/162/378:+1/+2
11/324/757:+2/+2
12/649/1514:+3/+3
13/1299/3028:+4/+5
14/2598/6057:+7/+8
15/5196/12114:+13/+15
您可以使用以下命令查看这些瓦片(显示了俄勒冈州梅德福的建筑)
./tc-viewer --root=7/20/47 tiles.openstreetmap_org medford_buildings.mbtiles
一个简单且实用的瓦片服务器
tc-viewer
可以用作轻量级瓦片服务器,这对于开发、调试和离线演示非常有用。tc-viewer
作为参数传递的TileStores可以在以下URL中找到
http://localhost:8080/tiles/{index}/tiles/{z}/{x}/{y}
其中{index}
是命令行上TileStore的索引(从0开始为第一个瓦片存储),而{z}
、{x}
和{y}
是瓦片坐标的组成部分。URL中的第二个tiles
存在是为了解决OpenWebGlobe做出的假设。这种布局可以直接由大多数地图库使用,请参阅tilecloud/views/*.tpl
中的代码以获取示例。可以使用--host
和--port
命令行选项分别设置主机和端口。
请注意,没有文件扩展名。tc-viewer
将自动设置正确的内容类型和内容编码头,如果它能够确定它们,否则,大多数浏览器会自己解决这个问题。
为了方便,tc-viewer
在URL/static
下的static
目录中提供一切。这可以用来直接为测试目的提供您喜欢的地图库和/或应用程序代码。
默认情况下,如果可用,tc-viewer
将使用Tornado作为Web服务器,否则将回退到WSGIRef。Tornado具有相当不错的性能,对于本地开发和离线演示来说足够好,尤其是在与MBTiles瓦片存储一起使用时。WSGIRef性能非常差(一次只能处理一个请求),因此可以用作“慢速”瓦片服务器,非常适合调试瓦片加载代码或测试您的Web应用程序在低速网络连接下的性能。tc-viewer
在用作代理由远程服务器提供的瓦片时尤其慢。您可以使用--server
选项明确设置服务器。
tc-viewer
将所有它提供的瓦片的Access-Control-Allow-Origin
头设置为*
,这允许瓦片作为在不同的主机/端口上运行的WebGL应用程序的纹理使用。有关更多信息,请参阅跨域纹理。
tc-viewer
被设计为开发工具,它提供的功能是以脆弱性为代价的。它做了许多假设——包括用户的善意——这使得它完全不适用于通用瓦片服务器。它只能在开发或演示环境中使用。
比较地图库
tc-viewer
开箱即支持大多数流行的网络地图库。这可以非常方便地进行快速、实际的比较。如果您喜欢的地图库缺失,请提交一个问题,或者更好的是,一个拉取请求。
贡献
请使用GitHub问题跟踪器报告错误和功能请求。
如果您想为TileCloud做出贡献,请安装开发需求
$ pip install -r dev-requirements.txt
TileCloud在tilecloud/tests
目录中包含单元测试。您可以使用以下命令运行这些测试
$ make test
这相当于
$ python setup.py nosetests
对于拉取请求,如果您的代码在通过prospector
时没有警告,我们将非常感激。您可以使用以下命令在代码库上运行prospector
$ make prospector
许可
版权(c)2012,汤姆·佩恩 twpayne@gmail.com 版权所有。版权(c)2012,Camptocamp 版权所有。
允许以源代码和二进制形式重新分发和使用,无论是否修改,前提是满足以下条件
- 源代码重新分发必须保留上述版权声明、本条件列表和以下免责声明。
- 二进制形式的重新分发必须在文档和/或其他随分发提供的材料中重新产生上述版权声明、本条件列表和以下免责声明。
本软件由版权所有者和贡献者“按原样”提供,并且任何明示或暗示的保证,包括但不限于适销性和适用于特定目的的暗示保证,均被放弃。在任何情况下,版权所有者或贡献者均不对任何直接、间接、偶然、特殊、示范性或后续损害(包括但不限于替代货物或服务的采购;使用、数据或利润的损失;或业务中断)承担责任,无论其产生原因和责任理论如何,即使被告知此类损害的可能性。
vim: set filetype=rst spell spelllang=en textwidth=0
贡献
安装预提交钩子
pip install pre-commit
pre-commit install --allow-missing-config
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪一个,请了解有关安装包的更多信息。
源分发
构建分发
tilecloud-1.12.3.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 09ce90b847575b5f0b24e82bf075846e8878cd1fb6eb351e9f39c4b0a0aba2b2 |
|
MD5 | 284bf0778a196ebf1385f4344e91f1cd |
|
BLAKE2b-256 | 301e9818df57802ab22ee294e71a1bc849eb55537d1373c8bce7cd3f8f695aae |
tilecloud-1.12.3-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f1b9e33a281b93e43e8e7928140dbc39af97281e99487cdc91bca31ef63ad5b9 |
|
MD5 | 75e4b9fee2826b53ecd8d07ba224ac23 |
|
BLAKE2b-256 | 859866e0980469cb1911a5f1f298e8e95122cf872cbb088cfab24895fe4c4b04 |