OpenStreetMapのタイルサーバをDockerで構築する

OpenStreetMapの地図タイル配信サーバ(ラスタ形式)をDockerを使ってWindows PC上にたてる。

環境

Windows 10でDocker Desktop (WSL 2バックエンド) がインストール済み。

  • Windows 10 Home: 20H2
  • Docker Desktop: 3.5.2
  • Docker Engine: 20.10.7

参考

タイルサーバを構築する手順

1. コンテナイメージの取得

Docker Hubからイメージを取得する。

> docker pull overv/openstreetmap-tile-server
> docker images

2. OpenStreetMapのデータ取得

OpenStreetMapのデータを配信しているWebサイト(今回はGeofabrik)から、.osm.pbf形式のOpenStreetMapデータをダウンロードする。Switch2OSMの手順ではザンビアのデータを使っているが、ここでは日本の関東地方をダウンロードする。(Windows 10のPower Shellで作業を行うため、wgetコマンドのオプションがSwitch2OSMの手順と異なる点に注意)

> wget https://download.geofabrik.de/asia/japan/kanto-latest.osm.pbf -OutFile "C:/path/to/osm/data/kanto-latest.osm.pbf"

3. Dockerのボリューム作成

コンテナが削除されてもデータの格納先となるPostgreSQLが保持されるよう、ボリュームを作成する。

> docker volume create openstreetmap-data
> docker volume ls

4. データベースの構築とインポート

overv/openstreetmap-tile-serverコンテナをimportパラメータで実行し、PostgreSQLデータベースの構築とデータのインポートを行う

> docker run -v C:/path/to/osm/data/kanto-latest.osm.pbf:/data.osm.pbf -v openstreetmap-data:/var/lib/postgresql/12/main overv/openstreetmap-tile-server import

PostgreSQLデータベースの構築に関する補足

  • 上記のコマンドをそのまま実行すると、データベース名はgis、ユーザ名 / パスワードはともにrendererとなる
  • コマンドの完了時にコンテナは停止し、PostgreSQLも停止状態になる

5. タイルサーバの起動

overv/openstreetmap-tile-serverコンテナを今度はrunパラメータでバックグラウンド実行し、OpenStreetMapのタイルサーバを起動する。

> docker run -p 80:80 -v openstreetmap-data:/var/lib/postgresql/12/main -d overv/openstreetmap-tile-server run

6. タイルの表示確認

ブラウザで以下のURLにアクセスし世界地図の画像が表示されることを確認する。

http://localhost/tile/0/0/0.png

f:id:bannyaaa:20210814012931p:plain
© OpenStreetMap contributors