技術 約4分で読めます

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

依存パッケージの matplotlibrequests は自動でインストールされる。

主要なクラス

APIは4つの主要クラスで構成されている。

クラス用途
ImageCollectionList利用可能な衛星画像コレクション一覧を取得・検索
ImageCollection日付・解像度・地域・バンドで画像をフィルタリング
FeatureCollectionGeoJSON形式の地理データを読み込み・抽出
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サーバー機能も提供されている。

設定手順

  1. 仮想環境を作成してパッケージをインストール
  2. mcp_server.py を配置
  3. 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から使えるのが面白いと思った。自然言語で「日本の植生データを見せて」みたいな指示ができるようになる。