地上データ、ツール(API)の利用方法

はじめに

JupyterLabを使って地上データ、およびツールをAPIで利用する方法を紹介します。 対象のAPIは、地上データ一覧、ツール一覧に掲載されています。

地上データ一覧

ツール一覧

APIトークンの発行

APIを使用するためにはAPIトークンが必要です。

APIトークンの発行方法 を参照して、APIトークンを生成してください。

本記事においてサンプルコードを貼り付ける際はTOKEN("TOKENXXXXXXXXXXXXXXXXXX"と表示されている部分)に生成したAPIトークンを貼り付けてください。

requests モジュールのインストール

APIの呼び出しにrequestsモジュールを使用するため、JupyterLab で利用される Python を python3.7 以降に設定する必要があります。

こちらの記事にある「requests モジュールのインストール」を参照して、インストールの実施をお願いします。

APIリファレンスの確認

Tellusではさまざまな地上データ、およびツールをAPIで提供していますが、本記事ではTelluSARのAPIの一部を例として解説します。

まずはAPIリファレンスで実行したいAPIの仕様を確認します。APIリファレンスは各APIの詳細ページから参照することができます。

「APIリファレンス」のリンク先ページを確認してください。

20240926_image2.png

TelluSAR APIリファレンスを確認すると、Severs に「https://tools.tellusxdp.com/tellusar」と記載があるので各エンドポイントのベースURLは「https://tools.tellusxdp.com/tellusar」です。

例えば「処理(v2)」には /api/v2/works というエンドポイントが定義されており、干渉解析処理の開始を命令できることがわかります。また、HTTP リクエストメソッドはPOSTです。Request body が必須となっていますので、実行の際はこちらの情報が必要です。

20240926_image1.png

APIを実行する(TelluSARの場合)

エンドポイントURL、HTTPリクエストメソッド、実行時に必要なRequest bodyについて確認できたので、それらに則ってAPIを実行します。

/api/v2/works を POST メソッドで実行する例を以下に示します。

レスポンスについてはAPIリファレンスをご確認ください。

TOKENXXXXXXXXXXXXXXXXXX は「APIトークンの発行」で発行したAPIトークンに書き換えてください。

TELLUSAR_BASE_URLはAPIリファレンスで確認したServersの情報です。

・APIトークンを設定する

import json
import requests
# APIトークンの設定
TOKEN = "TOKENXXXXXXXXXXXXXXXXXX"
REQUESTS_HEADERS = {
    "Authorization": "Bearer " + TOKEN,
    "Content-Type": "application/json",
}
TELLUSAR_BASE_URL = "https://tools.tellusxdp.com/tellusar"


・比較する2枚のシーンを指定して差分干渉処理を開始する

url = "{}/api/v2/works".format(TELLUSAR_BASE_URL)
payloads = {
    "satellite": "palsar2",
    "before_scene_id": "ALOS2011010730-140806",
    "after_scene_id": "ALOS2236640730-181010",
}
res = requests.post(url, headers=REQUESTS_HEADERS, data=json.dumps(payloads))
print(res)

上記のサンプルコードを参考にエンドポイントURL、HTTPリクエストメソッド、必要パラメータを各APIに合わせて変更すれば他のAPIも実行することができます。

例として、HTTPリクエストメソッドがGETである、検索(v2)の /api/v2/{satellite}/search も実行してみます。

・任意の条件に合うシーンを検索する

サンプルコードでは、PALSAR-2を対象として、経度の範囲が141〜142度、偏波がHHのシーンを検索しています。

url = "{}/api/v2/palsar2/search?left_bottom_lon=141&right_top_lon=142&polarisations=HH".format(TELLUSAR_BASE_URL)
res = requests.get(url, headers=REQUESTS_HEADERS)
print(res.json())