はじめに
Google Earth Engine (GEE) は、膨大な衛星データを手軽に扱える強力なプラットフォームです。その中でも、衛星画像の各バンド(波長帯)の反射率を組み合わせて計算されるスペクトル指数(Spectral Indices)は、植生の活性度や水域の分布など、地表面のさまざまな情報を定量的に評価するために不可欠なツールです。
この記事では、Landsat 8の画像データを用いて、代表的なスペクトル指数であるNDVI (Normalized Difference Vegetation Index)、EVI (Enhanced Vegetation Index)、MNDWI (Modified Normalized Difference Water Index)をGEE上で計算し、地図上に可視化する手順を詳しく解説します。
この記事で学べること
- Landsat 8画像データからNDVI、EVI、MNDWIを計算し、GEEに実装する方法
- 計算したスペクトル指数を効果的に可視化する方法
![]() |
![]() |
![]() |
![]() |
---|---|---|---|
衛星画像データ Landsat 8 |
植物の活性度 NDVI |
大気の影響を受けにくい植生指数 EVI |
水域を抽出した MNDWI |
対象読者
- GEEで植生や水域の解析をしたい方
- スペクトル指数の計算方法を学びたい方
スペクトル指数とは?
ここでは、本記事で計算する3つの主要なスペクトル指数について、それぞれの目的、基本的な考え方、値の範囲、そしてLandsat 8における具体的な計算式を解説します。
スペクトル指数とは、衛星画像が持つ複数のバンド(波長帯)の反射率を特定の計算式に当てはめることで、地表面の特定の特性(例:植生の量、水分の含有量など)を強調し、数値化する手法です。
「そもそも、光の波長って何?」という疑問については、宙畑のサイトのこちらの記事で詳しく解説されています。
1. 植物の活性度を測る「NDVI」
NDVI (Normalized Difference Vegetation Index) は、「正規化植生指数」とも呼ばれます。
植生の活性度、量、健康状態を評価するために、最も広く使われている指数のひとつです。
健康な植物は、赤色の光(RED)を吸収して光合成に利用します。また、細胞構造が発達しているため、近赤外の光(NIR)を強く反射するという特性を持っています。NDVIは、この赤色光と近赤外光の反射率の差を利用して、植生の活発さを数値化します。
NDVIの活用例としては、農作物の生育状況モニタリングや干ばつの早期検知、森林の健康診断などがあります。
-
値の範囲: -1〜1
- 高い値(0.2〜0.8程度が一般的、1近くはまれ): 植生が活発で健康な状態(例: 森林、農地)。値が1に近いほど、植生が密で元気であることを意味します。
- 低い値(-1〜0.1): 植生が少ない、または存在しない状態(例: 水域、裸地、建物、雪など)。
-
NDVIの計算式:
NDVI = (NIR - RED) / (NIR + RED)
- NIR:近赤外線の波長
- RED:赤色の波長
2. 大気・土壌の影響を軽減する「EVI」
EVI (Enhanced Vegetation Index) は、「強化植生指数」とも呼ばれます。
NDVIと同様に植生を評価しますが、大気の影響や土壌の背景ノイズを軽減するように改良された指数です。
特に、植生が非常に密な地域(例: 熱帯林)でNDVIが飽和しやすいという弱点を補い、より正確な植生量を捉えることができます。そのため、EVIは熱帯林など高密度な植生エリアでの植生変動モニタリングや土地被覆分類に役立ちます。
EVIは、青色バンド(BLUE)を計算式に加えることで、大気中のエアロゾル(ちりやほこり)による影響を補正します。また、土壌の明るさによる影響も考慮することで、より安定した植生情報を提供します。
- 値の範囲: -1〜1(NDVIと似ていますが、計算式が異なるため値の分布は異なります)。
-
EVIの計算式:
2.5 * ((NIR - RED) / (NIR + 6 * RED - 7.5 * BLUE + 1))
- NIR:近赤外線の波長
- RED:赤色の波長
- BLUE:青色の波長
3. 水域を抽出する「MNDWI」
MNDWI (Modified Normalized Difference Water Index) は、「改良正規化差分水指数」とも呼ばれます。
水域を効果的に抽出するための指数です。湖、河川、湿地などの水域と、それ以外の土地(植生、裸地、建物など)を明確に区別するのに優れています。
水は、緑色光(GREEN)を強く反射し、短波長赤外光(SWIR)を強く吸収するという特性があります。MNDWIは、この緑色光と短波長赤外光の反射率の差を利用して、水域とそれ以外の土地をより明確に区別できるように表示します。
-
値の範囲: -1〜1
- 高い値(0以上): 水域である可能性が高い。
- 低い値(0未満): 水域ではない可能性が高い。
-
MNDWIの計算式:
(GREEN - SWIR1) / (GREEN + SWIR1)
- GREEN:緑色の波長
- SWIR1:短波長赤外線1の波長
使用するデータ
-
衛星データ: Landsat 8 Collection 2 Tier 1 Level-2 (LANDSAT/LC08/C02/T1_L2)
- アメリカ地質調査所(USGS)が提供する、大気補正済みの地表面反射率(Surface Reflectance)の衛星画像データ。
-
T1
は地形補正済みの高品質なデータを示す。 - Google Earth Engineデータカタログ: USGS Landsat 8 Level 2, Collection 2, Tier 1
手順:
まずは、GEEのCode Editorに記述するスクリプトの全体像をご紹介します。このコードを貼り付ければすぐに実行できます。
その後、各ステップについて詳しく解説していきます。
スクリプト全体像
// Calculate NDVI, EVI, and MNDWI from Landsat 8 imagery over Kenya
// 1. Define ROI
// ケニアの関心領域を定義
var roi = ee.FeatureCollection("USDOS/LSIB_SIMPLE/2017")
.filter(ee.Filter.eq("country_na", "Kenya"));
// 2. Cloud mask function
// QA_PIXELバンドとQA_RADSATバンドを使って雲と飽和ピクセルをマスクする関数
//// ビット0 - FIll (データなし)
//// ビット1 - Dilated Cloud (雲の膨張領域)
//// ビット2 - Cirrus (巻雲)
//// ビット3 - Cloud (雲)
//// ビット4 - Cloud Shadow (雲の影)
function cloudmask(image){
// QA_PIXELバンドのビット0からビット4まで(11111b = 31)をチェックし、
// これらのビットがすべて0(=クリーン)であるピクセルを抽出
var qaMask = image.select("QA_PIXEL").bitwiseAnd(parseInt("11111", 2)).eq(0);
// QA_RADSATバンドが0(=飽和していない)ピクセルを抽出
var saturationMask = image.select("QA_RADSAT").eq(0);
// 両方のマスクを適用して画像を返す
return image.updateMask(qaMask).updateMask(saturationMask);
}
// 3. Scale surface reflectance and thermal bands
// 地表面反射率(光学バンド)と輝度温度(熱バンド)にスケールファクターを適用する関数
function applyScaleFactors(image){
// 光学バンド (SR_B*) にスケールファクターを適用: 0.0000275を乗算し、-0.2を加算
var opticalBands = image.select("SR_B.").multiply(0.0000275).add(-0.2);
// 熱バンド (ST_B*) にスケールファクターを適用: 0.00341802を乗算し、149.0を加算
var thermalBands = image.select("ST_B.*").multiply(0.00341802).add(149.0);
// スケールファクター適用後のバンドを元の画像に追加して返す
return image.addBands(opticalBands, null, true)
.addBands(thermalBands, null, true);
}
// 4. Load Landsat 8 image collection for 2021
// 2021年のLandsat 8画像コレクションを読み込み、フィルタリング、前処理を適用
var dataset = ee.ImageCollection("LANDSAT/LC08/C02/T1_L2")
.filter(ee.Filter.date("2021-01-01", "2022-01-01")) // 2021年の画像にフィルタリング
.filter(ee.Filter.bounds(roi)) // ケニアのAOIでフィルタリング
.map(applyScaleFactors) // スケールファクターを適用
.map(cloudmask); // 雲マスクを適用
// 5. Create median composite
// フィルタリング・前処理済みの画像コレクションから中央値合成画像を生成
var image = dataset.median();
// 6. Visualization
// RGB自然色合成の可視化パラメータを定義し、画像を地図に表示
var rgbVis = {min: 0, max: 0.3, bands: ["SR_B4", "SR_B3", "SR_B2"]};
Map.centerObject(roi, 6); // 地図の中心をケニアに設定し、ズームレベルを6に
Map.addLayer(image.clip(roi), rgbVis, "Landsat 8 Image"); // Landsat 8画像を地図に追加
// 7. Create NDVI image
// NDVI画像を計算 (NIRバンドとREDバンドの正規化差分)
var ndvi = image.normalizedDifference(["SR_B5", "SR_B4"]).rename("ndvi");
// 8. Create MNDWI image
// MNDWI画像を計算 (GREENバンドとSWIR1バンドの正規化差分)
var mndwi = image.normalizedDifference(["SR_B3", "SR_B6"]).rename("mndwi");
// 9. Create EVI image
// EVI画像を計算 (複雑な式を使用)
var evi = image.expression(
"2.5 * ((NIR - RED) / (NIR + 6 * RED - 7.5 * BLUE + 1))",
{
"BLUE": image.select("SR_B2"), // 青バンド
"RED": image.select("SR_B4"), // 赤バンド
"NIR": image.select("SR_B5") // 近赤外バンド
}
).rename("evi");
// 10. Visualization styles
// NDVIとEVIの可視化スタイル (白から緑へのグラデーション)
var ndviVis = {min: 0, max: 0.5, palette: ["white", "green"]};
// MNDWIの可視化スタイル (白から青へのグラデーション)
var ndwiVis = {min: 0, max: 0.5, palette: ["white", "blue"]};
// 11. Display
// 計算したスペクトル指数を地図に表示
Map.addLayer(ndvi.clip(roi), ndviVis, "NDVI");
Map.addLayer(evi.clip(roi), ndviVis, "EVI");
Map.addLayer(mndwi.clip(roi), ndwiVis, "MNDWI");
コードのステップ別解説
ここからは、上記のスクリプトをブロックごとに詳しく解説します。
1. 関心領域 (ROI) の設定
分析対象エリアを、今回はアフリカのケニアに設定します。GEEの国境データセットからケニアを抽出しています。
// 1. Define ROI
var roi = ee.FeatureCollection("USDOS/LSIB_SIMPLE/2017")
.filter(ee.Filter.eq("country_na", "Kenya"));
スクリプト抜粋 | 意味・目的 |
---|---|
var roi = ee.FeatureCollection("USDOS/LSIB_SIMPLE/2017").filter(...) |
USDOS/LSIB_SIMPLE/2017 はGEEが提供する国境データセットです。このデータセットからcountry_na (国名)がKenya であるフィーチャ(ポリゴン)をフィルタリングし、関心領域(roi )として設定します。 |
2. 雲マスク関数の定義
このステップでは、衛星画像データLandsat 8に含まれる品質情報のQA_PIXEL
バンドとQA_RADSAT
バンドを使って、雲、雲の影、飽和ピクセルを除去します。
// 2. Cloud mask function
function cloudmask(image){
var qaMask = image.select("QA_PIXEL").bitwiseAnd(parseInt("11111", 2)).eq(0);
var saturationMask = image.select("QA_RADSAT").eq(0);
return image.updateMask(qaMask).updateMask(saturationMask);
}
スクリプト抜粋 | 意味・目的 |
---|---|
function cloudmask(image){ ... } |
image を引数として受け取る、cloudmask という名前の関数を定義。 |
var qaMask = image.select("QA_PIXEL").bitwiseAnd(parseInt("11111", 2)).eq(0) |
品質情報QA_PIXEL バンドのビット0からビット4まで(前述の表中「データなし」、「雲周辺」、「巻雲」、「雲」、「雲の影」に該当)をチェックし、これらのいずれにも該当しないピクセルを抽出。 |
var saturationMask = image.select("QA_RADSAT").eq(0) |
QA_RADSAT バンドは、センサーの飽和状態(データが上限に達して正確な値が記録されていない状態)を示すバンド。QA_RADSAT バンドが0(=飽和していない)ピクセルを抽出。 |
return image.updateMask(qaMask).updateMask(saturationMask) |
上記のqaMask とsaturationMask の両方を画像に適用。これにより、雲、雲の影、飽和ピクセルなどが除去されたクリーンな画像を返す。 |
QA_PIXELバンドとは?
QA_PIXEL
バンドは、0から15までの16個のビットで構成されており、それぞれのビットが特定の品質情報を示しています。
表:QA_PIXEL`バンドのビットと品質情報(抜粋)
ビット位置 | フラグ内容 (Bit Flag) | 説明 |
---|---|---|
0 | Fill | データがない(埋められている)ピクセル。 |
1 | Dilated Cloud | 雲の周辺(雲の膨張領域)。 |
2 | Cirrus | 巻雲(薄い雲)。 |
3 | Cloud | 雲。 |
4 | Cloud Shadow | 雲の影。 |
今回のcloudmask
関数では、ビット0からビット4までのいずれかのフラグが立っているピクセルをマスク(非表示)しています。これにより、より広範囲の雲関連のピクセルを除去しています。
参考:
QA_PIXEL
バンドを使った雲除去について、詳しくはこちらの記事で解説しています。
QA_RADSAT
バンドとは?
QA_RADSAT
バンドは、Landsatセンサーの各バンドが飽和したかどうかを示す品質バンドです。飽和とは、センサーが受け取った光の強度が測定範囲の上限を超えてしまい、正確な反射率が記録されていない状態を指します。
例えば、非常に明るい雲や雪面、太陽のぎらつきなどが原因で飽和が発生することがあります。このような飽和したピクセルは信頼できないデータの可能性があるため、QA_RADSAT
バンドで0
(飽和なし)のピクセルのみを選択することで、データの品質を確保します。
3. スケールファクター適用関数の定義
Landsat 8 Level-2データは、そのままでは物理的な意味を持たない整数値で格納されています。そのため、applyScaleFactors
関数を使って、地表面反射率や輝度温度といった物理量に変換します。
// 3. Scale surface reflectance and thermal bands
function applyScaleFactors(image){
var opticalBands = image.select("SR_B.").multiply(0.0000275).add(-0.2);
var thermalBands = image.select("ST_B.*").multiply(0.00341802).add(149.0);
return image.addBands(opticalBands, null, true)
.addBands(thermalBands, null, true);
}
スクリプト抜粋 | 意味・目的 |
---|---|
function applyScaleFactors(image){ ... } |
image (Landsat 8の画像)を引数として受け取る、applyScaleFactors という名前の関数を定義。 |
var opticalBands = image.select("SR_B.").multiply(0.0000275).add(-0.2) |
地表面反射率バンド(SR_B* )について、USGSが定義するスケールファクター(乗数0.0000275 と加算オフセット-0.2 )を適用して、実際の反射率値(0〜1の範囲)に変換。 |
var thermalBands = image.select("ST_B.*").multiply(0.00341802).add(149.0) |
熱バンド(ST_B* )について、スケールファクター(乗数0.00341802 と加算オフセット149.0 )を適用して、輝度温度(ケルビン)に変換します。 |
return image.addBands(opticalBands, null, true).addBands(thermalBands, null, true) |
スケールファクターを適用した新しいバンドを元の画像に追加。null はバンド名を変更しないことを意味し、true は既存のバンドを上書きすることを意味します。 |
4. Landsat 8の画像コレクションを読み込み、フィルタリング
GEEのデータカタログから、条件に合うLandsat 8の画像コレクションを取得し、前処理関数を適用します。
// 4. Load Landsat 8 image collection for 2021
var dataset = ee.ImageCollection("LANDSAT/LC08/C02/T1_L2")
.filter(ee.Filter.date("2021-01-01", "2022-01-01"))
.filter(ee.Filter.bounds(roi))
.map(applyScaleFactors)
.map(cloudmask);
スクリプト抜粋 | 意味・目的 |
---|---|
var dataset = ee.ImageCollection("LANDSAT/LC08/C02/T1_L2") |
Landsat 8、Collection 2、Tier 1、Level-2(地表面反射率)の画像コレクションを呼び出し。 |
.filter(ee.Filter.date("2021-01-01", "2022-01-01")) |
2021年1月1日から2022年1月1日までの期間に撮影された画像のみを抽出。 |
.filter(ee.Filter.bounds(roi)) |
roi (ケニアの関心領域)と重なる画像のみを抽出します。 |
.map(applyScaleFactors) |
コレクション内の各画像にapplyScaleFactors 関数を適用し、物理量に変換します。 |
.map(cloudmask) |
コレクション内の各画像にcloudmask 関数を適用し、雲や飽和ピクセルを除去します。 |
5. 中央値合成画像の作成
フィルタリングと前処理が完了した画像コレクションから、1枚の代表的な画像を生成します。
// 5. Create median composite
var image = dataset.median();
スクリプト抜粋 | 意味・目的 |
---|---|
var image = dataset.median() |
前処理済みのdataset コレクションの各ピクセルにおいて、時系列の中央値を取ることで、雲や一時的なノイズの影響をさらに軽減した1枚の合成画像を作成。 |
6. 自然色画像の表示
計算したスペクトル指数を表示する前に、元となるLandsat 8の自然色画像を地図に表示します。
// 6. Visualization
var rgbVis = {min: 0, max: 0.3, bands: ["SR_B4", "SR_B3", "SR_B2"]};
Map.centerObject(roi, 6);
Map.addLayer(image.clip(roi), rgbVis, "Landsat 8 Image");
スクリプト抜粋 | 意味・目的 |
---|---|
var rgbVis = {min: 0, max: 0.3, bands: ["SR_B4", "SR_B3", "SR_B2"]} |
自然色(RGB)合成のための可視化パラメータを定義します。SR_B4 (赤)、SR_B3 (緑)、SR_B2 (青)バンドをそれぞれRGBに割り当て、表示範囲を0 から0.3 に設定します。 |
Map.centerObject(roi, 6) |
地図の中心をroi (ケニア)に設定し、ズームレベルを6 に設定。 |
Map.addLayer(image.clip(roi), rgbVis, "Landsat 8 Image") |
前処理済みの合成画像(image )を地図に追加。.clip(roi) でケニアの領域で画像を切り取り。 |
7. NDVI (Normalized Difference Vegetation Index) の計算
いよいよ主要なスペクトル指数を算出していきます。
まずは植生指数NDVIを算出します。NDVIは、植生の活性度や量を評価するための最も一般的な指数です。健康な植生は近赤外(NIR)域の光を強く反射し、赤(RED)域の光を吸収するという特性を利用します。
NDVIは、SR_B5
(近赤外バンド)とSR_B4
(赤色バンド)の正規化差分から算出します。
// 7. Create NDVI image
var ndvi = image.normalizedDifference(["SR_B5", "SR_B4"]).rename("ndvi");
スクリプト抜粋 | 意味・目的 |
---|---|
var ndvi = image.normalizedDifference(["SR_B5", "SR_B4"]).rename("ndvi") |
normalizedDifference() メソッドは、指定された2つのバンド間の正規化差分を計算する関数。計算結果のバンド名をndvi に変更します。 |
-
normalizedDifference()
関数:
(Band1 - Band2) / (Band1 + Band2)
の形式で計算される指数(例: NDVI, MNDWI)に最適な関数。 -
NDVIの計算式(再掲):
NDVI = (NIR - RED) / (NIR + RED)
- NIR:近赤外線の波長
- RED:赤色の波長
-
GEEのCode Editorでの計算式(Landsat 8のバンドを使った計算式):
(SR_B5
-SR_B4
) / (SR_B5
+SR_B4
)-
SR_B5
: 近赤外バンド (NIR) -
SR_B4
: 赤色バンド (RED)
-
8. MNDWI (Modified Normalized Difference Water Index) の計算
MNDWIは、水域を効果的に抽出するために設計された指数です。水域は緑(GREEN)域の光を強く反射し、短波長赤外(SWIR)域の光を強く吸収するという特性を利用します。
MNDWIは、SR_B3
(緑色バンド)とSR_B6
(短波長赤外バンド1)の正規化差分から算出します。
// 8. Create MNDWI image
var mndwi = image.normalizedDifference(["SR_B3", "SR_B6"]).rename("mndwi");
スクリプト抜粋 | 意味・目的 |
---|---|
var mndwi = image.normalizedDifference(["SR_B3", "SR_B6"]).rename("mndwi") |
SR_B3 とSR_B6 のバンド間の正規化差分を計算。計算結果のバンド名をmndwi に変更します。 |
-
MNDWIの計算式(再掲):
(GREEN - SWIR1) / (GREEN + SWIR1)
- GREEN:緑色の波長
- SWIR1:短波長赤外線1の波長
-
GEEのCode Editorでの計算式(Landsat 8のバンドを使った計算式):
(SR_B3
-SR_B6
) / (SR_B3
+SR_B6
)-
SR_B3
: 緑色バンド (GREEN) -
SR_B6
: 短波長赤外バンド1 (SWIR1)
-
9. EVI (Enhanced Vegetation Index) の計算
EVIは、NDVIと同様に植生指数ですが、大気の影響や土壌の背景ノイズを軽減するように改良されており、特にバイオマスが高い地域でNDVIよりも飽和しにくいという特徴があります。
// 9. Create EVI image
var evi = image.expression(
"2.5 * ((NIR - RED) / (NIR + 6 * RED - 7.5 * BLUE + 1))",
{
"BLUE": image.select("SR_B2"), // 青バンド
"RED": image.select("SR_B4"), // 赤バンド
"NIR": image.select("SR_B5") // 近赤外バンド
}
).rename("evi");
スクリプト抜粋 | 意味・目的 |
---|---|
var evi = image.expression("2.5 * ((NIR - RED) / (NIR + 6 * RED - 7.5 * BLUE + 1))", { ... }).rename("evi") |
expression() メソッドを使って、より複雑な計算式を適用します。ここでは、EVIの計算式を文字列で定義し、 {} 内で対応するバンド(BLUE :SR_B2 、RED :SR_B4 、NIR :SR_B5 )をマッピングしています。計算結果のバンド名を evi に変更します。 |
-
EVIの計算式(再掲):
2.5 * ((NIR - RED) / (NIR + 6 * RED - 7.5 * BLUE + 1))
- NIR:近赤外線の波長
- RED:赤色の波長
- BLUE:青色の波長
-
GEEのCode Editorでの計算式(Landsat 8のバンドを使った計算式):
2.5 * ((SR_B5
-SR_B4
) / (SR_B5
+ 6 *SR_B4
- 7.5 *SR_B2
+ 1))-
SR_B5
: 近赤外バンド (NIR) -
SR_B4
: 赤色バンド (RED) -
SR_B2
: 青色バンド (BLUE)
-
10. 可視化スタイルと表示範囲の定義
計算したスペクトル指数を地図上で分かりやすく表示するための色と表示範囲を設定します。
// 10. Visualization styles
var ndviVis = {min: 0, max: 0.5, palette: ["white", "green"]};
var ndwiVis = {min: 0, max: 0.5, palette: ["white", "blue"]};
スクリプト抜粋 | 意味・目的 |
---|---|
var ndviVis = {min: 0, max: 0.5, palette: ["white", "green"]} |
NDVIとEVIの可視化スタイルを定義。値が0 から0.5 の範囲で、white (白)からgreen (緑)へのグラデーションで表示。植生が豊かであるほど緑色が濃くなります。 |
var ndwiVis = {min: 0, max: 0.5, palette: ["white", "blue"]} |
MNDWIの可視化スタイルを定義。値が0 から0.5 の範囲で、white (白)からblue (青)へのグラデーションで表示。水域であるほど青色が濃くなります。 |
11. スペクトル指数の表示
最後に、計算した各スペクトル指数をGEEの地図上にレイヤーとして追加します。
// 11. Display
Map.addLayer(ndvi.clip(roi), ndviVis, "NDVI");
Map.addLayer(evi.clip(roi), ndviVis, "EVI");
Map.addLayer(mndwi.clip(roi), ndwiVis, "MNDWI");
スクリプト抜粋 | 意味・目的 |
---|---|
Map.addLayer(ndvi.clip(roi), ndviVis, "NDVI") |
計算したndvi 画像を地図に追加します。ndviVis で定義したスタイルが適用され、レイヤー名を"NDVI" に指定。.clip(roi) でケニアの領域で画像をクリップ(切り取り)。 |
Map.addLayer(evi.clip(roi), ndviVis, "EVI") |
同様にevi 画像を地図に追加します。NDVIと同じndviVis スタイルを適用。 |
Map.addLayer(mndwi.clip(roi), ndwiVis, "MNDWI") |
同様にmndwi 画像を地図に追加。水域を示すため、ndwiVis スタイルを適用。 |
実行結果
スクリプトを実行すると、ケニアのLandsat 8自然色画像に加えて、NDVI、EVI、MNDWIの3つのスペクトル指数がそれぞれレイヤーとして表示されます。レイヤーのチェックボックスを切り替えることで、各指数分布を確認できます。
NDVI (Normalized Difference Vegetation Index)
植生が活発な地域(緑が濃い部分)が強調されています。
EVI (Enhanced Vegetation Index)
NDVIと同様に植生を示しますが、高バイオマス地域での飽和が少なく、より広い範囲で植生の変化を捉えやすい特徴があります。
MNDWI (Modified Normalized Difference Water Index)
水域(青が濃い部分)が強調され、河川や湖、湿地などが明確に表示されます。
まとめ
本記事では、Google Earth EngineとLandsat 8データを使って、NDVI、EVI、MNDWIという3つの主要なスペクトル指数を計算し、可視化する手順を解説しました。
- NDVI: 植生の活性度をシンプルに評価。
- EVI: 大気や土壌の影響を軽減し、高バイオマス地域でも有効。
- MNDWI: 水域の抽出に特化。
これらのスペクトル指数は、農業モニタリング、森林管理、水資源評価、環境変化の検出など、様々な地理空間解析に応用できます。
ぜひご自身の研究やプロジェクトでスペクトル指数を計算・分析してみてください。
参考文献
- Udemy Course: Google Earth Engine Mega Course
- Google Earth Engine Data Catalog: USGS Landsat 8 Level 2, Collection 2, Tier 1