はじめに
動機
法務省登記所備付地図データをウェブ地図で見るためにベクトルタイルにしたかったのでやり方をメモしておきます。
G空間情報センターから自分でダウンロードしたデータ(GeoJSON又はSHP形式)をベクトルタイルに変換しました。
環境
- Raspberry Pi 400 (ベクトルタイル変換ツールtippecanoeが私のWindows PCで上手く使えないため)
- Raspberry Pi OS
- unvt/equinox をインストール済み (こちらご参照ください → https://github.com/unvt/equinox )
手順
データダウンロード
G空間情報センターからGeoJSON形式かshapeファイル形式のデータをダウンロードしてきます。このフォーマットは公共座標系のものしかありませんので注意しましょう。
ここからダウンロードしてくるデータは緯度経度で座標が格納されているので後続の処理も簡単になります。(投影変換については考えなくてよい。)
保存してきたデータを作業フォルダに入れます。0_src というフォルダに入れておきます。
コマンド実行
bashで以下のコマンドを走らせます。以下はGeoJSONファイルを使っている例ですが、シェープファイルの場合は最初のgeojsonをshpにします。
<説明>
gdal(ogr2ogr)を使って、0_srcに入れたファイルをGeoJSON Sequenceとして標準出力する。
それをパイプでベクトルタイル変換ツールtippecanoeに渡している。
for f in 0_src/*geojson; do ogr2ogr -f GeoJSONSeq -lco RS=YES /vsistdout/ ${f};done | tippecanoe -o output.pmtiles -Z10 -z15 --no-feature-limit --no-tile-size-limit -l fude
すると、output.pmtilesというファイルが出来てきます。
- zxy形式でほしい場合は-oオプションを-eにしte.pmtilesをとりましょう。zxyのときは--no-tile-compressionオプションもつけましょう。
- ズームレベルは-Z10と-z15を変更すると調整できます。(今は10-15)
- レイヤ名はfudeというレイヤです。
- 私は数個のファイル出試しましたが、入力ファイルが多いときは処理が重くなるので工夫が必要かもしれません。
- ソースフォルダに入れたデータの座標値は緯度経度で格納されています。座標が違うデータが入っていると上手くいきませんので気をつけましょう(別途処理が必要)。
まとめ
法務省登記所備付地図データをベクトルタイルにする方法をメモしました。結構すぐに変換出来るので便利です。
GeoJSONで50MB近いデータで試したのですが、ベクトルタイルにする10MB以下でした。
おまけ
テンプレートも作りました
https://github.com/ubukawa/fude-template
参考ページ