NDVIやNDBIのようなインデックス指標を用いる際に、特定の条件の画素値のみを取り出したいことがあると思います。
この記事ではGoogle Earth Engine(GEE)を使い、特定の条件に一致する画素値のみを取得する方法を紹介します。
Javascript (JS) のソースコードだけを見たい方はこちらですぐに確認できます!
手順
- マスク画像の作成
- マスク画像を作成します。マスク画像の作成の詳細はこちら
- マスク画像の作成では以下の条件を利用して、特定の画素値のみを取り出します。
- gt: 大なり(>)
- gte: 大なりイコール(>=)
- lt: 小なり(<)
- lte: 小なりイコール(<=)
- eq: イコール (=)
- Mask関数を利用した画素の抽出
- GEEのmask関数、updateMask関数を利用して、指定条件に合致する画素のみを取り出します。
ソースコード
ソースコードの詳細です。
- データセットの取得
- 画像の指定
- 画像に対して条件を指定(今回はndviが0.5以上の値)
- mask関数を利用して、条件に一致する画像だけを取得
- mask関数もupdateMask関数も基本的には同じ処理です。しかし、マスクされた画像に対しての処理が異なります。この辺りは今後別の記事で紹介したいと思います。
- 画像を表示
var dataset = ee.ImageCollection('LANDSAT/LC08/C01/T1_32DAY_NDVI').filterDate('2018-01-01', '2019-12-31'); // データセットの取得
var ndvi = dataset.first().select('NDVI'); // 画像の指定
var mask = ndvi.gt(0.5); // 画像に対して条件を指定(今回はndviが0.5以上の値)
var masked_image = ndvi.mask(mask); // mask関数を利用して、条件に一致する画像だけを取得
// var masked_image = ndvi.updateMask(mask);
Map.setCenter(139.7907312216245, 35.689438437756365, 8);
var view_setting = {
min: 0,
max: 1,
palette: [
'ffffff', 'ce7e45', 'df923d', 'f1b555', 'fcd163', '99b718', '74a901',
'66a000', '529400', '3e8601', '207401', '056201', '004c00', '023b01',
'012e01', '011d01', '011301'
],
};
Map.addLayer(masked_image, view_setting, 'ndvi'); // 画像を表示
発展
特定の条件に絞った画像を作成できれば、ノイズの除去やデータの解析に役立てられます!
是非、活用してみてください
コメント