宙畑 Sorabatake

Tellusの使い方

もう使った?Tellus Travelerの利用方法~ASNARO-2の災害データセットを見てみる~

Tellus Travelerでの衛星データの確認方法について、ASNARO-2の画像を例にご紹介します!

2021年10月にリリースしたTellus Satellite Data Traveler(Tellus Traveler)は皆さんすでに使いこなしていらっしゃいますでしょうか。

タイミングを逃してしまったよという方、Tellus OSとの違いが分からないよという方(そうですよね、申し訳ありませんそれは追々、、、by中の人)もいるのではないかと思いますので、本記事では改めてTellus Travelerの使い方をご紹介していきたいと思います。

Tellus Travelerの利用方法は大きく3つあります。

①無料公開されているTellus公式衛星データをブラウザ上で検索・閲覧する
②無料公開されているTellus公式衛星データのダウンロードURLを取得する
③有料販売されている衛星データを探す・見積依頼を出す

このそれぞれについて、ASNARO-2を題材にしてご紹介をしていきたいと思います!

Tellusのユーザー登録をしていない方は、この機会に登録をお願いします。
https://www.tellusxdp.com/market/sign_up

ログイン後、ヘッダーの「サービス」から「Tellus Traveler」を選択します。

Tellus Satellite Data Travelerの画面が開きます。
ここから、Tellus Travelerの様々な機能にアクセスできます。

ASNARO-2の災害データセットを見てみる(ブラウザ編)

まずは、従来のTellus OSと同じようにブラウザ上で衛星データを確認していきます。

先ほど開いたTellus Traveler上の画面の中央に配置されている「衛星データを見る」をクリックします。

Tellus Travelerの世界地図(viewer)が表示されます。

左上にある虫眼鏡マークをクリックすると、衛星データを検索するためのウィンドウが展開します。

今回はASNARO-2のデータをブラウザ上で見ていくので、「【Tellus公式】ASNARO-2_L2.1」にチェックを入れて、「検索」ボタンをクリックします。

地図上に該当する衛星データが青い枠で表示され、その詳細が左側に表示されます。

今回の結果を見ると、北海道の石狩地方、厚真町と、福島県、愛知県にデータがあることが確認できます。この中で今回災害データセットとして搭載しているのは厚真町と福島県のデータになります。

北海道の厚真町の青い枠をクリックすると、シーンの情報が表示されます。

近づいてみると2枚あることが分かります。

一つは、発災直後のデータ(2018年09月08日)でもう一つが、2年後(2020年09月05日)のデータです。
この2枚の画像を比較するために、この2つの画像をブラウザ上で表示してみます。

左の枠の中の「レイヤー表示」のボタンを押下します。
この操作を2枚の画像それぞれで行います。

一番左の虫眼鏡のマークの下にあるリストのようなマーク「レイヤー」に移動し、「レイヤーに移動」を押した2枚の画像が入っていることが分かります。

2枚の比較は左の枠の中のそれぞれの目のマークをクリックすることで、それぞれの画像のONとOFFを切り替えられます。

当時ニュースでも大きな話題となった、富里浄水場を比較したものが上図になります。
発災直後土砂で埋まってしまっている富里浄水場の周辺が、2年経ち土砂の撤去が進んでいることが確認できます。

AOI検索をつかってみる

ASNARO-2の災害データセットを見てみる(API編)

今回ご紹介するASNARO-2については、データポリシーにより、Tellusの外への持ち出しを許可されていません。許可されているデータの場合には、データ詳細の下部に「ダウンロード」ボタンが表示されているので、こちらのボタンを使って、データのダウンロードを行ってください。

Tellus内部のみで利用できる衛星データの場合は、Tellusが提供する開発環境からAPIを使って、データの取得と解析を行います。

Tellusの開発環境は、Tellusお問い合わせ窓口からリクエストを送ってください。

Tellus TravelerのAPIリファレンスはTellus Travelerトップの中ほど「リファレンスを見る」からアクセス、もしくは以下のURLからアクセスして下さい。
https://www.tellusxdp.com/docs/travelers/

必要なライブラリをインポートします。

import os
import requests
import json

データセットIDとデータIDから、ファイル名を取得します。

