本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com
OpenMapTiles 工具箱用于从 OpenMapTiles 图层生成 TM2Source 项目、imposm3 映射和 SQL 指令。我们鼓励其他人也将其用于矢量瓦片项目,因为这种方法对我们非常有效。
查看 OpenMapTiles 项目 可获取真实世界示例。
系统需安装 Docker 或 Python 3,测试还需 Docker-compose。若不使用 Docker,需安装下文列出的额外工具和库。
最简单的方式是直接使用 Docker 运行命令。无需本地克隆 openmaptiles-tools,只需克隆 openmaptiles 仓库 并从其根目录运行。
注意: 容器脚本只能访问指定目录及其子目录中的文件,例如示例中的 ${PWD}(当前目录)。
docker 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 文件夹以便后续重用# 部分工具需要这些包。在 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+)
# 获取 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 数据。
layer: 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 脚本会将其替换为:
SELECT CASE %%FIELD_MAPPING: class%% END, ...
替换后:
SELECT 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 项目的元数据,以实际生成矢量瓦片。
tileset: 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" 图层的条目:
$ 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 1483323000 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 下载文件。
# 下载最新版本到当前目录 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 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429