衛星データ分析可視化サーバ

Logo

Satellite Data Analysis and Visualization web server

View the Project on GitHub tellusxdp/sdav

衛星データ分析可視化サーバ(参考実装: 雪質解析)

想定環境

ホストにDocker/DockerComposeが導入されていること
Python 3.6 (コンテナ内)

目次

概要

Tellus を利用したサンプルプロジェクトです。

Jupyter Notebookをベースに、Tellusから取得できる衛星画像を利用した様々な分析・可視化をし、結果をAPIするWebサーバです。

参考実装として、雪質の分析・可視化を行うAPIが実装されています。解析の詳細はこちら

Tellus Platformでの動作を想定しているため、それ以外の環境ではTellusAPIの利用に失敗する場合があります。また、データポリシー にご注意ください。

アプリ構成

NAME 役割 技術要素など
sdav-proxy プロキシサーバー nginx
sdav-gateway APIサーバ kernel gateway
sdav-jupyter 分析環境・APIのコード jupyter notebook

Docker Image

詳細は.dockerを参照してください。

デプロイ準備例 (Ubuntu 18.04)

DockerとDockerComposeをインストールします。

sudo apt update
sudo apt install git
sudo apt-get install -y \
        apt-transport-https \
        ca-certificates \
        curl \
        software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88
sudo add-apt-repository \
        "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
        $(lsb_release -cs) \
        stable"
sudo apt update
sudo apt-get install -y docker-ce
sudo gpasswd -a $(whoami) docker
sudo chgrp docker /var/run/docker.sock
sudo service docker restart

# ログインし直すとdockerがsudoなしで利用できる
docker info

sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose -v

実行

git clone https://github.com/tellusxdp/sdav.git
cd sdav/.deploy
./local-up.sh

実装済みAPI一覧

サンプルAPI

背景

API

エンドポイント
name description URI output format
original image Tellus APIの画像をそのまま出力 local:
http://localhost:8080/img/{kind}/{z}/{x}/{y}
production:
https://0.0.0.0/api/img/{kind}/{z}/{x}/{y}
html
パラメータ
params description sample
kind 画像の種類 osm, band1, band2, band3, band4
z ズーム値 (大きいほどズーム) 13
x 地図のx軸の値 7252
y 地図のy軸の値 3234

API利用例

http://localhost:8080/img/osm/13/7252/3234 default

雪質解析API

背景

スコープ

API

エンドポイント
name description URI output format
NDSI image NDSIを計算した結果を出力 local:
http://localhost:8080/ndsi_img/{z}/{x}/{y}
production:
https://0.0.0.0/api/ndsi_img/{z}/{x}/{y}
html
SAR analysis image 2枚のSAR画像を比較して解析した結果を出力 local:
http://localhost:8080/sar_analysis_img
production:
https://0.0.0.0/api/sar_analysis_img
html
パラメータ
params description sample
kind 画像の種類 osm, band1, band2, band3, band4
z ズーム値 (大きいほどズーム) 13
x 地図のx軸の値 7252
y 地図のy軸の値 3234

API利用例

http://localhost:8080/ndsi_img/13/7252/3234 default

http://localhost:8080/sar_analysis_img default

リンク


雪質解析詳細

利用データとTellusAPI

概要

今回のデータ解析で扱う Tellus API ではいくつかの衛星データが利用可能です。今回はAVNIR-2が受信する光学画像とPALSAR-2が受信するSAR画像を利用します。

一部正式リリース前のサンプルAPIが含まれます。

光学画像とは

太陽の出す可視・赤外線を元に、地上で反射した光を観測するセンサで捉えたデータを画像化したものです。各波長での反射の強さは水・土壌・植物などによって異なるため、複数波長を組み合わせることで物質の認識が可能になります。

Tellus APIでは、AVNIR-2の4バンドが利用可能です。

band 波長
band1 0.42~0.50μm
band2 0.52~0.60μm
band3 0.61~0.69μm
band4 0.76~0.89μm 近赤外線(不可視光線)

SAR画像とは

SAR (Synthetic Aperture Radar; 合成開口レーダー) はマイクロ波を地表面に斜めに照射し、地表面からの後方散乱波を受信したものです。SARのマイクロ波は雲を通過し観測に太陽光を必要としないため、天候に左右されず、夜間でも観測が可能という特徴があります。

band 周波数
L band 1.2GHz帯(波長 23cm)

光学画像とSAR画像の比較

  光学画像(AVNIR-2) SAR画像(PALSAR-2) 備考
分解能 10m 3~100m SARの高分解能モードでは3mまで分解可能
太陽光 必要 不要 光学画像は雲の影響を受けるが、SAR画像は受けにくい
入射角 0~44度 8~70度 SARは斜めに飛ばした電波の跳ね返りを観測するため、入射角が必要
観測幅 70km 50km~490km SARの広域観測モードは広範囲を一度に観測可能

