SpatioTemporal Asset Catalog (STAC) による衛星データの効率的な発見とアクセス:気候変動研究への応用
はじめに
気候変動研究において、宇宙からの地球観測データは不可欠な情報源です。しかし、近年、衛星データの取得頻度や解像度が向上し、データ量は爆発的に増加しています。この膨大なデータの中から、特定の地域、時間、センサー、データ処理レベルのデータセットを効率的に見つけ出し、アクセスすることは、多くの研究者にとって大きな課題となっています。特に若手研究者が最新の研究に取り組む上で、データ探索と準備のプロセスに多くの時間を費やすことは、研究の効率を低下させる要因の一つです。
このような課題に対処するために登場したのが、SpatioTemporal Asset Catalog (STAC) と呼ばれるオープンな仕様です。STACは、時空間的にインデックス化されたアセット(ファイルやデータストア内の要素)をカタログ化するための標準フォーマットを提供します。これにより、異なるデータプロバイダーやプラットフォームに分散している衛星データやその他の地理空間データを、共通の方法で検索・アクセスすることが可能になります。
本稿では、気候変動研究における衛星データ利用の文脈で、STACの基本的な概念、その利点、そして実践的な活用方法について解説します。
SpatioTemporal Asset Catalog (STAC) とは
STACは、主にリモートセンシングデータなどの時空間データを扱うために設計されたメタデータカタログ仕様です。データそのものではなく、データが存在する場所(URIなど)へのリンクや、データの属性情報(空間範囲、時間範囲、センサー、処理レベルなど)を標準的な形式で記述します。
STACの基本的な構造は以下の3つの要素で構成されます。
- Catalog: STACツリーのルートまたはサブセクションを表すコンテナです。他のCatalogやCollection、Itemを階層的に整理します。
- Collection: 特定のテーマや特性を持つItemの集合です。データセット全体や、特定の衛星ミッション、処理レベルのデータ群などに対応します。Collectionレベルで共通のメタデータ(概要、ライセンス、Extentなど)を定義できます。
- Item: STACの最小単位で、単一の時空間的なアセット(例えば、ある日付のある地域の衛星画像ファイルや、特定の処理済みデータプロダクト)を表します。各Itemは、時間範囲、空間範囲(バウンディングボックスまたはジオメトリ)、そしてアセット自体へのリンク(
assets
フィールド)を持ちます。properties
フィールドには、雲量やセンサー固有の情報など、Item固有の追加メタデータを含めることができます。
これらの要素は、多くの場合、JSON形式のファイルとして表現され、HTTPプロトコルを通じてアクセス可能な静的なファイルとして提供されるか、またはSTAC APIを通じて動的に検索可能なサービスとして提供されます。
気候変動研究におけるSTACの利点
STACを導入することで、気候変動研究における衛星データ利用に以下のような利点が生まれます。
1. 効率的なデータ発見と検索
STACカタログやSTAC APIは、時間、空間、各種属性(センサー名、処理レベル、雲量など)に基づいてデータを検索するための標準的なインターフェースを提供します。これにより、研究者は目的のデータを探す手間を大幅に削減できます。例えば、「2020年の夏にアマゾン熱帯雨林の特定地域で取得された、雲量10%以下のSentinel-2レベル2Aデータ」といった検索クエリを、統一された方法で記述し、様々なSTAC対応カタログに対して実行することが可能です。
2. 異なるデータソースの統合アクセス
様々な機関(NASA, ESA, JAXAなど)や商業プロバイダー、クラウドプラットフォーム(Microsoft Planetary Computer, AWS Open Dataなど)がSTAC形式でデータカタログを公開しています。これにより、複数のソースに分散しているデータセットを、同じツールやワークフローで横断的に検索・利用しやすくなります。これは、複数の衛星データを組み合わせて気候システムを解析する際に特に有効です。
3. クラウド環境での大規模解析との親和性
STACは、クラウドストレージに置かれた大規模な地理空間データ(特にCloud Optimized GeoTIFF (COG) やZarr形式のデータ)との連携を強く意識して設計されています。STAC Itemのassets
フィールドは、データのURI(例: s3://...
, https://...
)を直接指し示すため、データをローカルにダウンロードすることなく、クラウド上で計算リソースから直接データにアクセスし、解析を行うクラウドネイティブなワークフローを容易に構築できます。これは、大規模な時系列解析や地域解析を行う上で計算効率を劇的に向上させます。
4. 解析コードの再現性向上
STAC Itemは、特定のデータアセットを一意に参照するための安定したIDとメタデータを提供します。解析スクリプトの中でSTAC Item IDやそのアセットURIを直接参照することで、どのようなデータが解析に使用されたかを明確に記録できます。これにより、解析結果の再現性を確保しやすくなり、共同研究や研究成果の共有において重要な役割を果たします。
実践的なSTACの活用方法
若手研究者がSTACを自身の研究に取り入れるための実践的なステップをいくつか紹介します。
1. STAC対応データカタログの探索
まず、研究テーマに関連する衛星データがSTAC形式で公開されているかを確認します。主要なSTACカタログとしては以下のようなものがあります。
- Microsoft Planetary Computer Data Catalog
- NASA Earthdata Cloud (Common Metadata Repository - STAC endpoint)
- Element 84's STAC Catalog
- Google Earth Engine (GEE自体はSTACとは異なるAPIですが、多くのデータがSTAC形式に変換されつつあります)
これらのカタログは、ウェブブラウザ上でデータを探索できるSTACブラウザを提供している場合が多いです。例えば、https://planetarycomputer.microsoft.com/catalog などで、利用可能なデータセット(Collection)を確認し、時間・空間フィルターを使ってデータを絞り込むことができます。
2. PythonによるプログラムからのSTACアクセス
STACはAPI仕様も定義しており、プログラムからSTACカタログに対して検索クエリを発行し、結果を取得することが可能です。Pythonエコシステムでは、pystac-client
ライブラリが広く利用されています。
pystac-client
を使うと、以下のように特定の条件に合うSTAC Itemを検索できます。
from pystac_client import Client
from shapely.geometry import Polygon
import datetime
# STAC API エンドポイントを指定
catalog_url = "https://planetarycomputer.microsoft.com/api/stac/v1"
client = Client.open(catalog_url)
# 検索条件を定義
# 例: 2020年1月に関東地方(簡略ポリゴン)で取得されたSentinel-2レベル2Aデータ
area_of_interest = Polygon([(139.5, 35.3), (140.5, 35.3), (140.5, 36.3), (139.5, 36.3), (139.5, 35.3)])
time_range = "2020-01-01T00:00:00Z/2020-01-31T23:59:59Z"
collections = ["sentinel-2-l2a"] # 利用したいコレクションIDを指定
# 雲量によるフィルタリングなど、Itemのpropertiesに対するフィルタリングも可能
# item_search_fields = {
# "query": {
# "eo:cloud_cover": {"lt": 10}
# }
# }
# 検索実行
search = client.search(
collections=collections,
intersects=area_of_interest,
datetime=time_range,
# **item_search_fields # 必要に応じてコメント解除
)
# 検索結果(STAC Itemのリスト)を取得
items = search.get_all_items()
print(f"Found {len(items)} items.")
# 各アイテムの情報にアクセス
for item in items:
print(f"Item ID: {item.id}")
print(f"Datetime: {item.datetime}")
# アセット(データファイル)へのリンクにアクセス
# 例: COGファイルへのURLを取得
if 'visual' in item.assets: # 'visual'などのキーはデータセットによる
print(f"Visual asset URL: {item.assets['visual'].href}")
elif 'nir' in item.assets and 'red' in item.assets: # NIRとRedバンドを使ってNDVI計算などに
print(f"NIR asset URL: {item.assets['nir'].href}")
print(f"Red asset URL: {item.assets['red'].href}")
このコード例は、特定の条件に合うSTAC Itemを検索し、そのIDやデータファイルへのURLを取得する基本的な流れを示しています。取得したURLを使えば、rasterio
や xarray
といったライブラリと組み合わせて、データを直接読み込み、解析に進むことができます。特に、データがCOG形式であれば、必要な領域やバンドだけを効率的に読み込むことが可能です。
3. ARDやCOGデータとの連携
Analysis Ready Data (ARD) や Cloud Optimized GeoTIFF (COG) は、データ利用を容易にするためのデータ形式です。STACはこれらの形式で提供されるデータとの相性が非常に良く、STACカタログで発見したARD/COGデータを、特別な前処理なしに直接解析ツールで利用することができます。STAC Itemのメタデータには、これらのデータ形式や空間参照系、解像度などの情報が含まれているため、解析ワークフローをスムーズに構築できます。
今後の展望と研究者への期待
STACエコシステムは現在も活発に発展しており、より多くのデータプロバイダーがSTAC対応を進めています。また、STACをバックエンドとして利用する、より高レベルなデータ探索・処理プラットフォーム(例: pystac-clientの上に構築されたstackstac
などのライブラリ)も登場しており、衛星データ解析の利便性はさらに向上していくと予想されます。
若手研究者の皆さんには、自身の研究テーマに関連するデータがSTACで提供されているかを確認し、pystac-client
のようなツールを使ってプログラムからデータにアクセスする練習を始めることをお勧めします。STACを使いこなすことは、爆発的に増加する地球観測データの中から必要な情報へ迅速にたどり着き、より高度で効率的な気候変動研究を進める上で、非常に強力な武器となります。
まとめ
STAC (SpatioTemporal Asset Catalog) は、膨大な衛星データを効率的に発見・アクセスするための重要な標準仕様です。気候変動研究において、STACはデータ検索の効率化、異種データソースの統合、クラウド環境での大規模解析の促進、そして解析の再現性向上といった多くの利点をもたらします。pystac-client
のようなツールを活用することで、研究者はプログラムからSTACカタログにアクセスし、必要なデータを迅速に取得して解析ワークフローに組み込むことができます。STACの活用は、現代の地球観測データ駆動型研究における必須スキルの一つとなりつつあり、若手研究者が研究を加速させるための鍵となるでしょう。