LoginSignup
2
0

Google Earth Engineを使用したLandTrendrの実装方法

Last updated at Posted at 2023-05-10

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の結果となります。

2
0
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0