地上データ、ツール(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リファレンス」のリンク先ページを確認してください。

TelluSAR APIリファレンスを確認すると、Severs に「https://tools.tellusxdp.com/tellusar」と記載があるので各エンドポイントのベースURLは「https://tools.tellusxdp.com/tellusar」です。
例えば「処理(v2)」には /api/v2/works というエンドポイントが定義されており、干渉解析処理の開始を命令できることがわかります。また、HTTP リクエストメソッドはPOSTです。Request body が必須となっていますので、実行の際はこちらの情報が必要です。

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())