JAXA Earth API

JAXA Earth APIは宇宙航空研究開発機構(JAXA)が無償・オープンソースで公開している地球観測衛星データの配信サービスである。Python及びJavaScriptのApplication Programming Interface (API)を通じて、プログラミング環境から直接地球観測衛星データを利用することが可能である。2022年6月に公開された。

 データセット 
JAXAが無償で公開している地球観測衛星データのうち、主要なものに対応している。

 だいちの数値表層モデル（地形データ）
 だいち2号等による森林・非森林マップ
 衛星全球降水マップ（GSMaP）【日々更新中】
 しきさいによる地表面温度、植生指数【日々更新中】
 しずくによる海面水温、土壌水分量【日々更新中】

 データ配信の仕組み 
クラウドストレージ上で、Cloud Optimized GeoTIFF (COG)とSpatioTemporal Asset Catalogs (STAC)に準拠した静的ファイルを公開するだけの仕組みとしていることが特徴である。クライアント端末上で実行されるAPIで、それらのファイルをHTTPにより直接取得することで必要なデータを取得する仕組みとなっており、サーバー側では動的な処理を不要としている。クライアント側で実行するAPIについては、Python及びJavaScriptに対応したモジュールが開発されている。

WMS、WMTSなどの従来の衛星データ配信においては、サーバー側で画像化までを行うことが主流であった。クライアント側ではPNG等の画像としてデータを受けとるため、基本的には閲覧の用途がメインとなる。値の取得用には別途サーバー側で値を返すための実装を必要とする。

一方でJAXA Earth APIの方式では、COGのデータを直接配信するため、2次元配列としての数値データをクライアント側で直接扱うことが可能である。APIに画像生成や簡易統計処理の機能が実装されており、従来サーバー側で実行されていた多くの処理がクライアント側で実行される構成となっている。サーバーへのアクセス集中による処理待ちが無くなることによる高速化と、サーバー実装の簡素化（サーバーレス）を両立している。

HTTP Range Requestsを用いてCOGファイルの必要なタイルの該当バイト範囲のみを通信するため、COGファイル全体をダウンロードする必要は無い。必要なタイルが複数存在する場合はHTTP Range Requestsの回数が増えるが、HTTP/2に対応したクラウドストレージを用いることにより、多重化した通信が行われて、データ取得の高速化が可能となっている。

さらに、クライアント側ではCOGファイル全体をダウンロードせず、必要な緯度経度範囲・解像度のデータのみを取り扱うこととなるため、数億ピクセルにもなる大容量の地球観測衛星データの処理に必要な高い処理性能は不要となり、ブラウザのJavaScriptでも直接画像化の処理や統計処理を行えるようになっている。

 SpatioTemporal Asset Catalogs (STAC) 
SpatioTemporal Asset Catalogs (STAC)はJSONフォーマットのカタログデータである。JAXA Earth APIにおいては、データセットごとに、日時・解像度・経度・緯度の階層構造のSTACを静的ファイルとしてクラウドストレージ上に公開している。クライアント側ではAPIに実装された機能により、取得したいデータの日時、解像度、緯度経度に該当するSTACを探索し、必要なCOGファイルのURLを特定することが可能となっている。COGファイル内に格納されたデジタル値（DN値：0~255のようなビット値）を観測された実際の物理量に変換するための変換係数や、物理量の単位などもSTACの中に記録されている。

 Cloud Optimized GeoTIFF (COG) 
Cloud Optimized GeoTIFF (COG)は、ラスターデータのオンライン配信に適したファイル構造を持ったGeoTIFFファイルである。ファイル内の各タイルのデータ格納バイト位置や座標情報を含むImage File Directory (IFD)がファイル先頭に記録されている。また、IFD以降には256px四方などにタイル化されたラスターデータが格納されている。さらにオーバービューとして1/2、1/4、1/8、…サイズの縮小された画像もタイル化されて格納されている。このファイル構造により、最初にIFDのみをHTTP Range Requestsを用いて取得し、必要な緯度経度・解像度のタイルのバイト位置を計算後、該当するタイルのバイトデータのみを再度HTTP Range Requestsを用いて取得することで、数10MB～数100MBにもなるCOGファイル全部をダウンロードする必要はなく、数MB程度の通信量で済ますことが可能となる。

近年COGに対応した地球観測衛星データ配信が増えており、2022年時点において、Cloud Optimizedなラスターデータ配信ではCOGがデファクトスタンダードとなっている。

 JAXA Earth API for Python 
JAXA Earth APIのCOG/STACデータの取得及び簡易処理をクライアント側のPython環境で実行するためのモジュールである。QGISのPython実行環境でも実行することが可能である。

 JAXA Earth API for JavaScript 
JAXA Earth APIのCOG/STACデータの取得及び簡易処理をクライアント側のブラウザのJavaScript環境で実行するためのモジュールである。衛星データを取り扱うウェブアプリを開発することが可能である。

 QGIS Plugin 
QGISのJAXA Earth API Pluginは、オープンソース化されたPython APIを用いて、有志によって自主開発されたQGISプラグインである。QGIS上で数クリックでJAXA Earth APIのデータを取り込むことが可能である。JAXA Earth APIの公開（2022/6/9）からわずか2週間で開発し公開された（2022/6/23）。

 脚注 

Category:宇宙機関
Category:JAXA
Category:日本の宇宙開発
Category:API