OSM地圖本地發佈-如何生成各省市矢量地圖

一、緣起

  1. openmaptiles提供了一套OSM數據使用的完整解決方案,在前面文章如何實現OSM地圖本地發佈並自定義配圖中,咱們詳細介紹瞭如何安裝openmaptiles,並生成了一個阿爾巴尼亞地區的「helloworld」。html

  2. 參照上篇文章的內容,輸入下面的命令,就能夠生成中國地圖。docker

    ./quickstart.sh china
  3. 上面命令,須要耐心等待,我電腦4核8G,用了16個小時左右。最終獲得了中國大陸地區,0-7級的矢量瓦片數據。工具

  4. openmaptiles主要是從geofabrik網站下載OSM數據,geofabrik在中國地區下載的最小顆粒度是中國大陸和臺灣,沒有辦法按大陸地區的省,或按自定義區域進行下載。post

二、問題

  1. 能不能按自定義區域生成地圖?
  2. 有哪些方法能提升處理速度?

三、分析

  1. openmaptiles生成地圖分4個步驟:一、數據下載、二、數據入庫、三、數據分析、四、生成矢量瓦片。
  2. 問題一分析:
    1. 前三個步驟,只能按整個中國的範圍和全部層級來處理,第4步能夠經過控制範圍、層級來實現自定義區域的切圖。
  3. 問題二分析:
    1. 第1步數據下載的時間取決於網速。
    2. 第2步數據入庫和第3步數據分析的時間取決於機器性能。
    3. 第4步生成矢量瓦片的時間取決於機器性能、切圖範圍、切圖層級。
    4. 想要提升處理速度,能夠針對上面的要素,對症下藥。

四、生成自定義地區矢量瓦片

  1. 前面的./quickstart.sh china 命令包含1-4步,後續就不要再執行這個命令了,否則又得重來16個小時。前面已經提到過,這個命令在第4步,默認會切整個中國範圍0-7級的地圖。想要更大層級的地圖,只須要另外單獨執行第4步就能夠。
  2. openmaptiles生成的矢量瓦片,最大到14級,設置再大也沒有用,由於前三步沒有對更大級別的數據進行分析。
  3. 第4步生成矢量瓦片的命令,會把上一次的瓦片清除,若是想把兩次的結果放在一個文件中,好比想把中國0-7級和北京8-14級的矢量瓦片放在一個.mbtiles文件中,則須要修改配置,讓程序不清除上一次的結果。
  4. 下面以生成全國範圍0-7級地圖+北京範圍8-14級地圖爲例,說明如何來修改配置。
  5. 爲避免重啓電腦後就各類不靈的尷尬,咱們從重啓電腦後開始。

4.一、啓動docker

  1. 檢查docker是否啓動性能

    docker run hello-world
  2. 若是沒有啓動,輸入下面命令啓動docker。若是有須要,後續能夠本身把docker設置爲開機自啓動。網站

    systemctl start docker

4.二、啓動postGIS容器

  1. 前面的./quickstart.sh china 命令在執行過程當中,下載了4個docker鏡像,啓動了若干個容器,工具類容器在使用完成後就銷燬了,數據類和應用類的容器會保留。(鏡像和容器的關係ui

  2. 下圖紅框中的容器就是存放數據的,它裏面有個postGIS,咱們須要啓動這個容器。
    .net

  3. 進入openmaptiles文件夾code

  4. 啓動postGIS容器htm

    make start-db-preloaded

4.三、設置不清理上次的結果

  1. 打開Makefile文件,找到generate-tiles命令,下圖紅框的位置,就是清除上次結果文件的命令,咱們在這行前面輸入#號,把它註釋掉。

4.四、刪除默認切圖範圍

  1. 程序默認會用china.bbox中的參數做爲切圖範圍,咱們把這個文件刪掉,後續在.env文件中配置。

  2. china.bbox文件在data文件夾中,刪除命令:

    rm -f ./data/china.bbox

4.五、修改切圖層級和範圍

  1. 打開.env文件
  2. 修改切圖的層級MIN_ZOOMMAX_ZOOM
  3. 修改切圖的範圍BBOX,格式爲:minX,minY,maxX,maxY

4.六、生成瓦片

  1. 輸入下面命令,生成瓦片

    make generate-tiles
  2. 生成的結果是tiles.mbtiles文件,在data文件夾中

4.七、重複操做

  1. 重複4.5和4.6步驟,修改層級和範圍,就能把屢次的結果放在一個文件中。

五、總結

  1. openmaptiles生成地圖分4個步驟:一、數據下載、二、數據入庫、三、數據分析、四、生成矢量瓦片。
  2. 中國地區生成地圖的最小顆粒度是中國大陸和臺灣,沒有辦法按大陸地區的省或按自定義區域進行生成。
  3. 前三個步驟,只能按整個中國的範圍來處理,第4步能夠經過控制生成範圍、生成層級來實現生成自定義區域的地圖。
  4. 前三個步驟只須要執行一次,最後一個步驟能夠屢次執行。
  5. 若是想把屢次生成的矢量瓦片放在一個文件中,能夠設置不清除上次生成的結果。

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

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

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

相關文章
相關標籤/搜索