跳至主要内容

将GDAL可读数据集转换为MBTiles文件。这用于生成网络地图。

项目描述

将GDAL可读数据集转换为MBTiles文件

gdal2mbtiles 帮助您生成可以通过浏览器映射库在您的网站上显示的网络映射瓦片。

GDAL可读文件 是地理参考图像,这意味着它们被定位并投影到世界上。为了在网络上显示动态地图,您不想一次性提供整个图像,因此必须将其切割成由瓦片服务器托管的瓦片。

MBTiles文件格式由 MapBox 开发,以简化瓦片存储。您可以将最终文件上传到他们的服务,或运行自己的瓦片服务器。MapBox提供了一个名为 TileStream 的服务。

GDAL的后续版本(>= 2)允许通过 gdal_translategdaladdo 命令生成mbtiles文件。然而,gdal2mbtiles提供了一些优势

  • 允许您指定一个最高分辨率/缩放级别。GDAL始终使用输入栅格的原始分辨率来确定mbtiles输出的最高缩放级别,而gdal2mbtiles还可以上采样以创建比原始文件分辨率更高的缩放级别。

  • gdal_translate命令仅转换原始分辨率的geotiff,因此通过概述(gdaladdo)添加较低分辨率到文件中。

  • gdaladdo只能添加到与瓦片/块大小(256x256)对应的缩放级别。gdal2mbtiles始终可以创建到缩放级别1的图像。

  • 性能:gdal2mbtiles使用pyvips进行图像处理,它是并行且快速的。与GDAL的等效处理相比,gdal2mbtiles通常快2-4倍。例如

    • 分辨率14的文件,13000x11000像素,最小分辨率0,最大分辨率14:使用gdal2mbtiles大约5分钟,使用GDAL命令大约8分钟。

    • 分辨率11的文件,200,000x200,000,仅缩放级别11:使用gdal2mbtiles大约30分钟,使用GDAL(使用GDAL_CACHE_MAXGDAL_NUM_THREADS选项)大约133分钟

安装

PyPI软件包页面:https://pypi.python.org/pypi/gdal2mbtiles/

使用pip

$ pip install gdal2mbtiles

从源代码

$ git clone https://github.com/ecometrica/gdal2mbtiles.git
$ cd gdal2mbtiles
$ python setup.py install

外部依赖项

我们依赖于GDAL来读取地理参考数据集。在Debian或Ubuntu上,您可以通过apt安装GDAL库和二进制文件。

Ubuntu LTS的默认GDAL版本

  • Xenial:1.11

  • Bionic:2.2

  • Focal:3.0

如果您需要,我们建议使用UbuntuGIS PPA来获取GDAL的最新版本,例如Xenial。

sudo add-apt-repository ppa:ubuntugis/ppa && sudo apt-get update
sudo apt-get install gdal-bin libgdal-dev

ubuntugis PPA通常包括python-gdalpython3-gdal,这将安装系统级别的python绑定。如果您不打算使用非默认的python或虚拟环境,安装它可能就足够了。

否则,您还需要从PyPI安装GDAL python绑定包。请确保安装与已安装的GDAL库匹配的版本。您可以使用gdal-config --version检查该版本。

pip install \
  --global-option=build_ext \
  --global-option=--gdal-config=/usr/bin/gdal-config \
  --global-option=--include-dirs=/usr/include/gdal/ \
  GDAL=="$(gdal-config --version)"

我们还依赖于VIPS(版本8.2+)进行快速图像处理。

在Debian或Ubuntu上,运行以下命令安装它,不带GUI的nip2

$ sudo apt-get install --no-install-recommends libvips libvips-dev

您还需要一些其他库来处理大型TIFF文件并优化生成的PNG瓦片。

在Debian或Ubuntu上,运行以下命令安装它们

$ sudo apt-get install libtiff5 optipng pngquant

命令行界面

$ gdal2mbtiles --help
usage: gdal2mbtiles [-h] [-v] [--name NAME] [--description DESCRIPTION]
                    [--layer-type {baselayer,overlay}] [--version VERSION]
                    [--format {jpg,png}]
                    [--spatial-reference SPATIAL_REFERENCE]
                    [--resampling {near,bilinear,cubic,cubicspline,lanczos}]
                    [--min-resolution MIN_RESOLUTION]
                    [--max-resolution MAX_RESOLUTION] [--fill-borders]
                    [--no-fill-borders] [--zoom-offset N]
                    [--coloring {gradient,palette,exact}]
                    [--color BAND-VALUE:HTML-COLOR]
                    [--colorize-band COLORIZE-BAND]
                    [--png8 PNG8]
                    [INPUT] [OUTPUT]

