一、地图、osm离线地图搭建

osm离线底图服务

一、搭建地图的准备知识

1.先了解各个地图供应商使用的坐标系,包括地理坐标和桌面坐标

osm地图: 地理坐标是WGS84坐标系、桌面坐标是墨卡托坐标系

2.了解docker,创建镜像和容器

二、搭建准备

1.OSM搭建地图底图服务的通过查找资源,搭建教程的官网是:https://switch2osm.org/serving-tiles/

 

 

 

 

搭建方式有:ubuntu或者docker的方式

2.首选docker方式搭建,因为docker hub已经有人把搭建好的镜像上传到仓库了,我搭建的话,只需要去到osmbuilding的官网下载对应底图区域的数据资源,然后依据docker打包镜像和容器,就可以搭建完成底图服务

3.地图数据资源下载

  osmbuiliding示例官方网站:https://osmbuildings.org/documentation/viewer/

  osmbuilding地图数据资源下载网址:https://www.openstreetmap.org/#map=4/36.96/104.17

  

 

 

   根据需要下载的地方的数据,选择性进行下载,下载china-latest.osm.pbf----中国底图的数据

三、开始搭建

由于使用docker方式进行搭建,建议先优先查看官网搭建教程docker版本,然后再到此网站查看别人搭建好的docker镜像,学习搭建教程

1.搭建教程的官网是:https://switch2osm.org/serving-tiles/  ---查看官方docker 搭建教程

2. 查看docker hub已有镜像搭建教程--更详细

  去到docker hub官网 搜索openstreetmap  https://registry.hub.docker.com/search?q=openstreetmap&type=image

  找到星标比较多的镜像,或者根据搭建官网提供的教程搜索:overv/openstreetmap-tile-server:1.3.10 run

    

 

 

搭建步骤:

  查看https://registry.hub.docker.com/r/overv/openstreetmap-tile-server,搭建教程

  实际搭建

  一、 拉取overv/openstreetmap-tile-server镜像到本地仓库

  

docker pull overv/openstreetmap-tile-server

  1.此容器允许您轻松设置给定.osm.pbf文件的 OpenStreetMap PNG 切片服务器。它基于来自switch2osm.org的最新 Ubuntu 18.04 LTS 指南。
  2.我们只需要把我们想展示的数据导入到切片服务器的PostgreSQL,然后运行docker切片服务器即可搭建我们想要的osm底图服务

  二、下载地图pbf数据源文件

  1.wget方式
  示例:下载china的地图tile的pbf文件

  

wget https://download.geofabrik.de/asia/china-latest.osm.pbf

  2.官网下载:
  地址:https://download.geofabrik.de/

 

 

   三、创建docker卷 - 可选 (导入pbf文件数据时,如果第二个-v 挂载指定了宿主机指定目录,可不创建docker卷)

  

docker volume create openstreetmap-data

  openstreetmap-data 卷是用来保存将包含 OpenStreetMap 数据(步骤一下载的pbf文件数据)的 PostgreSQL 数据库

  使用的导入命令:

docker run \ -v /home/osm/china-latest.osm.pbf:/data.osm.pbf \ -v /home/osm/openstreetmap-data:/var/lib/postgresql/12/main \ overv/openstreetmap-tile-server \ import

  通过-v 指定了宿主机目录(指定目录/home/osm/openstreetmap-data)和容器的目录,此步骤,创建docker卷可以不用创建

  四、安装并导入下载的pbf文件数据

  (1)导入pbf文件数据

  

docker run \ -v /home/osm/china-latest.osm.pbf:/data.osm.pbf \ -v /home/osm/openstreetmap-data:/var/lib/postgresql/12/main \ overv/openstreetmap-tile-server \ import

  1.第一个”-v”,把/home/osm/china-latest.osm.pbf数据文件,挂载到/data.osm.pbf下.
  2.第二个”-v”,把/home/osm/openstreetmap-data,挂载到/var/lib/postgresql/12/main下。指定了/home/osm/openstreetmap-data宿主机的路径,方便查看openstreetmap-data内容
  3.pbf文件较大的情况下,parser存储到pgsql的过程会比较长
  4.容器退出且没有错误,则数据成功导入

  (2)自动更新-导入的pbf文件数据(可选)

  

docker run \
-e UPDATES=enabled \
-v /home/osm/china-latest.osm.pbf:/data.osm.pbf \
-v /home/osm/openstreetmap-data:/var/lib/postgresql/12/main \
overv/openstreetmap-tile-server \
import

  1.UPDATES=enabled变量,如果您的导入是地球的提取物并且具有与其关联的多边形边界,例如来自 geofabrik.de 的那些,那么可以将您的服务器设置为自动更新

  五、启动 tile 服务器

  

docker run --name openstreetmap -p 6004:80 -v /home/osm/openstreetmap-data:/var/lib/postgresql/12/main --restart=always -d overv/openstreetmap-tile-server:1.3.10 run

  1.—name,指定运行的docker容器name(openstreetmap)
  2.-p,根据虚拟机想开放的端口,自己选择映射的端口。6004是宿主机端口,80是容器端口
  3.—restart=always,Docker 重启时,容器自动启动
  4.-d,指定docker后台运行

  六、访问

  1.osmbuildings的访问规则是:https://ip:port/tile/{z}/{x}/{y}.json 如果要在页面使用,需要配置这个访问路径。osmbuildings.js有自己的xyz的算法。
  2.查看底图服务
  直接访问宿主机的地址即可查看,如:http://宿主机ip:6004、宿主机是虚拟机的,此处可能需要做下宿主机的端口映射

 

posted on 2021-11-10 18:06  我是你爷爷的爷爷  阅读(6403)  评论(0编辑  收藏  举报

导航