Python
REST-API
Jupyter-notebook
Tellus

日本初のオープン&フリーなプラットフォーム「Tellus」を使ってみた


Tellus...ご存知?

以下、Tellus HPより


「Tellus(テルース)」は、日本初のオープン&フリーな衛星データプラットフォームです。

今まで扱いの難しかった衛星データを、誰もが簡単に、無償で扱うことができる環境を提供します。

今後Tellusの機能や搭載されるデータは随時更新していきます。


まあ、簡単に言うと人工衛星のデータを無償で使用できるのです。


なぜ今、衛星データ?日本初プラットフォーム?

最近、はやぶさ2のタッチダウンであったり、ブラックホールだったりが世間をにぎわせている宇宙業界ですが、じわじわと世界規模で大きくなりつつあります。

今までは教育や研究用に打ち上げてきた衛星ちゃんたちも、ついに商業用として開発される時代が来たのです...!!

衛星を打ち上げると、もちろんデータを所得しますよね?

それを解析、分析して研究用途に使用するわけですね。

素晴らしい!どんどん打ち上げて研究、商業利用を進めよう!!!

ほんとにそれでいいの?

というのは、衛星を打ち上げて商業・研究利用するのはもちろん良いことだと思うのですが、それって企業単位でしか知見が共有されませんよね?

そんなんじゃ、オープンソースが進んでいる現代において開発速度遅すぎない?というわけなのです。

まあ、たぶん日本が宇宙開発に出遅れているからという理由もあるんでしょうが...笑

ということで、経済産業省が日本の大手企業、さくらインターネットに委託して開発されているのが、Tellusなわけですね!

開発したものを出すマーケットみたいなものも実装予定らしいので、みなさんどんどん使用して、知見を共有していきましょう!


使い方

ほかの記事等でも使い方が書いているのですが、私はpythonなど触ったことありません。

そもそも、REST-APIのつなぎ方がわからんのだよ!!!!!と怒り狂って、自力で頑張ってみたので共有します。

よろぴこ。

まず、Tellusのサイトに行き、右上にあるユーザー登録をします。

すると、すぐにTellusOSが使用できるようになりますね!

良き良き。

では、実際にコードを書いて画像を所得したいと思ったときはどうするの?

そういう時は、jupyter notebookを用意してくれているので、その辺は公式の記事を読んでみてください。

マイページから開発環境を申し込むみたいですね。


コード

今回は、landsat8ちゃんのデータをもらいます。

今回読み込むライブラリたちです。

多すぎてダルビッシュですね。


get.ipynb

#coding:utf-8

from PIL import Image
import matplotlib.pyplot as plt
import requests
import numpy as np
from io import BytesIO
from keras.preprocessing.image import load_img, img_to_array
%matplotlib inline

次に、REST APIのキーを所得します。

公式でtokenと書いているところはこのキーを代入します。

キーは、マイページのAPIアクセス設定というところで発行できるみたいです。

まあ、私は知識がないからずっとサーバーを借りたときのtokenをセットしてて、”unauthorized”って帰ってきてめっちゃ腹立ったけどな!!

引っかかったらあかんで!(私だけ?)


get.ipynb

token = "XXXXXXXXXX" #自分で発行したtokenをセットします

url = "https://gisapi.tellusxdp.com/api/v1/landsat8/get_scene/LO81070302015042LGN01" #url

headers = {
'Authorization': "Bearer" + " " + token
}


よし、あとはrequestsを送るだけやな!!

...ということで、requestsを送ります。

そのあと、配列に変換して、imgを表示します。


get.ipynb

# requests

response = requests.get( url, headers=headers)
print(response)

# res to array with numpy
img = img_to_array(load_img(BytesIO(response.content)))
RGB_img = img.astype(np.uint8)

# show
plt.imshow(RGB_img)
plt.show()



コード全部

できましたか?

以下に全部乗せておくので参考にしてみてください

token = "XX"に自分のやつを入れ替えるだけで試せます。


get.ipynb

#coding:utf-8

from PIL import Image
import matplotlib.pyplot as plt
import requests
import numpy as np
from io import BytesIO
from keras.preprocessing.image import load_img, img_to_array
%matplotlib inline

# prepare
token = "XX"
url = "https://gisapi.tellusxdp.com/landsat8/9/456/195.png"

print(url)
headers = {
'Authorization': "Bearer" + " " + token
}

# requests
response = requests.get( url, headers=headers)
print(response)

# res to array with numpy
img = img_to_array(load_img(BytesIO(response.content)))
RGB_img = img.astype(np.uint8)

# show
plt.imshow(RGB_img)
plt.show()