地上データ、ツール(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())