如何實現OSM地圖本地釋出並自定義配圖
阿新 • • 發佈:2020-12-10
[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/)),不得用於商業目的,基於本文修改後的作品務必以相同的許可