美文网首页GIS后端开源
Make it works(6) 纯离线的无限级别中国地图解决方

Make it works(6) 纯离线的无限级别中国地图解决方

作者: 默而识之者 | 来源:发表于2020-12-12 18:00 被阅读0次

首先,这不是一个教程.而是一个现成的产品包,包括了资源与服务,可以开箱即用.

1. 引入

1.1 它解决了哪些问题

  • 下载地图瓦片不可能下载很多级别,有时候遇到特定缩放级别没有地图十分尴尬的问题
  • 内网同时有使用矢量和栅格瓦片的场景,无法同时应对的问题
  • 后续数据扩展不方便的问题

1.2 它解决不了的问题

  • 因为使用的是OSM免费数据,地物相当少,因此大多数情况无法看清详细的地物
  • 使用栅格影像时,因为中国地图的样式十分复杂,又是实时渲染,因此渲染时间较长

1.3 注意

  • 使用的是OSM数据源,请遵守该数据源的使用许可
  • 使用的数据源是2019年的数据,比较旧
  • 请严格遵循中国的网络地图相关规范⚠️⚠️⚠️

2. 使用

整个包在这里,密码: i30d.请全部下载到本地.

2.1 部署环境

  • 具有Docker和Docker-compsoe的Linux/Windows环境

2.2 组件与原理

  • 数据源:OSM的中国区地图包
  • 地图渲染引擎:TileServer-gl
  • 中国地图渲染样式:osm-liberty
  • 字体:思源黑体与思源宋体

原理其实很简单,TileServer提供了一种渲染功能,OSM提供了Tileserver支持的mbtiles格式的底图包.使用了开源的OSM-liberty样式,将里面的字体替换为本地字体,同时,处理为pbf格式的本地字体也由Tileserver服务化,在渲染时调用.

Tileserver的优势是完全兼容Mapbox样式,将矢量数据渲染为png格式的栅格瓦片,当然,当前端就是Mapbox时,也可以直接提供矢量瓦片.这样就同时兼容了两者.

2.3 部署

  1. 执行install.sh导入Tileserver-gl的docker镜像,因为下载非常慢,还可能失败,因此将其放在包中
  2. 在根目录执行docker-compose up -d,即可启动服务

2.4 管理页面

默认设置为8080端口,进入localhost:8080,就能进入Tileserver的管理页面


其中:
  • GL Style:OSM Liberty的样式JSON,可以直接被Mapbox使用

  • TijeJson:标准的Tilejson文件,是栅格形式的,也能被Mapbox直接使用

  • WMTS:描述XML,兼容其他地图服务

  • XYZ:一个简单的xyz形式的URL路径,可以被直接使用与常用地图引擎

  • Viewer/Vector:以矢量瓦片的形式展示数据

  • Raster:以栅格瓦片的的形式展示数据

  • inspect:直接展示数据,不进行复杂渲染,展示数据中的点线面

2.5 地图效果

可以看见,无论是矢量瓦片,栅格瓦片还是字体瓦片,都来自于本地.完全脱离了互联网.

整体 局部 有地物的局部 没有地物的局部 邻国街道 更远一些的邻国 路网 栅格格式

3. 扩展

3.1 修改端口

只需要改动docker-compose.yml中的端口映射即可

3.2 添加数据

  1. 将数据制作成mbtiles包并放到mb路径下(当然,数据本身可以通过网络访问的就不用了)
  2. 修改config.json,添加该数据的映射(同样只针对本地数据)
  3. 添加样式文件的json,并放到styles文件夹下
  4. 修改config.json,添加该样式的映射(如果只需要数据,不需要渲染的话可以无需后两步)

4. 结语

这个东西很早就成型并投入使用了,工作变化后,我也再也没有使用/更新过.最近整理了一下,看看能不能帮助更多的人.

相关文章

网友评论

    本文标题:Make it works(6) 纯离线的无限级别中国地图解决方

    本文链接:https://www.haomeiwen.com/subject/matygktx.html