目录
一、NDWI和MNDWI计算公式介绍
1、NDWI(归一化差异水体指数)
公式:NDWI = (GREEN-NIR)/(GREEN+NIR)
式中: GREEN为绿光波段; NIR为近红外波段。NDWI主要利用了在近红外波段水体强吸收几乎没有反射而植被反射率很强的特点,通过抑制植被和突出水体用来提取影像中的水体信息,效果较好。但是由于NDWI只考虑了植被因素,忽略了建筑物和土壤这2个重要的地物,通过NDWI提取水体信息时由于绿光波段的反射率远远高于近红外波段,所以提取结果往往混淆有土壤和建筑物信息。用NDWI提取城市水体时会有较多建筑物阴影的水体,效果较差。
2、MNDWI(改进的归一化差异水体指数)
公式:MNDWI=(GREEN-SWIR)/(GREEN+SWIR)
式中:GREEN为绿光波段; SWIR为短波红外波段。建筑物等阴影在绿光和近红外波段的波谱特征与水体相似,当采用短波红外波段替换近红外波段时,可以使计算出的水体与建筑物指数的反差明显增强,大大降低了二者的混淆程度,从而有利于城镇中水体信息的准确提取。
二、使用Landsat8影像计算NDWI和MNDWI
1、获取Landsat8影像
var roi = table; //table 为自己上传的矢量边界
//筛选Landsat8影像
var l8_image = ee.ImageCollection('LANDSAT/LC08/C01/T1_SR')
.filterBounds(roi)
.filterDate('2020-01-01', '2020-12-31')
.filter(ee.Filter.lte('CLOUD_COVER',10))//云量设置
.median()
.clip(roi);
var rgbVis = {
min: 0.0,
max: 3000,
bands: ['B4', 'B3', 'B2'],
};
Map.addLayer(l8_image, rgbVis, 'l8_image');
Map.centerObject(roi,9)
2、计算NDWI
Landsat8影像中:B3表示GREEN波段,B5表示NIR波段。
var ndwi = l8_image.normalizedDifference(['B3','B5']).float().rename('l8_NDWI');
var visParams1 = {min: 0, max: 1, palette: ['0000FF', 'FF0000']};
Map.addLayer(ndwi, visParams1, "l8_NDWI");
3、计算MNDWI
Landsat8影像中:B3表示GREEN波段,B6表示SWIR波段。
var mndwi = l8_image.normalizedDifference(['B3','B6']).float().rename('l8_MNDWI');
var visParams2 = {min: 0, max: 1, palette: ['0000FF', 'FF0000']};
Map.addLayer(ndwi, visParams2, "l8_MNDWI");
三、结果导出
1、导出NDWI
Export.image.toDrive({
image: ndwi,
description: 'l8_NDWI',
crs: "EPSG:4326",
scale: 30,
region: roi,
maxPixels: 1e13,
folder: 'l8_NDWI'
});
2、导出MNDWI
Export.image.toDrive({
image: mndwi,
description: 'l8_MNDWI',
crs: "EPSG:4326",
scale: 30,
region: roi,
maxPixels: 1e13,
folder: 'l8_MNDWI'
});
更多GEE教程可关注GZH:”GEEer成长日记“,有讨论群哦,一起学习!