一、地圖、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、宿主機是虛擬機的,此處可能需要做下宿主機的端口映射

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM