搭建openstreetmap地图服务
前言内容包括1. 搭建openstreetmap地图服务(源自openstreetmap官方搭建教程)2. 搭建tileserver-gl地图服务(源自openmaptiles官方搭建教程)(没错,我就是一个官方搬运工,哈哈,不过重点不是教程,而是我在搭建过程中踩的坑,希望能对你有所帮助)全程干货较多,阅读前建议具备以下知识:1. openstreetmap相关知识2. docker和docker
前言
内容包括
1. 搭建openstreetmap地图服务(源自openstreetmap官方搭建教程)
2. 搭建tileserver-gl地图服务(源自openmaptiles官方搭建教程)
(没错,我就是一个官方搬运工,哈哈,不过重点不是教程,而是我在搭建过程中踩的坑,希望能对你有所帮助)
全程干货较多,阅读前建议具备以下知识:
1. openstreetmap相关知识
2. docker和docker-compose方面的知识
搭建openstreetmap地图服务(源自openstreetmap官方搭建教程)
部署步骤
1. 首先在linux上安装docker(我这里使用的是CentOS 7)。
2.下载地图数据,建议去这个网站下载https://download.bbbike.org/,选择要下载的对应区域,复制链接,在迅雷中下载,比如我下载整个星球的pbf数据(53G,需要考虑在linux上使用之后的数据膨胀度,大概会膨胀20倍,意思就是要准备3T左右的硬盘空间),直接将这个链接复制(https://download.bbbike.org/osm/planet/planet-latest.osm.pbf)到迅雷中。
3. 将下载的pbf数据放到Linux系统中
4. 新建数据库的挂载卷
docker volume create openstreetmap-data
#这一步也可以自己指定数据库的挂载位置
5. 下载官方提供的openstreetmap-tile-server镜像,并且将地图数据导入到postgres数据库中,这一步需要花费很多的时间,数据越大,花费时间越久
docker run -v /data/openstreetmap/planet-latest.osm.pbf:/data.osm.pbf -v openstreetmap-data:/var/lib/postgresql/12/main overv/openstreetmap-tile-server:1.3.10 import
官方在前面是加了一个time的,这个命令主要是为了判断自己用了多少时间,可加可不加
6. 创建容器卷openstreetmap-rendered-tiles,这一步是将已渲染的图块存储在中/var/lib/mod_tile,确保该数据在容器重启后仍然存在,进入地图不用重新渲染,不然会出现在浏览器上打开地图,半天都加载不出来的情况
docker run -p 8099:80 --restart=always --name osm-server -v openstreetmap-data:/var/lib/postgresql/12/main -v openstreetmap-rendered-tiles:/var/lib/mod_tile -d overv/openstreetmap-tile-server:1.3.10 run
7. 将下面的地址换成自己的ip和端口,就能正常访问了
http://your.server.ip.address/tile/0/0/0.png
缺点:
其实这种地图服务由于使用的是png协议,有着非常明显的缺点,就是地图渲染很慢,如果你刚安装好,那么在浏览器中打开,加载会很慢。你搭建好了之后,需要等待,等服务器端慢慢渲染,过段时间之后,地图的加载速度就明显变得更快了。
不过这个“快”也是存在瓶颈的,当你将地图放大之后,可能第12个级别(缩放级别,总共14个缩放级别)开始,地图加载就会明显变慢,商用的话,还是存在很大的压力。
优点:
优点还是很明显的,项目开源,数据开源,而且数据也是在不断更新。
前端技术支持
可以通过这些技术,可以让地图实现自己需要实现的效果,比如根据经纬度在地图上标记点等。
tileserver-gl地图服务
如果你需要更好,更快的地图服务,请看下面的这篇博客:
搭建tileserver-gl地图服务(源自openmaptiles官方搭建教程)
源码与文档地址
openstreetmap-tile-server源码GitHub地址:https://github.com/Overv/openstreetmap-tile-server
openstreetmap文档地址:https://switch2osm.org/serving-tiles/using-a-docker-container/
openstreetmap示例:https://www.openstreetmap.org/
openstreetmap数据源1(可下载星球地图数据):https://download.bbbike.org/
openstreetmap数据源2(下载指定地区数据):https://download.geofabrik.de/
openstreetmap-tile-server镜像地址:https://hub.docker.com/r/overv/openstreetmap-tile-server
更多推荐
所有评论(0)