共通プロトコルの用例 — STAC・GeoParquet・PMTiles が開く横断参照
地図データを横断的に参照するための共通プロトコル(STAC・GeoParquet・COG・PMTiles)のユースケースを、コード例を交えて紹介します。
2026-09-11
なぜ共通プロトコルが必要か
地理空間データはこれまで、ポータル・専用 API・FTP という「それぞれ違う入り口」で配布されてきました。AI エージェントが自律的にデータを調達するには、入り口の差異を吸収する共通の読み口が必要です。
主要な共通プロトコル
STAC(SpatioTemporal Asset Catalog)
衛星データや地図データに統一ラベルを付与し、横断検索を可能にする規格です。
# レジストリからカタログを検索する例
stac search --catalog https://example.org/collection.json \
--bbox 139.0,35.0,140.0,36.0
Python での利用:
import pystac_client
# STAC カタログを横断検索
catalog = pystac_client.Client.open("https://example.org/catalog.json")
items = catalog.search(
bbox=[139.0, 35.0, 140.0, 36.0],
datetime="2026-01-01/2026-09-11"
)
for item in items.items():
print(item.id, item.datetime)
GeoParquet
地理情報を Parquet 列指向形式で表現し、高速な空間フィルタを可能にします。
import duckdb
duckdb.sql("""
SELECT * FROM 'data.parquet'
WHERE ST_Within(
geom,
ST_GeomFromText('POLYGON((139 35,139 36,140 36,140 35,139 35))')
)
""")
GeoParquet の特徴:
| 特徴 | 効果 |
|---|---|
| 列指向 | 必要なカラムだけ効率よく読める |
| 空間インデックス | 高速な空間フィルタ |
| 1 ファイル | サーバー運用不要 |
PMTiles
1 ファイルで済むタイルアーカイブ形式。サーバー運用なしに静的公開できます。
PMTiles の特徴:
- Byte-Range Request で部分読み込み
- HTTP サーバー1台で公開可能
- GitHub Pages でも配信可能
COG(Cloud Optimized GeoTIFF)
GeoTIFF をクラウドストレージ向けに最適化した形式。ベクターデータではなくラスターデータに使います。
COG の特徴:
- HTTP レンジリクエストで部分読み込み
- ビジュアライザにそのまま配信可能
- 空間範囲クエリで特定部分だけ取得
各プロトコルの使い分け
| 用途 | 推奨形式 |
|---|---|
| ポイント・ライン・ポリゴン(ベクタ) | GeoParquet |
| タイル(ラスター表示) | PMTiles / COG |
| 横断検索・カタログ | STAC |
| ラスターの高速参照 | COG |
Portolan との関係
Portolan 自体は新形式ではなく、これらの標準を組み合わせたベストプラクティスです。AGENTS.md が「どのプロトコルを使えば速いか」を教え、AI エージェントが最初から意図通りに使えるようにします。
# AGENTS.md の例
## 推奨プロトコル
- ベクターデータ: GeoParquet(場所フィルタにこの形式を使うと速い)
- タイル: PMTiles(ビューワにそのまま配信)
- ラスター: COG(部分取得可能)
用例まとめ
- 横断検索: STAC で複数組織のカタログを検索
- 高速フィルタ: GeoParquet で空間フィルタを実行
- 軽量配信: PMTiles でビューワに直接配信
- AI 支援: AGENTS.md で正しいクエリパターンを事前学習
portolan
├── STAC カタログ → 横断検索
├── GeoParquet → 高速フィルタ
├── PMTiles → タイル配信
├── COG → ラスター参照
└── AGENTS.md → エージェントへの指引