1. 程式人生 > >如何實現OSM地圖本地釋出並自定義配圖

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

[TOC] ## 1、緣起 1. [OpenStreetMap](https://www.openstreetmap.org/)(簡稱OSM)不僅可以免費線上使用,還可以免費[下載](https://download.geofabrik.de/)原始資料,資料格式有`.osm.pbf`和`shp`。 2. 我們將OSM原始資料下載下來,處理成向量瓦片,釋出成服務,就可以實現OSM地圖的本地釋出和自定義配圖。 3. OSM對資料的組織方式,是按點、線、面來的,不是我們常見的按道路、建築物、河流來分圖層的方法,但可以根據屬性進行提取。 4. [openmaptiles](https://openmaptiles.org/)提供了一套OSM資料使用的完整解決方案,可以實現OSM資料的下載、入庫、分析、生成向量瓦片、調整地圖樣式、地圖預覽的全套功能,並且[開源](https://github.com/openmaptiles/openmaptiles)。 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](https://blog.csdn.net/null_of_error/article/details/108133241) 2. 虛擬機器版本我用的VM14,百度網盤下載地址:[https://pan.baidu.com/s/1BTjByB6oTz8cTxOv_GzGWw](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](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](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](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 ``` 3. 測試是否安裝正確 ``` 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](https://github.com/openmaptiles/openmaptiles) 2. 快速入門文件:[https://github.com/openmaptiles/openmaptiles/blob/master/QUICKSTART.md](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/](https://www.wikidata.org/),openmaptiles需要從這個網址下載poi資料,如果不能訪問,就按下面的步驟設定,讓程式跳過這一步。後續想要poi的資料的,可以自行FQ解決。 2. 如何跳過下載poi資料: 1. 使用vi開啟quickstart.sh檔案,vi使用方法參考:[https://zhuanlan.zhihu.com/p/37704677](https://zhuanlan.zhihu.com/p/37704677) ``` vi quickstart.sh ``` 2. 找到 make import-wikidata 行 ![](http://blogimage.gisarmory.xyz/20201209142145.png) 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 按鈕,檢視效果 ![](http://blogimage.gisarmory.xyz/20201209142157.png) ![](http://blogimage.gisarmory.xyz/20201209142207.png) ### 3.5、自定義地圖樣式 1. 啟動maputnik ``` make start-maputnik ``` 2. 在自己電腦瀏覽器中輸入虛擬機器ip地址加埠8088,我電腦的地址是 ``` http://192.168.50.8:8088/ ``` ![](http://blogimage.gisarmory.xyz/20201209142215.jpg) 3. 在剛才啟動的TileServer-GL 網頁中,點選下圖中的TileJSON連結,然後拷貝地址 ![](http://blogimage.gisarmory.xyz/20201209142221.png) ![](http://blogimage.gisarmory.xyz/20201209142227.png) 4. 回到maputnik網頁,點選下圖藍框中的按鈕Data Sources,把上面的地址貼上到綠框中,再點選紅框中的刪除按鈕,關閉其它地圖。關閉彈出框,就能看到我們釋出的地圖了。 ![](http://blogimage.gisarmory.xyz/20201209142231.png) 5. 接下來就可以自由奔放的自定義地圖樣式了 ![](http://blogimage.gisarmory.xyz/20201209142236.png) ### 3.6、注意 1. 中國地區的地圖這樣寫,[檢視所有支援的地區](https://github.com/openmaptiles/openmaptiles/blob/master/QUICKSTART.md) ``` ./quickstart.sh china ``` 2. 建議第一次還是先使用預設的阿爾巴尼亞地區看看效果,熟悉一下流程,因為它的資料小,處理的快。中國地區會很久,也沒有個進度條,第一次測試就用這麼大的,極容易失去耐心。 3. 決定資料處理時間的因素:電腦網速、電腦效能、處理資料的大小、生成瓦片的層級。 4. 我電腦的虛擬機器配置比較低,處理阿爾巴尼亞地區,0-7級資料,大概用了10分鐘左右,處理臺灣地區資料,等了1個小時都沒有完成,最後放棄了,等換個好電腦再試。 5. 想要全國地圖的需要注意,中國地區和臺灣地區的資料是分開的,需要分別進行下載和處理。 6. 切圖等級在`.env`檔案中配置 ## 4、總結 1. 本文詳細介紹`openmaptiles`開源庫的安裝和快速入門使用 2. 輸入下面的幫助命令,可以檢視`openmaptiles`支援的更多功能,我們後續再寫文章詳細介紹 ``` make help ``` ![](http://blogimage.gisarmory.xyz/20201209142244.png) * * * 原文地址:[http://gisarmory.xyz/blog/index.html?blog=OSMVectorTiles](http://gisarmory.xyz/blog/index.html?blog=OSMVectorTiles) 關注《[GIS兵器庫](http://gisarmory.xyz/blog/index.html?blog=wechat)》公眾號, 第一時間獲得更多高質量GIS文章。 ![](http://blogimage.gisarmory.xyz/20200923063756.png) 本文章採用 [知識共享署名-非商業性使用-相同方式共享 4.0 國際許可協議 ](https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh)進行許可。歡迎轉載、使用、重新發布,但務必保留文章署名《GIS兵器庫》(包含連結:  [http://gisarmory.xyz/blog/](http://gisarmory.xyz/blog/)),不得用於商業目的,基於本文修改後的作品務必以相同的許可