如何實現OSM地圖本地釋出並自定義配圖

GIS兵器庫發表於2020-12-10

1、緣起

  1. OpenStreetMap(簡稱OSM)不僅可以免費線上使用,還可以免費下載原始資料,資料格式有.osm.pbfshp
  2. 我們將OSM原始資料下載下來,處理成向量瓦片,釋出成服務,就可以實現OSM地圖的本地釋出和自定義配圖。
  3. OSM對資料的組織方式,是按點、線、面來的,不是我們常見的按道路、建築物、河流來分圖層的方法,但可以根據屬性進行提取。
  4. openmaptiles提供了一套OSM資料使用的完整解決方案,可以實現OSM資料的下載、入庫、分析、生成向量瓦片、調整地圖樣式、地圖預覽的全套功能,並且開源
  5. 接下來我們就來詳細介紹openmaptiles開源庫如何安裝和快速入門。

2、準備環境

  1. 安裝linux系統(openmaptiles開源庫只能在linux系統上執行)
  2. 安裝docker
  3. 安裝Docker Compose
  4. 安裝git

2.1、安裝linux系統

  1. 我是在虛擬機器上安裝的,虛擬機器和linux系統的安裝教程參考:https://blog.csdn.net/null_of_error/article/details/108133241
  2. 虛擬機器版本我用的VM14,百度網盤下載地址:https://pan.baidu.com/s/1BTjByB6oTz8cTxOv_GzGWw,提取碼:kshr,含許可。
  3. linux系統我使用的是centOS7.9,阿里雲官方映象下載地址:http://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-Everything-2009.iso

2.2、安裝docker

  1. 安裝教程參考:https://www.runoob.com/docker/centos-docker-install.html

  2. 我用的是手動安裝方式,安裝步驟:

    1. 安裝docker

      yum install -y yum-utils device-mapper-persistent-data lvm2
      
    2. 設定國內阿里雲的映象源,會比官方的快

      yum-config-manager --add-repo  http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
      
    3. 安裝Docker Engine-Community

      yum install docker-ce docker-ce-cli containerd.io
      
    4. 啟動docker

      systemctl start docker
      
    5. 測試是否安裝正確

      docker run hello-world
      

2.3、安裝Docker Compose

  1. 安裝教程參考:https://www.runoob.com/docker/docker-compose.html

  2. 安裝步驟:

    1. 安裝docker compose

      curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
      
    2. 設定許可權

    chmod +x /usr/local/bin/docker-compose
    
    1. 測試是否安裝正確
    docker-compose --version
    

2.4、安裝git

  1. 安裝教程參考:https://www.jianshu.com/p/e6ecd86397fb

  2. 安裝步驟:

    1. 安裝

      yum install git
      
    2. 測試是否安裝正確

      git --version
      

3、釋出地圖

openmaptiles開源庫

  1. github地址:https://github.com/openmaptiles/openmaptiles
  2. 快速入門文件:https://github.com/openmaptiles/openmaptiles/blob/master/QUICKSTART.md

3.1、拉取程式碼

  1. 拉取openmaptiles程式碼

    git clone https://github.com/openmaptiles/openmaptiles.git
    
  2. 拉取完成後,進入目錄

    cd openmaptiles
    
  3. 執行make命令

make 

3.2、測試網路

  1. 先測試一下你電腦能不能開啟這個網址:https://www.wikidata.org/,openmaptiles需要從這個網址下載poi資料,如果不能訪問,就按下面的步驟設定,讓程式跳過這一步。後續想要poi的資料的,可以自行翻牆解決。

  2. 如何跳過下載poi資料:

    1. 使用vi開啟quickstart.sh檔案,vi使用方法參考:https://zhuanlan.zhihu.com/p/37704677

      vi quickstart.sh
      
    2. 找到 make import-wikidata 行

    3. 輸入 i 進入插入模式

    4. 在 make import-wikidata 命令前輸入#號,然後按 esc

    5. 輸入:wq 儲存退出

3.3、處理資料

執行下面的快速啟動命令,程式會自動進行OSM資料的下載、入庫、分析、生成向量瓦片的工作。預設是阿爾巴尼亞地區,生成瓦片的層級是0-7級。後面會講如何設定地區和層級。這個命令執行時間會稍微有些長,需耐心等待。

./quickstart.sh 

3.4、釋出向量瓦片服務

資料處理完成後,把生成的向量瓦片釋出成地圖服務,步驟:

  1. 啟動服務

    make start-tileserver
    
  2. 在自己電腦瀏覽器中輸入虛擬機器ip地址加埠8080,我電腦的地址是

    http://192.168.50.8:8080/
    
  3. 點選 view 按鈕,檢視效果

3.5、自定義地圖樣式

  1. 啟動maputnik

    make start-maputnik
    
  2. 在自己電腦瀏覽器中輸入虛擬機器ip地址加埠8088,我電腦的地址是

    http://192.168.50.8:8088/
    

  3. 在剛才啟動的TileServer-GL 網頁中,點選下圖中的TileJSON連結,然後拷貝地址

  4. 回到maputnik網頁,點選下圖藍框中的按鈕Data Sources,把上面的地址貼上到綠框中,再點選紅框中的刪除按鈕,關閉其它地圖。關閉彈出框,就能看到我們釋出的地圖了。

  5. 接下來就可以自由奔放的自定義地圖樣式了

3.6、注意

  1. 中國地區的地圖這樣寫,檢視所有支援的地區

    ./quickstart.sh china 
    
  2. 建議第一次還是先使用預設的阿爾巴尼亞地區看看效果,熟悉一下流程,因為它的資料小,處理的快。中國地區會很久,也沒有個進度條,第一次測試就用這麼大的,極容易失去耐心。

  3. 決定資料處理時間的因素:電腦網速、電腦效能、處理資料的大小、生成瓦片的層級。

  4. 我電腦的虛擬機器配置比較低,處理阿爾巴尼亞地區,0-7級資料,大概用了10分鐘左右,處理臺灣地區資料,等了1個小時都沒有完成,最後放棄了,等換個好電腦再試。

  5. 想要全國地圖的需要注意,中國地區和臺灣地區的資料是分開的,需要分別進行下載和處理。

  6. 切圖等級在.env檔案中配置

4、總結

  1. 本文詳細介紹openmaptiles開源庫的安裝和快速入門使用

  2. 輸入下面的幫助命令,可以檢視openmaptiles支援的更多功能,我們後續再寫文章詳細介紹

    make help
    


原文地址:http://gisarmory.xyz/blog/index.html?blog=OSMVectorTiles

關注《GIS兵器庫》公眾號, 第一時間獲得更多高質量GIS文章。

本文章採用 知識共享署名-非商業性使用-相同方式共享 4.0 國際許可協議 進行許可。歡迎轉載、使用、重新發布,但務必保留文章署名《GIS兵器庫》(包含連結:  http://gisarmory.xyz/blog/),不得用於商業目的,基於本文修改後的作品務必以相同的許可釋出。

相關文章