#データセットIDとデータIDから、ファイル名を取得
def get_dataset_data_by_id_files(base_path, token, dataset_id, data_id):
    print(base_path, token, dataset_id, data_id)
    url = '{}/api/traveler/v1/datasets/{}/data/{}/files/'.format(
        base_path, dataset_id, data_id)
    headers = {
        'Authorization': 'Bearer ' + token,
        'content-type': 'application/json'
    }
    r = requests.get(url, headers=headers)
    assert r.status_code == 200
    return json.loads(r.content)

ダウンロードするファイルを指定して、ダウンロードURLを取得します。

#ダウンロードURLの取得
def get_dataset_data_by_id_files_by_id_download_url(base_path, token, dataset_id, data_id, file_id):
    url = '{}/api/traveler/v1/datasets/{}/data/{}/files/{}/download-url/'.format(
        base_path, dataset_id, data_id, file_id)
    headers = {
        'Authorization': 'Bearer ' + token,
        'content-type': 'application/json'
    }
    r = requests.post(url, headers=headers)
    assert r.status_code == 200
    return json.loads(r.content)

上記二つを使って、所定のファイルをダウンロードしてくる関数です。

def download(scenes, dataset_id, token, dist='./', base_path='https://www.tellusxdp.com'):
    for scene_id in scenes:       
        files = get_dataset_data_by_id_files(
            base_path, token, dataset_id, scene_id)
        print(files)
        rawdata = files['results']
        path = os.path.join(dist, scene_id)
        if len(rawdata) > 0:
            for file in rawdata:
                file_id = file['id']
                file_name = file['name']

                file_path = os.path.join(path, file_name)

                download_url = get_dataset_data_by_id_files_by_id_download_url(
                        base_path, token, dataset_id, scene_id, file_id)['download_url']

                r = requests.get(download_url, stream=True)

                if not os.path.exists(path):
                    os.makedirs(path)

                with open(file_path, 'wb') as f:
                    for chunk in r.iter_content(chunk_size=1024):
                        if chunk:
                            f.write(chunk)
                            f.flush()

まずはデータセットIDを入力します。

データセットIDは先ほどのTellus Travelerの該当シーンを表示させた状態で、「取得シーン詳細」を押下

続けて、「データセット詳細」を押下することで確認できます。

【Tellus公式】ASNARO-2_L2.1の場合のデータセットIDは10402ffd-fb70-4625-9b46-63cec87cd5a9です。

#データセットIDを入力
dataset_id='10402ffd-fb70-4625-9b46-63cec87cd5a9'

シーンIDも先ほどの取得シーン詳細に記載されています。

#シーンIDを入力(travelerで探してコピーしてくる)
# https://www.tellusxdp.com/traveler/viewer/
scenes = [
    '2c9ccde2-3a8c-4cd2-aac5-4f0c3b33a4a4',
    '7d47301d-9533-4be2-a010-31a86912e865'
]

画像を取得するためには、Tellus登録をした上で、ユーザーごとのトークンを発行しておく必要があります。トークン発行の詳細はこちらを確認してください。

#トークンはダッシュボード>開発環境>APIアクセス
token = 'xxxxxxxxx'

download(scenes, dataset_id, token)

こちらでTellusの環境内にASNARO-2の画像がダウンロードできました。

Tellus Travelerから衛星データをリクエストしてみる

もし、Tellus Traveler上で欲しい場所や時期のデータが公開されていない場合、販売されている可能性があります。

最後にTellus Traveler上で衛星データを購入する方法もお伝えします。

Tellus Travelerのトップページから「衛星データを買う」をクリックします。

検索ウィンドウで検索したいデータセットにチェックを入れ、シーンの検索を行います。

検索結果から購入したいシーンにカートに追加を押します。

ヘッダーのカートボタンを押し、カートの内容を確認し、確認ボタンをクリックします。

購入内容を確認し、問題なければ、個人情報の第三者提供ボタンにチェックを入れ、見積依頼ボタンをクリックします。

のちほど、担当者からメールにて連絡が来ます。

もし、購入できるシーンの一覧にも欲しいデータがない場合には、個別のリクエストをお伺いすることになります。詳しくは、お問い合わせください。

まとめ

本記事では、ASNARO-2の衛星データを題材に、Tellus Travelerの使い方を紹介しました。
ぜひ、本記事を参考にTellus Travelerで衛星データの閲覧や解析を実施してみてください。