Geolonia Oceanusの紹介

今回は、Geolonia社のGitHubにて公開されたOceanusをご紹介したいと思います。

Oceanusの概要

Oceanusは、NaturalEarthから提供される世界地図データをmbtilesに変換しTileserver-GLにて配信するまでの一連の作業をワークフロー化したものです。
Oceanusを使うことにより、シェープファイルからmbtilesへの変換および端末への配信を気軽に体験することができます。
Oceanusの概要を以下に示します。

  • UbuntuベースのDockerコンテナを作成
  • NaturalEarthのサイトからシェープファイルをダウンロード
  • ダウンロードしたシェープファイルをPythonスクリプトによりGeoJSONに変換
  • tippecanoeを使ってGeoJSONをmbtilesに変換
  • TileserverGLを使って作成したmbtilesを配信

一連の作業が完了すると、ブラウザなどから世界地図を表示できます。
Oceanusには日本語フォント(Google Noto Font)を同梱しており、ズームレベル4までは以下のように国名を表示します。

tile-builderで作成した地図(国レベル)

ズームレベル5以降では州・県レベルの名称や境界を日本語で表示します。

tile-builderで作成した地図(州、県レベル)

Oceanusの実行に必要な環境

Oceanusを実行するために必要な環境を以下に示します。

  • OSはLinuxもしくはMacであること
  • Dockerがインストール済みであること
  • ディスクの空き容量が2GB程度あること

検証はしていませんが、Windows+Docker環境でもMinGWなどでbashが動作すれば、実行は可能なはずです。

Oceanusの実行

では、実際にOceanusを実行してみましょう。
最初にGitHubからクローンを取得します。

$ git clone https://github.com/geolonia/oceanus
$ cd oceanus

次に、シェルスクリプトoceanus.shを実行します。

$ ./oceanus.sh

実行すると、Dockerイメージをビルドし、NaturalEarthのシェープファイルからmbtilesを作成します。
Dockerイメージを含むダウンロードサイズは1.3GB程度となります。このうちシェープファイルは230MB程度です。
ネットワークの速度にもよりますが、7分程度でmbtilesの作成が完了します。

実行結果の確認

ビルドされたDockerイメージを確認します。

$ docker image ls
REPOSITORY                 TAG       IMAGE ID       CREATED         SIZE
geolonia/oceanus      latest    54d0b71e42e4   26 hours ago    1.06GB

作成されたイメージには、Ubuntu18.04をベースとしてPythonやtippecanoeなどの必要プロダクトが導入されています。

スクリプトの実行は、ダウンロードを含め早ければ5分程度で終了すると思います。
スクリプトが正常終了すると、引数で指定したデータ保存用のディレクトリは以下のようになっていると思います。

$ ls -la
drwxr-xr-x 3 root root 20480 Dec 26 17:54 10m_cultural
drwxr-xr-x 2 root root 20480 Dec 26 17:53 10m_physical
drwxr-xr-x 2 root root 12288 Dec 26 17:52 110m_cultural
drwxr-xr-x 2 root root 12288 Dec 26 17:52 110m_physical
drwxr-xr-x 2 root root 16384 Dec 26 17:53 50m_cultural
drwxr-xr-x 2 root root 12288 Dec 26 17:52 50m_physical

-rw-rw-r– 1 takamoto takamoto 2931 Dec 26 17:52 shp2geojson.yaml
-rw-r–r– 1 root root 82396064 Dec 26 17:54 shp2geojson.json
-rw-r–r– 1 root root 16015360 Dec 26 17:54 oceanus.mbtiles

緑網掛けのディレクトリには、NaturalEarthからダウンロードしたシェープファイルが収容されています。このディレクトリはDockerコンテナから作成したので、オーナーがrootとなってしまっています。
黄色網掛けのshp2geojson.jsonファイルは、NaturalEarthから変換したGeoJSONファイルです。NaturalEarthには168種類のシェープファイルが収容されていますが、Pythonスクリプトによりshp2geojson.yamlで指定したファイルのみGeoJSONに変換します。
ピンク網掛けのoceanus.mbtilesファイルは、GeoJSONファイルをtippecanoeにより変換したmbtilesファイルです。

次に、QGISを使ってoceanus.mbtilesの内容を確認してみましょう。
QGISを起動し、oceanus.mbtilesをドロップ(マウスでドラッグ・ドロップ)することで、以下のように地図が表示されます。

oceanus.mbtilesをQGISで表示

mbtilesの配信

OceanusではHTTPサーバーによる地図タイル配信環境を構築できます。
具体的には、oceanus.mbtilesをTileserverGLのDockerコンテナを使って配信します。コマンドの実行イメージは以下となります。

$ ./runtilesv.sh

TileserverGLのコンテナの起動確認は、以下のように実施します。

$ docker container ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fcd82c2e1c29 klokantech/tileserver-gl “/bin/bash /usr/src/…” 24 hours ago Up 24 hours 0.0.0.0:80->80/tcp tilesv

デフォルトではコンテナ名”tilesv”、ポート80にて配信を行います。

動作確認

最後にブラウザを使って地図表示確認をしてみましょう。
ブラウザから以下のようにURLを指定します。

http://サーバー名:ポート番号

ブラウザには以下のようにTileserverGLの初期画面が表示されます。

TileserverGLの初期画面

ここで、”STYLES”の”Viewer”ボタンを押下すると地図が表示されます。

また、QGISの最新版(3.16.1 2020.12.26時点)使っての表示確認もできます。

QGISに地図表示するための設定は、画面左の”ブラウザ”パネルの”Vector Tiles”の右クリックメニューから”新しい一般接続”を選択して表示される”ベクタタイル接続”ダイアログに以下の情報を設定します。

  • URL https://labo.takamoto.biz/oceanus/data/openmaptiles/{z}/{x}/{y}.pbf
  • Style https://labo.takamoto.biz/oceanus/styles/basic/style.json
ベクタタイル接続ダイアログ

QGISによる地図表示は以下のようになります。

QGISを使ったoceanus.mbtilesの表示

まとめ

今回は、Geolonia社のGitHubにて公開されているOceanusをご紹介しました。
以下のサイトからもOceanusで作成した地図を確認できます。

https://labo.takamoto.biz/oceanus

Geolonia社ではサーバレスでの地図配信など先進的な取り組みをしていますので、注目していきたいと思います。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

twenty − 17 =

前の記事

QGIS3.16