はじめに
tippecanoe (felt/tippecanoe)の v2.17 から PMTilesがサポートされたというつぶやきをみました。
私はまだPMTiles初心者ですが、最近注目の技術ということもあり、簡単にPMtilesを作ってみる実験をしてみました。
Docker環境ですぐにできます。unvt/nanban と それに含まれる unvt/kata と felt/tippecanoe を使うと簡単です。
環境
- Windows 10
- Docker
- unvt/nanban イメージを使います
- unvt/kata v1.0.4
- tippecanoe v2.17.0
- gdal(ogr2ogr) GDAL 3.4.1, released 2021/12/27
- unvt/nanban イメージを使います
手順
Docker コンテナ起動とデータの準備
今回は、もともとGeoJSON形式でインターネット上にあるファイル2つと、ダウンロードしてきた海岸線のシェープファイルを使います。
シェープファイルはNaturalEarthの50mスケールの海岸線をダウンロードしてsrcフォルダに入れておいてから、gdalでGeoJSONに変換します。
Dockerのunvt/nanbanイメージを起動して、シェープファイルをGeoJSONに変換するために以下のようにコマンドを実行します。(拡張子をgeojsonsにするとGeoJSONseq形式になりますが、unvt/kataがGeoJSONseqのファイルをよまないので今回はgeojsonに出力します。)
docker run -it --rm -v ${PWD}:/data unvt/nanban
cd /data
mkdir src
# srcフォルダにデータを入れておく
ogr2ogr coastline.geojson src/ne_50m_coastline.shp
これで使うデータが以下の通りで準備できました。
- 変換したGeoJSONはローカルに: coastline.geojson
- インターネット上のGeoJSON(1)- セネガル: https://geoportal.un.org/arcgis/sharing/rest/content/items/3b628266c28345ecbcac152255eba4be/data
- インターネット上のGeoJSON(2)- コンゴ民主共和国: https://geoportal.un.org/arcgis/sharing/rest/content/items/2b37e02f41f942e69892b95ea49b56f0/data
ソース、レイヤ、ズームレベルを整理してYAMLファイルにする
YAMLファイルに書いた通りですが、ソース名(キーというか、これがベクトルタイルのレイヤ名になる)、URL、ズームレベルなどを決めます。以下のように整理しました。本当はsalb-senとsalb-codは同じsalbというレイヤにしたかったのですが、キーが同じだとエラーになるのでできませんでした。今後のkataの改良ポイントですね。
coastline: #this will be a layer name
source: ./coastline.geojson
minzoom: 0
maxzoom: 5
salb-sen:
source: https://geoportal.un.org/arcgis/sharing/rest/content/items/3b628266c28345ecbcac152255eba4be/data
properties:
country: SEN
minzoom: 0
maxzoom: 5
salb-cod:
source: https://geoportal.un.org/arcgis/sharing/rest/content/items/2b37e02f41f942e69892b95ea49b56f0/data
properties:
country: COD
minzoom: 0
maxzoom: 5
出力をテスト
作ったYAMLファイルを使ってkataのフィルタ機能を試します。まずは、stdoutのまま、画面で確認します。
kata filter kata.yml
出力をtippecanoeにパイプする
今度は出力をベクトルタイル作成ツールのtippecanoeにつなぎます。TippecanoeでPMTilesを作るためには、-o オプションで拡張子をmbtilesの代わりにpmtilesにすればよいみたいです。試しに圧縮なしとありで出力してみました。
kata filter kata.yml | tippecanoe -o test.pmtiles --no-tile-compression --no-feature-limit --no-tile-size-limit
kata filter kata.yml | tippecanoe -o test2.pmtiles --no-feature-limit --no-tile-size-limit
若干ファイルサイズが違いますが、PMtilesができました。
Protomapsのページでプレビューしてみる
作成したPMtilesをドラッグ、ドロップするだけでプレビューできるそうなのでためします。
https://protomaps.github.io/PMTiles/ のページでプレビューしてみます。
まとめ
すごく簡単に、PMtilesの作り方をまとめました。
Dockerが使えれば、すぐにできます。
参考ページ