4. 時系列分析

変わりゆく森が見たい

今回は時系列変化を見るのが目的です。まずは単純に、これまでやってきた処理を期間を小分けして回してみることにしましょう。

「2016年から2018年までの期間について、半年ごとに、雲マスク処理したmedianコンポジットImageを作成し、NDVIを計算し、結果画像を表示する」

という処理をやってみます。時系列変動の見やすい点(105.12E, 13.22N)を予め見つけておきましたので、ここを中心に解析しましょう。これまでのスクリプトの中心指定をregionから上記の点に変え、forループを回します:

複雑になったように見えますがガワだけです。ImageCollectionの抽出期間指定部分の文字列を変えながらループさせています。forループや文字列の扱い自体はJavaScriptの仕様ですので、難しく感じる方は「JavaScript forループ」や「JavaScript 文字列 結合」などでググりましょう。

さて、描画領域のLayersのところから、まずNDVIのチェックを全てはずしたうえで、上から順番にチェックを外していくと、過去に遡りながらトゥルーカラー画像を眺めることができます。

2016年01-06月

2016年07-12月

2017年01-06月

2017年07-12月

2018年01-06月

2018年07-12月

このように並べてみると、2017年01-06月あたりで伐採範囲が広がったことがわかります。また、2016年07-12月の画像は雲が取りきれていません。Sentinel-2の雲検出アルゴリズムが完璧ではないことと、medianコンポジットを取るデータ数が少ない(Sentinel-2Bが打ち上がる以前だから)ことが原因で、2017年以前の雨季には雲が残った画像になりがちと思われます(それでも伐採範囲の確認には十分使えます)。

NDVIも時系列を追ってみてください。見え方が少し変わると思います。


時系列チャートにしてみる

さて、これだけだとつまらないので、NDVIの時系列変化をプロットしてみましょう。雲のノイズの影響を抑えるため、「ある程度の空間範囲の平均NDVIを、Sentinel-2のシーンごとに算出し、時系列チャートを描画」してみます。これまでとスクリプトがやや変わるので、Saveを押し、Sentinel2_chartとでもしてスクリプトのコピーを作成しましょう。

まず平均NDVIを算出する関心ポリゴンを作ります。いつものようにee.Geometry.Rectangleなどで作ってもいいのですが(ee.Geometry.Polygonなどもある)、今回は手動で作ってみます。

これまで作ったスクリプトを利用して関心地域のNDVI画像を描いてください。つづいて、描画領域の左上の「図形を描画」を押し、ポチポチとポリゴンを作ったあと、Exitを押します。筆者は右のように、先ほど2017年01-06月あたりに大きく変化した場所をとりました。

スクリプトにこんなのが出ていれば、インポート成功です:

Import (1 entry)

var geometry: Polygon, 4 vertices

このポリゴンはいまgeometryという変数になっています。分かりづらければクリックして名称を変えてください。

さて、まずはピクセルごとのNDVIを計算したImageCollectionを作ります。期間は変化が起こったらしい2016~2017年としましょう。geometryインポート以降のスクリプトは次のようになります。

  • cloudMasking関数は以前のとおりです。

  • ndviCalc関数は少しだけ変更あり。チャートを作成するときにデータが時間情報を持っている必要があるため、「時間情報をもとのImageからコピーする」処理を加えています。

  • ndvi_imageが求めるNDVIのImageCollectionです。位置情報と期間でフィルタリングするのに加え、雲ノイズ低減のため「雲量20%以下のものだけ抽出」としています。さらに、.mapメソッドを使って、NDVIを一括で計算させています。

これがあれば、時系列チャートの作成はすぐできます。こうです:

ui.Chart.image.seriesの第二引数は関心ポリゴン、第三引数は算出する統計、第四引数は空間分解能 (m) を入れています。

Consoleにそれらしきチャートが出ていたら成功です。マウスを線のうえに持って行くとシーン日付を表示してくれ、2017/03/12にNDVIが大きく低下したことがわかりました。

チャート右上のボタンを押すと図が拡大され、csv, svg, pngデータがダウンロードできるようになります。この結果だけダウンロードすればハードディスクの大幅な節約になりますね。


さて次回は、この「ハードディスクの大幅な節約」を真っ向から否定する「元データの全ダウンロード」をやってみたいと思います。