1.初めに
Google Earth Engine (以下、GEE)がリリースされたことにより、衛星画像の取り扱いが簡単になりました。その機能は、pythonとjavascriptのポテンシャルを秘めており、汎用性が非常に高い。
その中でも、これまで使用可能なソフトが限られていたLandTrendrも使用できるようになっています。しかし、LandTrendrの使用に関しては、日本語での説明書がない (英語ならやり方にたどり着くかもしれません)ことや提供されているLT-GEEの処理工程を使いたくない人もいると思います。
よって、本記事はGEEにデフォルトで提供されているLandTrendrの使用方法についてまとめる。
2.コード
LandTrendrは、時間の概念が重要です。なので、年あたり一つの画像が必須です。もし、NDVIなどへの加工により取得時間が失われた場合には、これを補完する必要があります。
LT-GEEは、年ごとの合成画像をLandTrendrに入力しています。本記事では、自分で加工した年あたりの画像を入力します。
///以下のコードで時間のデータを自作します。year,month,dayは任意
var date =ee.Date.fromYMD(year,month,day).millis()
////仮に、NDVIへ加工し、時間データが失われた画像をndviとします。
///以下のコードで、時間を画像にセットします。
var ndvi =ndvi.set("system:time_start",date).toFloat();
上記のコードにより、複数枚の画像を作成し、それらを一つのImageCOllection (画像の塊)とします。これは、ご自分で作成してください
次に、いよいよ入力します。
///仮に作成したimagecollectionをicとします。
///LandTrendrに必要なパラメータの設定 (確かデフォルト値)
var Params = {maxSegments:6,spikeThreshold:0.9,vertexCountOvershoot:3,
preventOneYearRecovery: true,recoveryThreshold:0.25,pvalThreshold:0.05,
bestModelProportion:0.75,minObservationsNeeded:6
};
///作成したimagecollectionをパラメータの一つにする。
Params.timeSeries = ic;
var result=ee.Algorithms.TemporalSegmentation.LandTrendr(Params);
入力が完了しましたが、以下で結果を加工しなければなりません。
///年の値を入れる空のリストを作成する
var years=[];
for (var i = startyear; i <= endyear; ++i) years.push('yr'+i.toString());
///NDVI_fitという名前は、icの中に統一されて存在する名前が採用される。
///私は、icのバンド名を全てNDVIと設定しています。
var LT_result= result.select("NDVI_fit").arrayFlatten([years]);
LT_resultが最終的に出力されるLandTrendrの結果となります。