光学画像の基礎分析1(雪判定)(Notebook

概要

衛星画像を取得できるTellus APIの挙動を確認するとともに、データの読み込み・Notebook上での画像の確認・変換処理・可視化といった基本的操作を行います。またその中で、富士山の雪を直感的に識別できるか調査します。

利用データ

技術要素

分析サマリ

1.複数bandを組み合わせてtrue画像作成

true

2.明度の画像抽出

hsv_no_v

3.閾値でフィルタリングし雪かどうかを判定

filter

考察

直感的な色や明るさでフィルタリングの作成を行いました。 雪と土や森は色が明らかに違うため識別が容易かと思われましたが、陰になっている部分が想像以上に暗く、判別が難しいことが明らかになりました。また、道などのコンクリート部分も白く抽出されてしまうことが分かりました。

今回は富士山を対象に行いましたが、スキー場であれば基本的に同一方向を向いており光の当たり具合も似ていると思われるため、スキー場毎に閾値を設定すればスキー場毎の雪判定はできそうです。

光学画像の基礎分析2(雪質分析)(Notebook

概要

光学画像の複数bandを組み合わせることで雪かどうかを判定するためのNDSI(Normalized Difference Snow Index)を作成します。ただし、AVNIR-2では得られないデータが必要となるため、一部代替手段を模索します。また、明度による雪判定と合わせ、雪質判定機を作成します。

利用データ

利用技術

分析サマリ

1.NDSIを作成

ndsi

2.前のNotebookの雪判定をマスクとして作成

filter

3.NDSIの結果を雪判定マスクでtrue画像を重ねる

default

考察

光学画像の不可視光線を利用することで、NDSIを作成しました。本来は中間赤外線が必要だが、AVNIR-2では提供されていないため、近赤外線で代用しました。 赤外線を利用することで、色では捉えられない情報(植生の深さや水の有無など)を認識可能となり、今回はこれを使い雪質の判定を試みました。

結果として、近赤外線を利用したため植生に敏感に反応するものとなった(1の赤い部分)。雪かどうかでも多少色が分かれているものの、雪部分と岩部分の境界が微妙となっており、明度による分類よりも精度が落ちてしまいました。

そこで、明度で雪かどうかの判定をするマスク作成したのち、雪として判定した部分に対してNDSIを計算して色付けしたものを最終的なアウトプットとしました。色の濃淡は出ましたが、雪質(ふわふわ、べちょべちょ、カチカチなど)に関しては実際の雪と一致しているか検証する必要が残っています。

SAR画像の基礎分析(雪判定)(Notebook

概要

SAR画像をTellus APIから取得し、データの確認を行います。また、9月と12月に取得された2種類の富士山のSAR画像を利用することで、そのデータの違いから雪の判定を試みます。

利用データ

利用技術

分析サマリ

1.異なる日時のSAR画像を読み込み(左が9月、右が12月)

sar

2.2つのSAR画像の差分を抽出

sar_diff

3.ノイズを取り除き可視化

default

考察

SAR画像は複数偏波(HH, VV, HV, VH)がある場合もあるが、今回は単一の偏波(HH)の提供だったため、偏波の差分の検証は行わず、2つの日時のデータの差分を利用することで、雪の判定を試みました。

夏と冬の同一位置の差分を抽出した結果、ノイズが目立ち判断が難しかったため、ガウシアンフィルタを利用し平滑化することで、差分を見やすく加工しました。

結果として、富士山の中腹部の変化が激しいことが判明しましたが、この変化が雪によるものなのか、草木が枯れたことによるものなのかまでの判断は難しいと言えます。

光学画像とSAR画像の両方についての考察

今回の検証において、光学画像とSAR画像にはそれぞれメリット・デメリットがありました。光学画像はのメリットとして、可視光線を含むため直感的な解析を行うことができました。その上で近赤外線なども利用することで、目で見える可視光線以上のアウトプットが可能でした。

一方デメリットとして、雲が雪として判定されてしまう問題がありました。以下は光学画像による富士山の右上部分アウトプットですが、雲も明度が高いため雪として判定され、青くなっていることがわかります。

ndsi_cloud

一方でSAR画像は太陽光を利用しないため、雲や天候の影響を受けにくく安定したアウトプットを出力可能という利点があります。

FutureWork

光学画像の時系列データが入手できれば分析の幅は広がります。複数の日時のデータを用いて、雪が降った前後の光学画像を比較した分析、雲がある時/ない時の判定を行うことが考えられます。

また、SAR画像では複数偏波(HH, VV, HV, VH)を利用した検証・同一日時の光学画像を確認しながらの検証・光学画像とSAR画像を組み合わせた検証を行うことが考えられます。

参考文献