PBFデータをGeoJSONとMBTilesに変換する方法
はじめに
以前の記事で、PBF(Protocolbuffer Binary Format)形式のデータをPostGISにインポートし、QGISで表示する方法を解説しました。今回はその続編として、PBFデータをGeoJSON形式とMBTiles形式に変換する手順を紹介します。
この手法では、ローカル環境でのデータ確認やWeb地図でのタイル配信を見据えた準備として有用です。今後の記事では、このMBTiles形式を活用してWeb(ブラウザ)地図として表示する方法についても紹介していきたいと思います。
本記事ではMac環境を前提に説明しますが、Windows環境での注意点も各セクションで補足します。
必要なツール
以下のツールを事前に準備してください:
• osmium-tool:PBFデータのフィルタリングや変換に使用
• tippecanoe:GeoJSONデータをMBTilesに変換するツール
注意:各ツールのインストール方法は公式サイトやパッケージマネージャ(Homebrewなど)をご参照ください。
手順概要
- PBFデータから必要な情報を抽出(例: 道路データ)。
- 抽出したデータをGeoJSONに変換。
- GeoJSONをMBTilesに変換。
以下、各ステップについて詳細に解説します。
1. PBFデータから必要なデータを抽出
まず、osmium-tool を使ってPBFデータをフィルタリングし、必要なデータだけを抽出します。ここでは、例として道路データ(highway タグ)を抽出します。
コマンド例(Mac)
osmium tags-filter input.osm.pbf -o roads.osm.pbf w/highway
- input.osm.pbf:元のPBFデータファイル。
- roads.osm.pbf:抽出結果(道路データ)のPBFファイル。
- w/highway:highway タグを持つウェイ(ライン)データを抽出。
nodeの場合は
n/highway
等適宜フィルタしたいものに合わせて変更ください。
Windowsの場合の補足
-
コマンドのファイルパスを絶対パス形式 (C:\path\to) またはスラッシュ形式 (C:/path/to) で指定してください。
-
WSL(Windows Subsystem for Linux)を使用する場合、以下のようにパスを記述します:
osmium tags-filter /mnt/c/path/to/input.osm.pbf -o /mnt/c/path/to/roads.osm.pbf w/highway
2. PBFデータをGeoJSONに変換
次に、osmium export を使用して、PBFデータをGeoJSON形式に変換します。
コマンド例(Mac)
osmium export roads.osm.pbf -o roads.json
- roads.osm.pbf:抽出済みのPBFデータ。
- roads.json:変換後のGeoJSONデータ。
GeoJSON形式は、軽量なデータ構造で多くのGISツールやWeb地図ライブラリ(例: MapLibre、Leafletなど)で利用できます。
PBFを直接変換することも可能ですが、今回は軽量な中間ファイルを介してデータを途中で確認、加工することも想定してGeojsonを経由しています。
Windowsの場合の補足
ファイルパスの指定に注意してください。WSLを使う場合は次のように記述します:
osmium export /mnt/c/path/to/roads.osm.pbf -o /mnt/c/path/to/roads.json
3. GeoJSONをMBTiles形式に変換
最後に、tippecanoe を使用してGeoJSONをMBTiles形式に変換します。
コマンド例(Mac)
tippecanoe -o roads.mbtiles --minimum-zoom=0 --maximum-zoom=14 roads.json
- roads.json:GeoJSON形式のデータ。
- roads.mbtiles:出力されるMBTilesファイル。
- --minimum-zoom と --maximum-zoom:生成するタイルのズームレベルを指定。
データ量が多い場合の対処策
大量のデータを処理する際、tippecanoe で失敗することがあります。以下のオプションを使用すると、タイル生成時にデータ量を間引いて処理が可能です:
- フィーチャをランダムに間引く:
--drop-fraction-as-needed
- 密集している部分を優先的に間引く:
--drop-densest-as-needed
- フィーチャの削減率を指定(例: 50%削減)
--drop-rate=0.5
例:
tippecanoe -o roads.mbtiles --minimum-zoom=0 --maximum-zoom=14 --drop-densest-as-needed roads.json
Windowsでのツールインストールについて
- osmium-tool
- Windows用のネイティブバイナリは提供されていないため、WSLまたはDockerを使用することを推奨します。
- WSL環境でUbuntuをインストールし、以下を実行してosmium-toolをセットアップ:
sudo apt update
sudo apt install osmium-tool
- tippecanoe
Windowsでもソースコードをビルドして使用可能ですが、手間がかかるためWSLでインストールするのがおすすめです:
sudo apt install tippecanoe
WSL内でのファイルパス指定
WindowsのファイルをWSL上で操作する場合、以下のように指定します:
/mnt/c/path/to/input.osm.pbf
まとめ
PBFから必要なデータを抽出:
osmium tags-filter input.osm.pbf -o roads.osm.pbf w/highway
GeoJSONに変換:
osmium export roads.osm.pbf -o roads.json
MBTilesに変換:
tippecanoe -o roads.mbtiles --minimum-zoom=0 --maximum-zoom=14 roads.json
これで、PBFデータをGeoJSONやMBTiles形式に変換する手順が完了しました。今後の記事では、生成したMBTilesファイルを使ってWeb地図としての配信方法も解説してみたいと思います。
この手順が少しでも参考になれば幸いです。
Discussion