COGとSTACを使って今年行った海をお手軽に可視化する
この記事はUMITRON Advent Calendar 2023 1日目の記事です。
こんにちは、UMITRONの宮山(@jkatagi)です。最近は植物を種子から育てることにハマっています。おかげで部屋中植物だらけです。
さて2021年、2022年に引き続き、今年もUMITRONでAdvent Calendarを開催することになりました。
UMITRON Advent Calendar 2023 1日目は衛星画像 x 海をテーマに、COGとSTACを使って今年行った海をお手軽に可視化してみます。
はじめに
Google Mapや毎日の天気予報などで、日常的に衛星画像を見る機会が増えてきています。しかしながら衛星画像を自分で取得し、可視化するというのはまだ比較的敷居の高いものと思われます。衛星画像を取得する場合、基本的には撮影した画像1シーンをそのままダウンロードするか、衛星画像の提供元に対してこちらから領域をリクエストし、処理をしてもらった後にダウンロードするというものが従来の手法でした。
前者(1シーンをそのままダウンロードする)の問題点はサイズが大きく(数百MB~数GB)ダウンロードに時間がかかることが挙げられます。また後者(こちらから範囲をリクエストし、処理をしてもらった後にダウンロードする)は提供元のサーバーの処理能力に依存した時間がかかるという問題があります。
COG: Cloud Optimized GeoTIFF
それらの問題を解決するものとして、近年Cloud Optimized GeoTIFF(COG)が登場しました。これは従来はシーンごとに提供されていた衛星画像を、必要な範囲だけダウンロードできるような画像およびその仕様です。詳しくは下記記事にまとめられています。
STAC: SpatioTemporal Asset Catalogs
衛星画像を取り扱う上でのもう一つの問題として、データごとにメタ情報(撮影日やバント情報など)の仕様がまちまちであったりすることにより、統一的に取り扱えないというものがありました。これを解決するためにSpatioTemporal Asset Catalogs (STAC) が提案されました。STACは4つの仕様から構成されており、ざっくりいうとデータに関する情報の仕様と、それを取得するためのAPIの仕様から構成されています。
このSTACが提供されていれば、例えば複数の異なる衛星が撮影した衛星画像をSTACに基づき同一のコードで取得できます。
上記で紹介したCOGとSTACを組み合わせて使えば、必要な範囲の衛星画像を統一的な手法で手軽に取得することができます。
実際に見てみる
今回はフリーの衛星であるSentinel-2の画像を可視化してみます。AWSとElement 84がCOGとSTACを提供しているので、それを使用します。
from satsearch import Search
# Define the geographical area of interest
center_latitude = 35.308431
center_longitude = 139.319674
deg_range = 0.01 # degree
datetime = "2023-05-01T00:00:00Z/2023-05-31T23:59:59Z"
bbox = [
center_longitude - deg_range,
center_latitude - deg_range,
center_longitude + deg_range,
center_latitude + deg_range
]
search = Search(
bbox=bbox,
datetime=datetime,
collections=["sentinel-2-l2a"],
url="https://earth-search.aws.element84.com/v1",
limit=100,
)
items = search.items()
上記のように領域や日付を指定し検索をかけると該当するCOGがヒットします。それをrasterioやxarrayといったライブラリで読み込み、保存します。
せっかくなので今年私が行った海を見てみようと思います。なおコード全体はこちらにアップロードしました。また各衛星画像は数十秒でダウンロードできました。
2023年5月 神奈川県大磯海水浴場
海水浴場で有名な大磯海水浴場です。海水浴のシーズン外れ + 夕方ということもあり、あまり人がいませんでした。
2023年8月 熊本県上天草市
出張で行きました。上天草市は何度か出張で来ていますが、海がとても綺麗なところです。ただこの日は夏真っ只中ということもあり、とても暑かったのを覚えています。
2023年11月 フィジー
初の海外出張で行きました。写真は道中の移動で撮影した海です。この日は天気も良く、海底が見えるほど透き通っていました。
おわりに
今回はCOGとSTACを使って今年行った海と衛星画像を可視化してみました。衛星画像で可視化しながら、今年はいろんな海に行ったなーと振り返ることができました。また衛星画像のダウンロードに時間がかからないため、気軽に見ることができました。皆さんももし今年海を訪れていましたら、その時宇宙からはどんなふうに見えていたかを見てみませんか?
次回はKenさんによる 「ウミトロンメンバーが行ったことのある国を集計する」です、お楽しみに!
ウミトロンでは一緒に働く仲間を募集しております。持続可能な水産養殖を地球に実装するというミッションの元で、私たちと一緒に水産養殖xテクノロジーに取り組みませんか?
https://umitron.com/ja/career.html
https://open.talentio.com/1/c/umitron/requisitions/746
Citation
Sentinel-2 Cloud-Optimized GeoTIFFs were accessed on 2023-11-28 from https://registry.opendata.aws/sentinel-2-l2a-cogs.