JAXA Earth API for Pythonで遊んでみた
前置き
ページの下の方にある「ご利用条件」に遵守して、いろいろやってみます。
目標:とりあえず九州の観測データを出してみる。
準備
実践
地表面温度データ
こちらのコード例をもとに、最新の九州の地表面温度データを出してみることにします。
緯度経度の範囲を変えるため、変数bboxの値を変更しました。
変更前:bbox = [110, 20, 160, 50]
変更後:bbox = [129, 31, 132, 34]
緯度経度の座標はGoogleマップで確認できます。
マップ上の任意の場所で右クリックするだけ。
画像:JAXA Earth APIを利用して作成
データの粒度を細かくするため、変数ppu (Pixels Per Unit)を5から20に変更しました。
20より大きい値を入れても変わりませんでしたが、十分九州っぽくなりました。
画像:JAXA Earth APIを利用して作成
最後に最新日付のデータを出すため、変数dlimの値を変更しました。
が、2021年のままでデータが変わりませんでした。
指定されているデータセットが2021年までのものだったので、別のデータセットを指定することにしました。
各データセットには長めのIDとBANDがあるので、API Referenceを参照してImageCollection
にID、select
にBANDを指定することで上手くいきました。
コード例ではIDの一部みたいなパラメータ(kw = ["Aqua","LST","half-monthly"]
の部分)が使われているのですが、これが何なのかは分かりそうで分かりませんでした。
最終的に書けたコードがこちら。
# Load module
from jaxa.earth import je
# Set query parameters
dlim = ["2023-11-02T00:00:00","2023-11-02T23:59:00"]
ppu = 20
bbox = [129, 31, 132, 34]
# Get an image
data = je.ImageCollection("JAXA.G-Portal_GCOM-C.SGLI_standard.L3-LST.daytime.v3_global_daily",ssl_verify=True)\
.filter_date(dlim=dlim)\
.filter_resolution(ppu=ppu)\
.filter_bounds(bbox=bbox)\
.select("LST")\
.get_images()
# Process and show an image
img = je.ImageProcess(data)\
.show_images()
11月4日時点で11月2日までのデータが取れました。
画像:JAXA Earth APIを利用して作成
(11月12日追記)
11月10日のデータを取ろうとしたら欠落していました。
そういえばこの日は雨が降ったので、天気が悪い(曇が濃い?)とこういう感じになるみたいです。
画像:JAXA Earth APIを利用して作成
標高データ
コード例では千葉県の標高データが表示されるので、九州が表示されるように変数bboxの値だけ変えました。
# Load module
from jaxa.earth import je
# Set query parameters
kw = ["AW3D"]
dlim = ["2019-01-01T00:00:00","2021-02-01T00:00:00"]
ppu = 360
# bbox = [129.63, 30.92, 132.24, 34.06]
bbox = [129, 31, 132, 34]
mq = "bits_equal"
val = [0,0,0,0,0,0,0,0]
# Get information of collections,bands for data
collections,bands = je.ImageCollectionList(ssl_verify=True)\
.filter_name(keywords=kw)
# Get an image for data
data_d = je.ImageCollection(collection=collections[0],ssl_verify=True)\
.filter_date(dlim=dlim)\
.filter_resolution(ppu=ppu)\
.filter_bounds(bbox=bbox)\
.select(band="DSM")\
.get_images()
# Get an image for mask
data_m = je.ImageCollection(collection=collections[0],ssl_verify=True)\
.filter_date(dlim=dlim)\
.filter_resolution(ppu=ppu)\
.filter_bounds(bbox=bbox)\
.select(band="MSK")\
.get_images()
# Process and show an image
img = je.ImageProcess(data_d)\
.mask_images(data_m,method_query=mq, values=val)\
.show_images()
画像:JAXA Earth APIを利用して作成
最後に
地球観測データでプログラミングができるのはいいですね。
データセットの指定方法で謎は残ってしまいましたが、、QGIS(調べるとオープンソースの地理情報システムとのこと)のサンプルもあるので、まだまだ試しがいがありそうです。
Discussion