跳转到主要内容

ArcGIS瓦片包工具

项目描述

ArcGIS瓦片包工具

一个用于读取瓦片和从ArcGIS瓦片包(包含使用ArcGIS压缩瓦片缓存的瓦片缓存)导出工具的Python 3库

Python Tests

目标

  • 轻松访问瓦片包中的瓦片
  • 导出到mbtiles,以在诸如mbtileserver之类的mbtiles服务器上托管

我们的工作流程

安装

pip install tpkutils --upgrade

用法

Python API

打开瓦片包

from tpkutils import TPK

tpk = TPK('my_tiles.tpk')

# close when done
tpk.close()

或使用with

with TPK('my_tiles.tpk') as tpk:

您可以查询有关瓦片包的基本信息

tpk.bounds  # tuple of (xmin, ymin, xmax, ymax) in geographic coordinates
tpk.zoom_levels  # list of zoom levels available in package [0,1,...]

瓦片访问

您可以遍历单个瓦片 - 例如,将其保存到磁盘。瓦片以 namedtuple 形式返回:Tile(z, x, y, data)

for tile in tpk.read_tiles():
    with open('{0}_{1}_{2}.png'.format(tile.x, tile.y, tile.z), 'wb') as outfile:
        outfile.write(tile.data)

您还可以只读取特定缩放级别或级别的瓦片

tpk.read_tiles(zoom=[4])

默认情况下,瓦片根据 ArcGIS 瓦片方案返回。要输出 xyz 方案的瓦片,需要翻转 y 值

tpk.read_tiles(flip_y=True)

注意:目前尚未提供直接接口以读取单个瓦片或通过 x 或 y 指定的瓦片。

导出到 mbtiles

您可以将瓦片包导出到 MapBox mbtiles v1.1 文件

tpk.to_mbtiles('my_tiles.mbtiles')

或仅导出特定缩放级别的子集

tpk.to_mbtiles('fewer_tiles.mbtiles', zoom=[0,1,2,3,4])

注意

  • 瓦片以 xyz 瓦片方案输出到 mbtiles 格式。
  • 不支持将 混合格式 瓦片导出到 mbtiles。

导出到磁盘

您可以将瓦片包导出到磁盘。文件将写入 '[z]/[x]/[y].[ext]',其中 [ext] 是一个 png 或 jpg 文件。可以使用 --path-format 选项提供备用文件名。

默认情况下,瓦片将以 'arcgis' 瓦片方案写入。如果使用 XYZ 瓦片 vserver 或客户端中的瓦片,请使用 'xyz' 瓦片方案。

输出目录必须为空。

tpk.to_disk('my_tiles')

您可以将子集缩放级别导出为 'xyz' 方案,并省略空(完全空白 PNG 或完全白色 JPG)瓦片

tpk.to_disk('my_tiles', zoom=[0,1,2], scheme='xyz', drop_empty=True)

注意

  • 不推荐用于大型瓦片包,因为这可能会创建大量目录和文件。
  • 不支持 'mixed' 格式

元数据/描述性属性

描述瓦片包的基本属性是从瓦片包中的配置文件中提取的。这些通常是从 ArcGIS 瓦片包工具的用户界面中填充的

  • 名称:由 ArcGIS 瓦片包工具自动填充,基于地图文档的文件名
  • 描述:ArcGIS 瓦片包工具中的可选字段
  • 摘要:ArcGIS 瓦片包工具中的必填字段
  • 标签:ArcGIS 瓦片包工具中的必填字段
  • 版权:ArcGIS 瓦片包工具中的可选字段
  • 使用约束:ArcGIS 瓦片包工具中的可选字段

MBtiles 元数据

mbtiles 文件中的元数据表是从瓦片包的属性中创建的。目前,可以覆盖这些属性中的任何一个以控制此表的内容

tpk.name = 'Some new name'
tpk.description = 'This is a much better description'
tpk.to_mbtiles(...)

还暴露了两个特定于 mbtiles 的额外属性

tpk.version  # version of tileset, defaults to 1.0.0
tpk.attribution  # copyright / attribution statement.  Used by some
                 # clients for attribution info shown on map.

命令行界面

您还可以使用命令行来执行导出操作

$ tpk export mbtiles --help
Usage: tpk export mbtiles [OPTIONS] TPK_FILENAME MBTILES_FILENAME

  Export the tile package to mbtiles format

Options:
  -z, --zoom TEXT  Limit zoom levels to export: "0,1,2"
  --overwrite      Overwrite existing mbtiles file  [default: False]
  -v, --verbose    Verbose output
  --help           Show this message and exit.
$ tpk export disk --help
Usage: tpk export disk [OPTIONS] TPK_FILENAME PATH

  Export the tile package to disk: z/x/y.<ext> or pattern specified using
  --path-format option.

  Will use the 'arcgis' tile scheme by default.  If using with an XYZ tile
  server or client, use the 'xyz' tile scheme.

  Not recommended for higher zoom levels as this will produce large
  directory trees.

Options:
  -z, --zoom TEXT        Limit zoom levels to export: "0,1,2"
  --scheme [xyz|arcgis]  Tile numbering scheme: xyz or arcgis  [default:
                         arcgis]
  --drop-empty           Drop empty tiles from output
  --path-format TEXT     Format expression for output tile files, within
                         output path. Must contain parameters for z, x, y, and
                         ext (extension).  [default: {z}/{x}/{y}.{ext}]
  -p, --preview          Preview the exported tiles in a simple map.
  -v, --verbose          Verbose output
  --help                 Show this message and exit.

注意

所有瓦片包都假定遵循 Web Mercator Tiling Scheme(Google/Bing 等)并在 Web Mercator 坐标系中。

使用 ArcGIS 10.3 创建的图像瓦片包开发和测试;然而,这些似乎使用 10.1 紧凑包格式。

ArcGIS Server 10.3 引入了一个新的紧凑包版本,此处尚未处理。如果您需要此功能,请提交一个包含 10.3 格式的小测试文件的 issue。

使用其他版本创建的瓦片包可能无法正常工作(请记录测试数据 issue)。

可能不支持 ArcGIS 10.1 之前的版本。

变更

0.8.0(未发布)

  • 移除 Python 2 支持

0.7.0

  • 添加通过 drop_empty 选项在导出到 mbtiles 时删除空瓦片的能力
  • 添加删除完全透明瓦片的能力,包括完全白色或黑色瓦片
  • 添加从导出到 mbtiles 的最高缩放级别计算瓦片界限的能力
  • 修正了瓦片集的缩放级别,其中瓦片从大于 0 的缩放级别开始
  • 添加 --tile-bounds 选项到命令行界面,以从最高导出缩放级别可用的瓦片中计算界限
  • 添加 --drop-empty 选项到命令行界面,在创建 mbtiles 时删除空瓦片

鸣谢

瓦片包格式在此处描述:这里

受以下启发:

用于从node-mbtiles派生mbtiles数据库的SQL

ArcGIS是ESRI的商标,在此处用于指代特定技术。不表示ESRI的认可。

许可证

查看LICENSE.md

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源代码分发

tpkutils-0.8.2.tar.gz (15.8 kB 查看哈希值)

上传时间: 源代码

构建分发

tpkutils-0.8.2-py3-none-any.whl (14.1 kB 查看哈希值)

上传时间: Python 3

支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面