Converts a GDAL-readable into an MBTiles file

optional arguments:
  -h, --help            show this help message and exit
  -v, --verbose         explain what is being done

Positional arguments:
  INPUT                 GDAL-readable file.
  OUTPUT                Output filename. Defaults to INPUT.mbtiles

MBTiles metadata arguments:
  --name NAME           Human-readable name of the tileset. Defaults to INPUT
  --description DESCRIPTION
                        Description of the layer. Defaults to ""
  --layer-type {baselayer,overlay}
                        Type of layer. Defaults to "overlay"
  --version VERSION     Version of the tileset. Defaults to "1.0.0"
  --format {jpg,png}    Tile image format. Defaults to "png"

GDAL warp arguments:
  --spatial-reference SPATIAL_REFERENCE
                        Destination EPSG spatial reference. Defaults to 3857
  --resampling {near,bilinear,cubic,cubicspline,lanczos}
                        Resampling algorithm for warping. Defaults to "near"
                        (nearest-neighbour)

Rendering arguments:
  --min-resolution MIN_RESOLUTION
                        Minimum resolution/zoom level to render and slice.
                        Defaults to None (do not downsample)
  --max-resolution MAX_RESOLUTION
                        Maximum resolution/zoom level to render and slice.
                        Defaults to None (do not upsample)
  --fill-borders        Fill image to whole world with empty tiles. Default.
  --no-fill-borders     Do not add borders to fill image.
  --zoom-offset N       Offset zoom level by N to fit unprojected images to
                        square maps. Defaults to 0.
  --png8                Quantizes 32-bit RGBA to 8-bit RGBA paletted PNGs.
                        value range from 2 to 256. Default to False.

Coloring arguments:
  --coloring {gradient,palette,exact}
                        Coloring algorithm.
  --color BAND-VALUE:HTML-COLOR
                        Examples: --color="0:#ff00ff" --color=255:red
  --colorize-band COLORIZE-BAND
                        Raster band to colorize. Defaults to 1

贡献

报告错误和提交补丁

请检查我们的问题跟踪器以获取已知错误和功能请求。

我们接受修复和新增功能的pull请求。

开发和测试

我们使用ToxPytest进行本地测试,并使用CircleCI进行远程测试。

  1. 克隆仓库

  2. 安装适合您操作系统/虚拟机的任何外部依赖项

  3. 创建并激活一个虚拟环境

  4. 安装 tox: pip install tox

  5. 通过虚拟环境激活脚本设置 GDAL_CONFIG 环境变量。

    如果使用 virtualenv: echo 'export GDAL_VERSION=$(gdal-config --version)' >> $VIRTUAL_ENV/bin/postactivate

    如果使用 venv: echo 'export GDAL_VERSION=$(gdal-config --version)' >> $VIRTUAL_ENV/bin/activate

  6. 运行测试以确认一切正常: tox

  7. 进行一些开发

    • 做一些更改

    • 运行测试

    • 修复任何错误

    • 再次运行测试

    • 将更改的 UNRELEASED 部分更新到 CHANGELOG.rst

    • 如果还没有,请将自己添加到 AUTHORS.rst 中

    • 编写一个良好的提交信息

    • 重复

  8. 创建 PR

最初不需要担心 GDAL 和 Ubuntu 的每一种组合的测试,留到你在创建 PR 时远程 CI 构建矩阵去处理,让审查者决定是否需要更多的工作。

鸣谢

Maxime Dupuis 和 Simon Law 编写了这个程序,得到了 Ecometrica 的慷慨支持。

查看 AUTHORS.rst 获取完整的贡献者列表。

项目详情


下载文件

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

源代码分布

gdal2mbtiles-2.1.5.tar.gz (47.8 kB 查看哈希)

上传时间 源代码

构建版本

gdal2mbtiles-2.1.5-py3-none-any.whl (53.3 kB 查看哈希)

上传时间 Python 3

由以下机构支持

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