GoogleアースエンジンとPythonを使用してマッピング火災


最近ではseveral Wildfireは長期的な期間の間、複数の国を荒廃させました.そして、野生生物を破壊して、担保的損害を課して、想像できないスケールで複数の自然で人為的なプロセスを全体的に破壊します.
ESA(ヨーロッパ)、NASA(米国)、CNSA(中国)、JAXA(日本)とRoscosmos(ロシア)を含む世界中の複数の宇宙機関は、2010年から複数の地球観測衛星を開始し始めましたearly as 1957 . 最近、ESAはいくつかの地球観測衛星をCopernicus プログラム.
特定の関心はSentinel - 2として集合的に知られている太陽同期衛星のペアです.センチネル2は比較的短い再訪期間で陸面条件の変動性を監視する目的で開始された.センチネル- 2は、4096の明るさレベルで13のスペクトルバンドを受動的に記録することができるマルチスペクトルイメージング装置(またはMSI)を運びます.
他の条件では、センチネル- 2は、赤外線、短波長赤外線、赤のエッジなどの目に見えるイメージングスペクトルを使用することによって、私たちの人間の目を見ることができないものを見ることができます.
ESAから直接このデータにアクセスすることに興味があるならば、見てくださいthis link

マルチスペクトル画像とレッドエッジ


センチネル- 2は、見える赤、緑、青の周波数を含む放射線の複数の周波数を見ることができます.これにより、Sentinel - 2(および他のMSI軌道プラットフォーム)は、典型的なRGB測定よりも潜在的に識別可能なレベルで地球ベースの現象を観測することができます.さらに、これらのバンドの組み合わせは、水、タイプ、コンクリートなどのユニークな反射特性を使用して土地被覆を抽出し、分類するために使用されている.

レッドエッジは680 nmと750 nmの間のリーフ反射率の急激な変化の一般名である.それはリモートセンシングの重要な長さ範囲です.そして、それは植生状況に敏感です、そして、異なる植生パラメタ検索製品を支持するのに用いられることができます.
下のイメージでは、赤い端は強調されます、そして、イメージングバンドのスペクトルのこの領域の鋭いグラデーションは明らかに明白です.植物(特にクロロフィル豊富な品種)によるこれらの周波数での反射率の急激な増加は、植物の潜在的な変化をマップするために利用され得る.

熱傷


火傷の強さは、火傷がどのように燃えた地域の生態系の機能に影響するかについて説明します.火傷は、火災が発生した特定の生態系に基づいて変化する可能性があるので、現在、客観的に燃焼重症度をマップするためにあいまいな量指定子は存在しない.これにかかわらず、リモートセンシング画像から燃焼度を検出し、評価するために使用される2つの共通指標が提案されている.

正規化燃焼率


正規化燃焼率として知られている最初は,厳密に検出するために提案され,燃焼域の定量化ではなかった.私がこれのために見つけることができた唯一の参照は、そうでしたhere ランドサットデータのUSGSのウェブサイトを介して.この比率は近赤外(NIR)と短波赤外(SWIR)の違いを用いて計算される.
核融合研−スワニール+スワ
nbr =\frac { nir - swir } { nir + swir }
NBR=NIR+スワーニール−スワ​
このインデックスは、植生の破壊のために、土地の領域のクロロフィル内容の変化がその与えられた地域から反射される近赤外の量を減らすという考えに基づきます.これによって、高燃焼度の領域のためのより高い値(1に近い)、そして、unburntされる領域のためのより低い値(- 1に近い)が結果としてなる.
前に述べたように、このインデックスを使用することができる値の正確な範囲は、問題の領域の特定の反射特性に起因して、1つの火災ベースで微調整されなければならない.しかし、複数の研究(このポストの終わりの参照を参照)によると、NBRは森林火災によって荒廃している地域を強調することでかなり一貫していて、複合火傷率とその変動のようなその場測定に同意する傾向があります.

