底图替换实现方案SfNstu TyphoonLab · BASEMAP PLAN星数流光旗下企划

配套文件:《免责说明》第五条第 3 款、《法律风险分析》 C 项 | 用途:部署与维护时执行

这份文件解决什么

《免责说明》第五条第 3 款写明:地图瓦片如无法取得相应服务授权,将替换为自建或公共领域瓦片,或改用纯矢量底图。本文件说明这句话具体怎么做——三条可执行的路线、各自要改哪里、代价是什么。

三条路线任选其一即可,不必全做。它们不是并列关系,而是"先试省事的,退到最稳的"。

一、先划三条底线

换底图不是"把图片地址换成另一个",而是要同时满足三件事,缺一件都不算解决:

  1. 边界画法要合规。在我国境内公开使用的地图,边界、岛礁画法必须与国家主张一致,以自然资源部"标准地图服务"发布的版本为准,并按规定报送审核、标注审图号。底图提供方怎么画,不代表本站就能这么画。
  2. 瓦片要按规矩取。应经服务方官方接口 + 授权凭证(Key)调用,而不是直接连别人的瓦片端点。直连一般不符合服务条款,量大了会被限流、封禁。
  3. 供给要能长期稳定。"现在没人管"不是理由——访问量涨上来之后,问题会集中暴露。
一句话:底图合规 = 边界合规 + 授权合规 + 供给稳定。下面三条路线,就是在这三个约束下挑不同的解法。

二、路线一:改用有审图号的官方底图改动最小

怎么做

  1. 改用国家地理信息公共服务平台(天地图)的底图。它由主管部门主导,提供矢量、影像、地形等多种底图,本身带审图号,可在其网站上免费注册并申请调用凭证。
  2. 把前端底图清单里的地址换成天地图的官方接口(一种标准地图服务格式,参数里带凭证),署名改为其规定的字样。
  3. 服务器响应头里的图片白名单,把允许来源换成天地图的域名。

两个容易踩的细节

同样思路也适用于以官方接口提供底图的其他商业服务(需申请各自的凭证,并按其要求展示署名;国产商业底图另有审图号要求)。

三、路线二:纯矢量底图零外部依赖,推荐作兜底

思路

干脆不下载任何瓦片图片,把海岸线、岛屿、经纬网用线"画"在地图上。观感接近报刊插图,谈不上精细,但作为台风在洋面上移动的背景完全够用。

数据从哪来(关键)

怎么落到页面上

代价:没有街道、地名和影像,信息量明显低于现在。适合"拿不到授权、又不想冒风险"时作为随时可切的兜底方案。

四、路线三:自建瓦片服务完全自主,工程量最大

三步走

  1. 准备数据。用自己绘制的图,或明确允许自由使用的公共领域数据(例如美国航天局的全球影像)。注意两点:"免费"不等于"公共领域"(很多是署名共享、禁止商用或限制流量);境外来源的边界数据不能直接用来画中国边界。
  2. 切成瓦片。栅格图用 GDAL 的切片工具,一条命令即可切出 0–6 级(本项目演示范围不需要高等级);矢量数据用 tippecanoe 一类工具转成矢量瓦片。
  3. 托管。切出来就是一堆按"层级/列/行"命名的图片文件,放进站点的静态目录、由入口脚本放行即可,不需要额外服务;前端底图地址改成本站相对路径。

命令示例

gdal2tiles.py -p mercator -z 0-6 --xyz 底图.tif tiles/ — 把一张栅格图切成 0–6 级瓦片目录

tippecanoe -o out.mbtiles -zg 数据.geojson — 把矢量数据打成瓦片包

注意:自建只解决"授权"问题,不自动解决"边界合规"。如果自制底图上要出现中国边界,仍须以标准地图为准并按规定标注,否则照样违规。
代价:需要一次性准备数据与切片环境,层级越高磁盘占用越大。适合有自有数据、希望长期完全自主的情况。

五、三条路线怎么选

路线一 官方底图路线二 纯矢量路线三 自建瓦片
改动量小中大
外部依赖需申请凭证,有配额无无
边界合规高(自带审图号)高(边界自控)取决于数据来源
观感与现在接近,有街道/影像简洁示意,无地名街道完全自定
适合希望保持现有观感时拿不到授权时的兜底有自有数据、要长期自主

建议顺序:先按路线一申请官方凭证;申请不到或不打算长期维护凭证,就切到路线二;等手上有自有数据、也愿意做一次切片,再考虑路线三。

六、落到本项目要改哪些地方

  1. 前端底图清单——把底图地址换成新来源(路线二则改为矢量图层)。
  2. 模拟器页的底图切换按钮——增删到与实际可用的底图一一对应,别留下点了没反应的选项。
  3. 引导页的底图与来源说明——底图种类、来源署名、署名位置跟着改。
  4. 服务器响应头里的图片来源白名单——换成新来源;走路线二或三时收紧为"只允许本站"。
  5. 页面引用的缓存版本号——只要动过前端脚本,就必须升这个号,否则访客浏览器仍在跑旧脚本,会以为"改了没生效"。
无论走哪条路,底图角落的署名都不能删。署名是使用他人底图的前提,也是《项目使用守则》里明确禁止篡改的内容。

七、结论

要么用有审图号、走官方接口的底图,要么干脆不依赖任何外部瓦片,把海岸线自己画出来。介于两者之间、既没有审图号、又是直连他人服务器的底图来源,短期省事,长期都是隐患。