OpenMapTiles 工具箱用于从 OpenMapTiles 图层生成 TM2Source 项目、imposm3 映射和 SQL 指令。我们鼓励其他人也将其用于矢量瓦片项目,因为这种方法对我们非常有效。
查看 OpenMapTiles 项目 可获取真实世界示例。
系统需安装 Docker 或 Python 3,测试还需 Docker-compose。若不使用 Docker,需安装下文列出的额外工具和库。
最简单的方式是直接使用 Docker 运行命令。无需本地克隆 openmaptiles-tools,只需克隆 openmaptiles 仓库 并从其根目录运行。
注意: 容器脚本只能访问指定目录及其子目录中的文件,例如示例中的 ${PWD}(当前目录)。
bashdocker run -it --rm -u $(id -u ${USER}):$(id -g ${USER}) \ -v "${PWD}:/tileset" \ openmaptiles/openmaptiles-tools \ <脚本名称> <脚本参数>
其中 <脚本名称> 可以是 bin/ 目录中的任何脚本,例如 generate-imposm3 openmaptiles.yaml。
/import 文件夹mapping.yaml 挂载到 /mapping 文件夹/cache 文件夹以便后续重用bash# 部分工具需要这些包。在 Debian/Ubuntu 上可通过以下命令安装 sudo apt install graphviz sqlite3 aria2 osmctools # 直接从 git 安装包 python3 -m pip install git+[***] # 运行所需脚本,例如从 openmaptiles 目录: generate-imposm3 openmaptiles.yaml # 若脚本无法运行,确保 PATH 包含默认 PIP 二进制目录。 # 在 Debian/Ubuntu 上通常是 ~/.local/bin/(用户主目录下)。 # 否则直接运行 ~/.local/bin/generate-imposm3 ...
确保已安装 使用方法 部分列出的所有依赖项。需安装最新 Python(3.6+)
bash# 获取 OpenMapTiles 图层数据 git clone [***] # 获取工具仓库 git clone [***] # 从工具仓库根目录运行脚本 cd openmaptiles-tools # 安装所需依赖(可能需要 sudo 权限) python3.6 -m pip install -r requirements.txt # PYTHONPATH=$PWD 允许脚本找到当前目录中的模块 PYTHONPATH=$PWD python3 bin/generate-imposm3 ../openmaptiles/openmaptiles.yaml
您可以定义一个自包含的图层,连同 SQL 文件、图层和数据源定义(如 imposm3 映射文件),然后在瓦片集中引用它,与其他图层混合匹配。
查看或复制标准图层(如 building)开始创建自己的图层。一个图层包含一个用 YAML 格式编写的图层定义。
在其中指定 layer 属性,如 id、buffer_size 和可能的 Markdown 文档(description 和 fields)。还可在 schema 中引用 SQL 文件,编写图层所需查询或创建通用表。建议每个图层有一个接受边界框和缩放级别的函数,便于测试和重用。
若数据基于 OSM,可直接引用 imposm3 映射文件 选择所需 OSM 数据。
yamllayer: id: "building" description: 来自 OpenStreetMap 的建筑物 buffer_size: 4 datasource: query: (SELECT geometry FROM layer_building(!bbox!, z(!scale_denominator!))) AS t fields: render_height: 根据建筑物层数和高度估算的高度。 class: description: 定义建筑物的子类(已知值之一)。 # 值可以是字符串列表或字典 # 字典定义 OSM 值到 OMT 字段值的映射 values: school: # subclass IN ('school','kindergarten') OR subclass LIKE 'uni%' subclass: ['school','kindergarten','uni%'] railway: # (subclass='station' AND mapping_key='railway') # OR subclass in ('halt','tram_stop','subway') - __AND__: subclass: 'station' mapping_key: 'railway' - subclass: ['halt', 'tram_stop', 'subway'] schema: - ./building.sql datasources: - type: imposm3 mapping_file: ./mapping.yaml
对于已知值(枚举),fields 部分还可包含输入(OSM)值的映射。
若图层 SQL 文件包含 %%FIELD_MAPPING: class%%,generate-sql 脚本会将其替换为:
sqlSELECT CASE %%FIELD_MAPPING: class%% END, ...
替换后:
sqlSELECT CASE WHEN "subclass" IN ('school', 'kindergarten') OR "subclass" LIKE 'uni%' THEN 'school' WHEN ("subclass" = 'station' AND "mapping_key" = 'railway') OR "subclass" in ('halt','tram_stop','subway') THEN 'railway' END, ...
瓦片集定义矢量瓦片集中包含的图层(layers)以及用于生成 TM2Source 项目的元数据,以实际生成矢量瓦片。
yamltileset: layers: - layers/building/building.yaml - layers/housenumber/housenumber.yaml - layers/poi/poi.yaml name: 街道级别 description: 显示建筑物、门牌号和兴趣点等街道级别信息的瓦片集。 attribution: "OpenStreetMap 贡献者" maxzoom: 14 minzoom: 13 center: [-12.2168, 28.6135, 4] bounds: [-180.0,-85.0511,180.0,85.0511] pixel_scale: 256 defaults: srs: +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over datasource: srid: 900913
使用 test-perf 评估针对 PostgreSQL 数据库的瓦片生成性能。此工具可测试单个图层、多个图层或整个瓦片。提供多个预定义测试区域以确保跨测试一致性。结果以直方图显示瓦片大小分布。可将当前运行结果与之前保存的结果比较,突出显示较大变化。若测试多个缩放级别,另一个直方图显示每个级别的大小分布。使用 --help 查看所有选项。
test-perf <瓦片集> ...
与下文的 postserve 类似,test-perf 需要 PostgreSQL 连接。
!test-perf 示例图
Postserve 是 OpenMapTiles 矢量瓦片测试服务器,可根据瓦片集文件定义直接从 PostgreSQL 数据库动态生成元数据和瓦片。
postserve <瓦片集> ...
使用 postserve <瓦片集> 启动服务。使用 --help 获取 PostgreSQL 连接参数列表。若数据库包含完整星球数据,可能需要使用 MIN_ZOOM=6 postserve ... 避免意外生成低缩放级别的慢瓦片。
openmaptiles-tools 仓库)docker pull openmaptiles/openmaptiles-tools 下载最新工具版本--net=host 更改为 --net=openmaptiles_postgres_conn 以匹配 openmaptiles 快速入门设置,并通过 -p 8090:8090 将 8090 端口暴露到主机)docker run -it --rm -u $(id -u ${USER}):$(id -g ${USER}) \ -v "${PWD}:/tileset" --net=host \ openmaptiles/openmaptiles-tools \ postserve openmaptiles.yaml
可使用任何支持 MVT 的查看器查看瓦片,例如:
http://localhost:8090Vector Tiles Reader 插件,添加矢量瓦片服务器连接,将 TileJSON URL 设置为 http://localhost:8090使用 debug-mvt 工具检查瓦片内容。该工具查询 PostgreSQL 服务器并显示图层、每行数据和几何类型/大小。可限制输出到特定图层,可选显示所有本地化名称,将几何显示为文本。以下示例查询指定瓦片中 "place" 图层的条目:
bash$ debug-mvt openmaptiles.yaml 4/7/6 -l place ======= Layer place (默认隐藏额外名称列) ======= capital class iso_a2 name name_de name_en rank osm_id is_valid_mvt mvtgeometry is_valid_geom geometry --------- ------- -------- -------------------------- -------------------------- -------------------------- ------ ----------- -------------- ------------- --------------- ---------- country ES España Spanien Spain 1 *** True POINT(32) True POINT(32) country PT Portugal Portugal Portugal 1 23770282470 True POINT(32) True POINT(32) 4 city Casablanca Casablanca Casablanca 2 257307240 True POINT(32) True POINT(32) country MA Maroc Marokko Morocco 2 4324250410 True POINT(32) True POINT(32) 2 city Madrid Madrid Madrid 2 210682950 True POINT(32) True POINT(32) 2 city Lisboa Lissabon Lisbon 3 2659584900 True POINT(32) True POINT(32) 4 city Oran Oran Oran 4 275651030 True POINT(32) True POINT(32) 4 city Valencia Valencia Valencia 4 341056070 True POINT(32) True POINT(32) 4 city Sevilla Sevilla Seville 4 2488206560 True POINT(32) True POINT(32) 4 city Fès Fès Fez 4 2890354320 True POINT(32) True POINT(32) 2 city Rabat Rabat Rabat 4 2991208620 True POINT(32) True POINT(32) ...
download-osm 工具可用于下载区域提取文件或整个星球文件,并验证文件内容。整个星球文件从所有可用 OSM 镜像同时下载,以分散镜像负载并提高下载速度。工具确保获取最新版本,验证所有镜像包含相同版本,并用 md5 哈希验证下载。默认不从 OSM 主站下载以减轻其负载。下载器使用 aria2c。支持从 Geofabrik、BBBike、openstreemap.fr 或任意 URL 下载文件。
bash# 下载最新版本到当前目录 download-osm planet # 通过向 aria2c 传递 -d 参数下载到目标目录 download-osm planet -- -d ./downloads # 从 Geofabrik 下载新西兰提取文件及状态文件 download-osm geofabrik new-zealand --state state.txt # 列出 Geofabrik 所有可用提取文件 download-osm list geofabrik
使用瓦片集定义创建 PostgreSQL 预备语句 或 创建函数 SQL 代码,通过单个 getTile(z,x,y) 查询使用 PostGIS MVT 支持生成 Mapbox 矢量瓦片格式的完整矢量瓦片。
使用 --help 获取所有参数。
注意: 当前 openmaptiles/postgis 镜像(v2.9 及之前版本)对 ST_AsMVT() 支持存在问题。在 PostGIS 更新前,请使用 sophox/postgis docker 镜像(基于最新 mdillon/postgis:11 基础镜像)。另一个已知问题是 PostgreSQL JIT 可能导致 PG11+ 中瓦片生成速度极慢,可能需要禁用。
generate-sqltomvt <瓦片集>
接收瓦片集定义并生成用于导入 OSM 数据的 imposm3 映射文件。
generate-imposm3 <瓦片集>
将图层定义中引用的所有 SQL 组装成可通过 psql 执行的 SQL 脚本。若指定 --dir 选项,生成可并行执行的 .sql 文件。
generate-sql <瓦片集> generate-sql <瓦片集> --dir <输出目录>
接收瓦片集定义并生成 Markdown 文档。
generate-doc <瓦片集>
依赖:graphviz
从 imposm3 映射文件和 SQL 后处理代码中解析 etldoc: graphviz 注释,生成 svg 文件。.dot 和 .svg 文件名前缀为 etl_
generate-etlgraph <瓦片集> <目标目录> generate-etlgraph layers/landcover/landcover.yaml ./build/devdoc generate-etlgraph layers/railway/railway.yaml ./build/etlgraph
示例:
输入命令:generate-etlgraph layers/landcover/landcover.yaml
输出文件:
layers/landcover/etl_landcover.dotlayers/landcover/etl_landcover.svg示例:
generate-sqlquery layers/landcover/landcover.yaml 14
import-osm、`update-os

来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429