2017年7月28日 星期五

steps for setting up an osm-style map server from OsmHackTW

在 GitHub 開源平台上,OsmHackTW 提供許多台灣相關的地圖資源。
其中,openstreetmap-tiles-docker 專案利用docker容器建立本地端開放街圖標準樣式的台灣地圖服務。
以下介紹如何快速建立此服務映像檔及啟動服務的方法:

1.下載映像檔製作環境
  利用瀏覽器連線到網址 https://github.com/sekewei/openstreetmap-tiles-docker
    點選 【Clone or Download / Download ZIP】,將下載的壓縮環境檔解開

  若有安裝 git 開發環境,也可使用下列 git 指令下載製作環境
    git clone https://github.com/sekewei/openstreetmap-tiles-docker.git

2.製作地圖服務映像檔
  進入製作環境的資料夾,利用如下 docker 指令製作地圖服務映像檔
    cd openstreetmap-tiles-docker
    docker build -f ./Dockerfile -t twstd:latest .

3.初始化地圖資料庫
3.1.啟動容器,執行資料庫初始化腳本
    docker run -it -v /docker/osm-postgresql:/var/lib/postgresql --name twstd twstd:latest /bin/bash
    cd /usr/local/sbin/
    ./run initdb
    ./run startdb
    ./run createuser
    ./run createdb

3.2.下載台灣地圖資料,匯入資料庫
    wget -O /data/import.pbf http://download.geofabrik.de/asia/taiwan-latest.osm.pbf
    ./run import

3.3.含圖資存成新版映像檔
    暫時跳離容器終端機可使用 Ctrl-p + Ctrl-q
    docker commit -m full_loaded twstd twstd:latest

4.啟動地圖服務容器
  利用如下指令啟動地圖服務容器
   docker run -it -p 80:80 -v /docker/osm-postgresql:/var/lib/postgresql --name twstd twstd:latest
   cd /usr/local/sbin/
   ./run startservices

5.測試地圖服務
  利用瀏覽器連線到本地主機80號埠測試地圖服務,點選'本地街圖'選項
    http://localhost

6.更新圖資
  利用如下指令來更新台灣區地圖資料
   docker attach twstd
   cd /usr/local/sbin/
   ./run startdb       # 若執行updatemap出現資料庫連線錯誤,須先啟動資料庫
   ./run updatemap
   Ctrl-p + Ctrl-q

註: 
1. 此服務的設計,利用-v參數將容器內地圖資料庫目錄 /var/lib/postgresql 
   連結到主機目錄/docker/osm-postgresql,方便主機獨立維護圖資。

2. 如下兩個台灣地圖服務專案的差異為地圖樣式不同:
     開放街圖標準樣式: https://github.com/sekewei/openstreetmap-tiles-docker
     開放街圖明亮樣式: https://github.com/sekewei/docker-opentileserver

沒有留言: