JAXA Earth API
JAXA Earth APIは宇宙航空研究開発機構が無償・オープンソースで公開している地球観測衛星データの配信サービスである。Python及びJavaScriptのAPI (Application Programming Interface)が利用可能である。2022年6月に公開された。[1]
データ配信の仕組み
クラウドストレージ上で、Cloud Optimized GeoTIFF (COG)[2]とSpatioTemporal Asset Catalogs (STAC)[3]に準拠した静的ファイルを公開するだけの仕組みとしていることが特徴である。クライアント端末上で実行されるAPIで、それらのファイルをHTTPにより直接取得することで必要なデータを取得する仕組みとなっており、サーバー側では動的な処理を不要としている。クライアント側で実行するAPIについては、Python及びJavaScriptに対応したモジュールが開発されている。
衛星データの配信においては、従来、サーバー側で画像化までを行うことが主流であった。クライアント側ではPNG等の画像としてデータを受けとるため、基本的には目視閲覧用の用途に限られる。値の取得用には別途サーバー側で値を返すための実装を必要とする。
一方でJAXA Earth APIの方式では、COGのデータを直接配信するため、2次元配列としての数値データをクライアント側で直接扱うことが可能である。APIに画像生成や簡易統計処理の機能が実装されており、従来サーバー側で実行されていた多くの処理がクライアント側で実行される構成となっている。サーバーへのアクセス集中による処理待ちが無くなることによる高速化と、サーバー実装の簡素化を両立している。
HTTP Range Requestsを用いてCOGファイルの必要なタイルの該当バイト範囲のみを通信するため、COGファイル全体をダウンロードする必要は無い。必要なタイルが複数存在する場合はHTTP Range Requestsの回数が増えるが、HTTP/2に対応したクラウドストレージを用いることにより、多重化した通信が行われて、データ取得の高速化が可能となっている。
Cloud Optimized GeoTIFF (COG)
Cloud Optimized GeoTIFF (COG)は、ラスターデータのオンライン配信に適したファイル構造を持ったGeoTIFFファイルである。ファイル内の各タイルのデータ格納バイト位置や座標情報を含むImage File Directory (IFD)がファイル先頭に記録されている。また、IFD以降には256px四方などにタイル化されたラスターデータが格納されている。さらにオーバービューとして1/2、1/4、1/8、…サイズの縮小された画像もタイル化されて格納されている。[4]このファイル構造により、最初にIFDのみをHTTP Range Requestsを用いて取得し、必要な緯度経度・解像度のタイルのバイト位置を計算後、該当するタイルのバイトデータのみを再度HTTP Range Requestsを用いて取得することで、数10MB~数100MBにもなるCOGファイル全部をダウンロードする必要はなく、1MB以下程度の通信量で済ますことが可能となる。
SpatioTemporal Asset Catalogs (STAC)
SpatioTemporal Asset Catalogs (STAC)はJSONフォーマットのカタログデータである。
脚注
- ^ “JAXA Earth API”. data.earth.jaxa.jp. 2023年8月26日閲覧。
- ^ “Cloud Optimized GeoTIFF”. www.cogeo.org. 2023年8月26日閲覧。
- ^ “root.meta.title”. stacspec.org. 2023年8月26日閲覧。
- ^ “COG(Cloud Optimized Geotiff)とは?~メリット、適用データ、使い方~ Tellus v3.0から適用される新しいデータ形式に迫る!”. 宙畑. 2023年8月26日閲覧。