JAXA Earth API for Python - 衛星データを手軽に扱えるAPIを調べてみた
JAXAが地球観測衛星データを簡単に扱えるPython APIを公開していたので調べてみた。衛星データというと専門知識が必要そうなイメージがあったけど、このAPIを使えばセンサーの仕様や解像度を意識せずにデータを取得・処理できる。
JAXA Earth APIとは
JAXAが保有する地球観測データを活用するためのサービス。Pythonパッケージとして提供されており、衛星画像の取得からマスキング、差分計算、統計処理、可視化まで一通りの機能が揃っている。
公式ドキュメント: https://data.earth.jaxa.jp/api/python/v0.1.5/en/
インストール
JAXAのリポジトリから直接インストールする。
pip install --extra-index-url https://data.earth.jaxa.jp/api/python/repository/ jaxa-earth
バージョン指定する場合:
pip install --extra-index-url https://data.earth.jaxa.jp/api/python/repository/ jaxa-earth==0.1.5
依存パッケージの matplotlib と requests は自動でインストールされる。
主要なクラス
APIは4つの主要クラスで構成されている。
| クラス | 用途 |
|---|---|
ImageCollectionList | 利用可能な衛星画像コレクション一覧を取得・検索 |
ImageCollection | 日付・解像度・地域・バンドで画像をフィルタリング |
FeatureCollection | GeoJSON形式の地理データを読み込み・抽出 |
ImageProcess | マスキング・差分計算・統計量算出・可視化 |
基本的な流れは「ImageCollection でデータを取得 → ImageProcess で処理」という2段階のアプローチ。
基本的な使い方
画像の取得と表示
from jaxa.earth import je
# 画像コレクションを取得してフィルタリング
ic = je.ImageCollection("GCOM-C.SGLI.L2.LAND.RSRF")
ic.filter_date("2021-12-01", "2021-12-31")
ic.filter_resolution(1000)
ic.filter_bounds([130, 30, 145, 45]) # 日本付近
images = ic.get_images()
# 画像表示
ip = je.ImageProcess(images)
ip.show_images()
各メソッドはチェーン可能な設計で、filter_date() → filter_resolution() → filter_bounds() の順序で段階的にパラメータを設定できる。
地理的領域の指定方法
バウンディングボックス方式:
経度・緯度の4値で矩形領域を定義する。
ic.filter_bounds([110, 20, 160, 50])
GeoJSON方式:
より複雑な地形に対応する場合は、GeoJSONファイルを読み込んで使用する。
fc = je.FeatureCollection()
fc.read("path/to/area.geojson")
ic.filter_bounds(fc)
マスキング処理
3つのパターンがある:
- 範囲抽出: 標高データで降雨量をマスク
- 値一致抽出: 土地被覆分類で都市部のみを抽出
- ビット抽出: マスクバンドで有効ピクセルを判定
差分画像・時系列解析
異なる時期のNDVI(植生指数)を比較したり、複数日のデータを統合したり、空間統計量を時系列で表示する応用も可能。
ip.diff_images() # 差分計算
ip.calc_spatial_stats() # 空間統計
ip.calc_temporal_stats() # 時系列統計
Claude Desktop連携(MCPサーバー)
Claude Desktopから直接JAXA衛星データを操作できるMCPサーバー機能も提供されている。
設定手順
- 仮想環境を作成してパッケージをインストール
mcp_server.pyを配置- Claude Desktopの設定に追加:
{
"mcpServers": {
"jaxa_api_tools": {
"command": "C:\\path\\to\\venv\\Scripts\\python",
"args": ["C:\\path\\to\\mcp_server.py"]
}
}
}
利用可能な関数
search_collections_id- コレクション情報取得show_images- 衛星画像表示calc_spatial_stats- 空間統計計算show_spatial_stats- 統計結果画像表示
利用可能なデータセット
- Land Cover Class(2019年)
- GCOM-C SGLI RGB画像(2021年12月)
- Forest Non Forest(2017〜2020年)
- JASMES 日本エリア(2020〜2022年9月)
全データセット一覧は https://data.earth.jaxa.jp/en/datasets/ で確認できる。
データ形式について
- COG(Cloud Optimized GeoTIFF): HTTPレンジリクエストで必要な部分だけ取得可能な形式
- STAC(Spatio Temporal Asset Catalog): COGにアクセスするための階層的JSONカタログ
これらの形式により、大容量の衛星データを効率的に扱える。
活用方法
- Python単体での利用
- QGISとの連携
- Google Colabでの実行
- Claude Desktop(MCPサーバー経由)
個人的にはMCPサーバー経由でClaude Desktopから使えるのが面白いと思った。自然言語で「日本の植生データを見せて」みたいな指示ができるようになる。