0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PBFデータをGeoJSONとMBTilesに変換する方法

Last updated at Posted at 2024-11-22

はじめに

以前の記事で、PBF(Protocolbuffer Binary Format)形式のデータをPostGISにインポートし、QGISで表示する方法を解説しました。今回はその続編として、PBFデータをGeoJSON形式とMBTiles形式に変換する手順を紹介します。
この手法では、ローカル環境でのデータ確認やWeb地図でのタイル配信を見据えた準備として有用です。今後の記事では、このMBTiles形式を活用してWeb(ブラウザ)地図として表示する方法についても紹介していきたいと思います。

本記事ではMac環境を前提に説明しますが、Windows環境での注意点も各セクションで補足します。

必要なツール

以下のツールを事前に準備してください:
• osmium-tool:PBFデータのフィルタリングや変換に使用
• tippecanoe:GeoJSONデータをMBTilesに変換するツール

注意:各ツールのインストール方法は公式サイトやパッケージマネージャ(Homebrewなど)をご参照ください。

手順概要

  1. PBFデータから必要な情報を抽出(例: 道路データ)。
  2. 抽出したデータをGeoJSONに変換。
  3. 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でのツールインストールについて

  1. osmium-tool
  • Windows用のネイティブバイナリは提供されていないため、WSLまたはDockerを使用することを推奨します。
  • WSL環境でUbuntuをインストールし、以下を実行してosmium-toolをセットアップ:
sudo apt update
sudo apt install osmium-tool
  1. 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地図としての配信方法も解説してみたいと思います。

この手順が少しでも参考になれば幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?