OpenMapTilesのファイル
今回は、OpenMapTilesのホームディレクトリに収容されるファイルを確認します。
OpenMapTilesのホームディレクトリ直下のファイル
OpenMapTilesのホームディレクトリ直下に収容されるファイルは以下の6つです。(説明用の.mdファイルを除く)
- quickstart.sh
- Makefile
- docker-compose.yml(docker-compose-MINGW64.yml)
- .env
- .env_postgres
- openmaptiles.yaml
以降に、各ファイルの内容や役割を確認していきます。
quickstart.sh
quickstat.shの先頭部分を確認してみましょう。
Usageの記載から以下のことがわかります。
- 引数に–emptyオプションを付与するとpreloadイメージを使用しない
- 第一引数でエリアを指定(デフォルトはアルバニア)
- 第二引数でダウンロード先を指定(3種類、デフォルトはgeofabrik)
以下にquickstart.shの抜粋(203行目あたり)を示しますが、多くがmakeコマンドにて実行されており、後述のMakefile(makeのデフォルトファイル)に実際の処理が記述されていることがわかります。
Makefile
次に、Makefileの内容を確認しましょう。
多くのコマンドがあるようです。
試しに、makeコマンドの引数に”list-geofabrik”を指定してGeofabrikデータの一覧を確認してみましょう。
”docker-compose run”にて、openmaptiles-toolsイメージが起動されていることがわかります。また、実行終了時にコンテナの削除が指定(–rm)されています。
GeofabrikとはOSMデータの無償ダウンロードサービスを提供するドイツの会社です。以下に、OSMデータ(osm.pbf)のダウンロードページを示します。
docker-compose.yml
openmaptilesのDockerコンポーネントはdocker-composeを使って起動しています。
このファイルには以下のDockerコンポーネントの起動情報が記載されています。
- postgres
- import-data
- openmaptiles-tools
- generate-changed-vectortiles
- generate-vectortiles
- postserve
以下にdocker-compose.ymlの抜粋を示します。
環境ファイルとして、.envファイルや.env-postgresファイルが指定(下図の黄色枠部分)されていることがわかります。
.env、.env-postgres
.envおよび.env-postgresの各ファイルは、変換時のパラメータやPostgreSQLのアカウント情報などを指定するファイルです。
.envファイルを確認すると、以下のようなパラメータを指定しています。
- レイヤ定義ファイル(後述するopenmaptiles.yaml)
- ズームレベル(0から7まで)
- 作成するmbtilesのファイル名(tiles.mbtiles)
次に、.env-postgresファイルを確認します。
このファイルは8行しかありませんが、PostgreSQLのデータベース、ユーザー、パスワードが書かれています。
黄色枠内には、”.envと同期してください”と書かれていますが、この理由は、Makefileには.envファイルを、docker-compose.ymlには.env-postgresファイルをインポートして設定情報に利用しているためと思われます。
openmaptiles.yaml
このファイルは、タイルに関する雑多な情報を定義したファイルのようです。
以下に抜粋を示しますが、タイルのレイヤ情報や属性の言語情報、投影法の情報(SRID=900913)などが書かれています。
また、このファイルはMakefileにて変数”TILESET_FILE”として定義されており、openmaptioles-toolsの引数として使用されています。
ファイル間の関係
ファイル間の関係を図で整理すると、以下のようになります。
まとめ
ここまで、openmaptilesのホームディレクトリ直下に収容されるファイルの内容を確認しました。
基本的には、MakefileにていくつかのDockerコンテナを起動する仕組みで、アルバニアの地図作成で使用したquickstart.shは、この仕組みを1つのシェルスクリプトで実行するためのものです。
シェルスクリプト→makeファイル→Dockerコンテナという、ちょっとカオスな感じの世界ですが、OSSを組み合わせて利用者の求める機能を実現するための一つの答えなんだなと感じた次第です。
次回は、postgis-preloadedコンテナに収容されるデータを確認してみようと思います。