バーンエリア


バーンエリアインデックス(BAI)は、上記のようにバンドの「レッドエッジ」シリーズの反射率の急激な変化に対する植生の影響を利用する.これは、赤色エッジ2、3、(バンド6、7、8 a)、赤色(バンド4)、およびイメージングスペクトルの短波長赤外(バンド12)成分を用いて計算される.
BAI = ( 1−B 6×B 7×B 8 ab 4)×(B 12)−B 8 ab 12 + b 8 a + 1
bai =\left ( 1 -\sqrt {\frac { B 6\times b 8 a }{ B 4 }\right\\\\\\\\\\\\\\\\left\left (\frac { b 12 b 8 a }{\sqrt { b 12 + b 8 }}+ 1\right )
BAI = ( 1−B 4 B 6×B 7×B 8 A​​)X(B 12+B 8 A)​B 12−B 8 A​+1).
Baiは、スエークが効率的に赤のエッジスペクトルのバンド比が植生の変化をハイライトしている間、バーンエリアをハイライトするという考えを利用します.

グーグルアースエンジンの可視化


パッケージの輸入と免責事項


始める前に、いくつかの重要なパッケージをインストールする必要があります.残念ながら、私はここでJupyterノートを埋め込むことができませんnotebook Google Collabとして利用できるようになります
# for pip users
pip install earthengine-api --upgrade
pip install folium
pip install colorcet

# for conda users
conda update -c conda-forge earthengine-api
conda install folium -c conda-forge
conda install colorcet
また、指示に従ってGoogle Earthエンジン開発者アカウントの登録をする必要がありますhere . これは無料で、通常承認される2 - 3営業日かかります.
インストールが完了したら、次のようにアースエンジンAPIをインポートし、ログイン(自動的に別のブラウザページで開く)の指示に従ってログインして、地球のエンジンアカウントを認証します.
import ee
import colorcet as cc
import folium

ee.Authenticate()
ee.Initialize()

folium輸入の再マッピング


(私がそこで行ったことは?
我々は、フォリニウムが地球のエンジンマップ層を追加する方法を編集する必要がありますGEE's documentation . 以下の関数は、foliumがTilelayerとして地球エンジンイメージを摂取して、Jupyterスタイル環境で表示するために必要なパラメタに記入するのを許します
def add_ee_layer(self, ee_image_object, vis_params, name):
  map_id_dict = ee.Image(ee_image_object).getMapId(vis_params)
  folium.raster_layers.TileLayer(
      tiles=map_id_dict['tile_fetcher'].url_format,
      attr='Map Data &copy; <a href="https://earthengine.google.com/">Google Earth Engine</a>',
      name=name,
      overlay=True,
      control=True
  ).add_to(self)


folium.Map.add_ee_layer = add_ee_layer

クラウドマスキング


Sentinel - 2のスペクトルのいくつかのバンドへの特定のタイプの雲の非透明な性質のために、我々は我々のイメージが最終的な表示のためにできるだけ雲データを除去するためにマスクされる機能を提供する必要があります.以下の関数は、image.select クラウドとCirrusビットマスクの両方を使用して、結果の画像がクラウドカバーによって隠されている場所の堅牢なアイデアを生成します.
def maskS2clouds(image):
    qa = image.select('QA60');

    # Bits 10 and 11 are clouds and cirrus, respectively.
    cloudBitMask = 1 << 10
    cirrusBitMask = 1 << 11

    # Both flags should be set to zero, indicating clear conditions.
    mask = qa.bitwiseAnd(cloudBitMask).eq(0) and qa.bitwiseAnd(cirrusBitMask).eq(0)

    return image.updateMask(mask).divide(10000)

データの取得


ここにいくつかのことがあるので、私はそれを壊すだろう.最初に、我々は地球エンジンからSentinel - 2画像収集を選択します.これはSentinel - 2の名目上の存在のすべてを通して全世界中であらゆる一つのイメージを含みます、そして
imageCollection = ee.ImageCollection('COPERNICUS/S2_SR')
次に、この大規模なコレクションをfilters . 具体的には、2021年7月から8月にかけてギリシャで発生した火事の火傷の重症度を調査したい.したがって、我々は、火災の前と後に
before = imageCollection.filterDate('2020-01-30','2020-02-28')
after = imageCollection.filterDate('2021-08-01','2021-08-28')
次に、上記のように関数を使用してクラウドカバーをマップします.これは、上記のフィルタリング操作で返されたすべてのイメージに私たちの雲マスキング機能を適用します.
before = before.filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE',20)).map(maskS2clouds)
after = after.filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE',20)).map(maskS2clouds)

数学


今すぐ楽しい部分!前セクションで述べたようにバンドの組み合わせを使用して燃焼面積の重大度指数を計算する関数を定義した.この関数は引数として単一のイメージをとり、gee ' sを使います.expression() 関数を計算して返します.( .expression() はより複雑な数式を扱うのに使われます.一方、より単純な演算には、例えば.add() , .power() , など)
def calc_bais2(image):
    return ee.Image(image.expression(
    '(1 - ((R2*R4*R4)/(R4))**(0.5))*((SWIR2 - R4)/((SWIR2 + R4)**(0.5)) + 1)', {
      'RED': image.select('B4'),
      'R2': image.select('B6'),
      'R3': image.select('B7'),
      'SWIR2': image.select('B12'),
      'R4': image.select('B8A'),
}))
この
'(1 - ((R2*R4*R4)/(R4))**(0.5))*((SWIR2 - R4)/((SWIR2 + R4)**(0.5)) + 1)'
は数学演算を定義し、'RED': image.select('B4') ETCは、センチネル- 2イメージングバンドレッド、R 2、各バンドのために参照される再マップを再マップします.
我々は現在、画像の前と後の両方にこれらの関数を適用する
bais2_after = after.map(calc_bais2)
bais2_before = before.map(calc_bais2)
これは、使用してバーン重症度指数の違いを表示するために有用であった.subtract() 機能
delta_bais2 = bais2_after.mean().subtract(bais2_before.mean())

可視化


最後のステップは、地球の表面上の特定の場所に設定されたfolium APIを使用してマップを作成し、最後に作成したイメージレイヤーを最後に追加します.
lat, lon = 38.829592, 23.344883

my_map = folium.Map(location=[lat, lon], zoom_start=10)
my_map.add_ee_layer(delta_bais2.updateMask(waterMask), visualization, '')

display(my_map)
そして、我々の結果は以下に示されます!左側では、実際のRGB画像を見ることができます.右側には、傷の重症度に応じてかなりよく強調された領域が見えます.

可視化


これは、上に表示される最大値と最小値を設定することに関係する、正しく視覚化するいくつかの試みを取った.(つまり、インデックスの生の値が白として表示され、どのレベルが赤として表示されます.以下に示されるように、いくつかの色範囲が試みられました、そして、これはどんなリモートセンシングインデックスのアプリケーションと地域―特定の性質にでも戻ります.

Link to Google Collab

参考文献


フェルン・アシュ・ナデス・マンソー, A .フェーン,ナデス・マンソ, O .,キノタノ, C .センチネル‐2 A赤端スペクトル指数の燃焼度の厳しさの識別可能性国際地球観測データ学会誌.
エスカイン、S .、ナバロ、Rとフェルナンデス、p .ランドサットTM/ETM画像から導出したNBR(Normalized Burn Ratio)とNDVI(正規化植生指数)を用いた火災度評価リモートセンシングの国際的なジャーナル.
ケイ・Z .農業生態系林冠緑色葉面積指数検索における将来のLandsat衛星における赤端スペクトルバンドの可能性リモートセンシング2018年10月9日(1458年)