Files
Distributed-Prometheus/doc/TIANDITU_CONFIG.md
Super User 72a5bf30b4 feat: 天地图瓦片缓存(tile-cache)、拓扑标注助手与文档更新
- tile-cache: 瓦片缓存服务(vec/cva)、启动探针、详细日志、上游超时可配置(UPSTREAM_TIMEOUT_MS)
- central: docker-compose 集成 tile-cache,env.example 增加 TILE_CACHE_* / TIANDITU_TK
- topology-editor: 天地图/缓存加载、GPS 安全来源错误提示、TIANDITU 文档(403/白名单、localhost 测试说明)
- doc: README 部署步骤与 GPS 安全来源说明,TIANDITU_CONFIG 完善

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-25 11:11:38 -05:00

130 lines
7.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 天地图配置说明
拓扑标注助手使用**天地图**作为地图校验底图,便于在浏览器中点击修正设备经纬度。天地图提供**底图**与**标识图(中文注记)**两个图层,可单独或叠加使用。
**天地图密钥**:使用瓦片缓存或 Grafana Geomap 时,密钥统一配置在 **central-server/.env****TIANDITU_TK** 变量中,由 tile-cache 服务读取,不在浏览器或 Grafana 中填写。
---
## 1. 在拓扑标注助手中使用
- 打开拓扑标注助手:`http://<中央服务器>:4080`
- 在「地图校验」区域填写 **天地图 TK**(密钥),点击「加载天地图」即可加载底图并点击地图修正坐标。
- TK 会保存在浏览器本地localStorage同一设备填一次即可。
- **申请密钥**:登录 [天地图开放平台](https://console.tianditu.gov.cn/) 注册并创建应用,获取 **tk** 参数。
当前前端通过天地图 JavaScript API 加载地图;若需在其它系统(如 Grafana Geomap中复用天地图可使用下方 WMTS 地址。
---
## 2. 两个图层说明
| 图层 | 用途 | 说明 |
|------|------|------|
| **底图 (vec_w)** | 矢量底图 | 道路、建筑、水系等底图WGS84 经纬度 |
| **标识图 (cva_w)** | 中文注记 | 地名、道路名等文字标注,叠加在底图之上 |
二者叠加后即「带中文注记的天地图」;仅做点位校验时只用底图即可,需要地名时可叠加标识图。
---
## 3. WMTS 地址(底图 + 标识图)
若在 Grafana、其它 GIS 或自研前端中通过 WMTS 接入天地图,可使用以下地址。请将 `tk=您的密钥` 替换为在 [天地图开放平台](https://console.tianditu.gov.cn/) 申请得到的 **tk**
**底图(矢量):**
```text
https://t0.tianditu.gov.cn/vec_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=vec&STYLE=default&TILEMATRIXSET=w&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&FORMAT=tiles&tk=您的密钥
```
**标识图(中文注记):**
```text
https://t0.tianditu.gov.cn/cva_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=cva&STYLE=default&TILEMATRIXSET=w&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&FORMAT=tiles&tk=您的密钥
```
- **瓦片参数**`{z}` 为层级zoom`{y}` 为行号,`{x}` 为列号;由地图引擎在请求时替换。
- **同一密钥**:底图与标识图使用同一个 **tk** 即可。
- **坐标系**:上述为 WGS84经纬度与 topology-editor、targets.csv 中 lat/lon 一致。
---
## 4. 瓦片缓存与手动更新(节省 key 免费量)
天地图 key 有免费调用量限制。本项目提供 **tile-cache** 服务:瓦片首次请求时向天地图拉取并落盘,后续同一瓦片在**老化时间**内直接读缓存;超过老化时间的瓦片在下次请求时会自动重新拉取。
### 4.1 启用缓存服务
- **天地图密钥**:在 **central-server/.env** 中配置 **TIANDITU_TK**(必填,否则缓存服务无法回源)。例如:`TIANDITU_TK=您的天地图密钥`。密钥在 [天地图开放平台](https://console.tianditu.gov.cn/) 申请。
- **服务器端 403**:瓦片由 tile-cache 容器向天地图发起请求,出口 IP 为服务器公网 IP。若控制台中为该 key 设置了 **IP 白名单**,必须将服务器公网 IP 加入白名单;若只设置了 **Referer 白名单**,服务器请求无 Referer 易被拒,可暂时关闭 Referer 校验或按平台说明配置后再试。
- **缓存老化时间**(可选):`TILE_CACHE_TTL_DAYS=7`(默认 7 天)。单个瓦片超过该天数后,下次被请求时会重新向天地图拉取并覆盖缓存。可改为 15 等更大值以延长复用时间。
- **上游超时**(可选):向天地图请求单瓦片超时时间,默认 15 秒;若日志中频繁出现 `upstream timeout`,可在 `.env` 中设置 `TILE_CACHE_UPSTREAM_TIMEOUT_MS=25000`(单位毫秒)等更大值后重启 tile-cache。
- 与 central 一起启动时,**tile-cache** 容器会自动启动(端口默认 4090拓扑标注助手通过内部代理使用 `/tiles` 路径,无需在浏览器暴露 key。
### 4.2 拓扑标注助手中使用缓存
- 当 central 已配置 `TILE_CACHE_URL`(默认已指向 tile-cache页面会显示 **「加载天地图(使用服务器缓存)」**:从服务器缓存加载底图 + 标识图,不消耗浏览器端 key。超过 TTL 的瓦片会在下次浏览时自动更新。
### 4.3 主机直连 tile-cache 测试(排查用)
- 从**主机**上 curl 测试 tile-cache 时,若使用 `http://localhost:4090` 出现**无响应、无日志**(请求未进容器),多半是系统把 `localhost` 解析到 IPv6 (`::1`),而 Docker 只把端口映射到 IPv4。请改用 **`http://127.0.0.1:4090`** 再试,例如:
`curl -s http://127.0.0.1:4090/health``curl -s http://127.0.0.1:4090/api/cache/status`
标注助手通过 topology-editor 代理访问 tile-cache走内网 `tile-cache:4090`,不受此影响。
### 4.4 Grafana Geomap 使用缓存(可选)
将 Geomap 的 XYZ 底图/标识图 URL 改为:
`http://<central>:4080/tiles/vec/{z}/{x}/{y}``http://<central>:4080/tiles/cva/{z}/{x}/{y}`(经拓扑助手代理)。天地图密钥已在 **.env** 的 **TIANDITU_TK** 中配置Grafana 中无需填写。
### 4.5 更新方式
超过 `TILE_CACHE_TTL_DAYS` 天的瓦片,在下次被请求时会自动重新向天地图拉取并写回缓存,无需手动操作。
---
## 5. 在 Grafana Geomap 中配置天地图(直连或走缓存)
Grafana 的 Geomap 支持 **XYZ Tile layer**。可直连天地图 WMTSURL 中填 tk或使用瓦片缓存地址见第 4 节)。
### 5.1 配置底图vec_w
1. 新建或编辑一个 **Geomap** 面板。
2. 在右侧 **Layer** / **Base layer** 区域,将底图类型选为 **XYZ Tile layer**(或「自定义」/「Generic XYZ」等视 Grafana 版本而定)。
3. **URL template** 中填入天地图矢量底图地址(将 `您的密钥` 换成实际 tk
```text
https://t0.tianditu.gov.cn/vec_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=vec&STYLE=default&TILEMATRIXSET=w&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&FORMAT=tiles&tk=您的密钥
```
4. **Attribution** 可填:`© 天地图`
5. 保存面板后即可看到天地图矢量底图。
### 5.2 叠加标识图cva_w中文注记
若需要地名、道路名等中文注记,可在同一 Geomap 上再添加一层 XYZ 瓦片,叠在底图之上:
1. 在 Geomap 面板的 **Map layers** 中点击 **Add layer**
2. 选择 **XYZ Tile layer**
3. **URL template** 填入标识图地址(同一 tk
```text
https://t0.tianditu.gov.cn/cva_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=cva&STYLE=default&TILEMATRIXSET=w&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&FORMAT=tiles&tk=您的密钥
```
4. 可将该层的 **Opacity** 设为 1不透明这样注记清晰可见。
5. 图层顺序:底图在下,标识图在上;若顺序反了,可在面板里拖拽调整。
### 5.3 说明
- Grafana 会在请求瓦片时把 URL 中的 `{z}``{x}``{y}` 替换为当前层级与行列号,与天地图 WMTS 的 `TILEMATRIX` / `TILEROW` / `TILECOL` 一一对应。
- 底图与标识图使用**同一个 tk** 即可tk 在 [天地图开放平台](https://console.tianditu.gov.cn/) 申请。
- 若希望所有 Geomap 默认使用天地图,可在 Grafana 的 provisioning 或 `default_baselayer_config` 中配置 type 为 `xyz`、url 为上述 vec_w 地址(详见 [Grafana 文档 - Configure the default base layer](https://grafana.com/docs/grafana/latest/panels-visualizations/visualizations/geomap/#configure-the-default-base-layer-with-provisioning))。
---
## 6. 参考
- [天地图开放平台](https://www.tianditu.gov.cn/)
- [开发文档 / 服务资源](https://lbs.tianditu.gov.cn/server/MapService.html)