第十三篇GEE中使用MNDWI和NDWI水体指数逐年提取水体

目录

一、主要信息

(一)Landsat8遥感数据信息

1、数据集的名称

2、数据集的可用时间

(二)水体指数的介绍

1、MNDWI

2、NDWI

二、数据集的使用与代码的简单介绍

(一)设置研究区的显示颜色,并定位到研究区可见。

(二)定义一个Landsat8的云掩膜函数对图像进行去云处理。

(三)使用gee中的函数分别计算MNDWI和NDWI,并将返回结果为新的波段。

(四)定义for循环。

1、首先,设定所需时间范围,筛选时间、研究区、云量,遍历云掩膜函数、提取MNDWI函数、NDWI函数,取中值合成,裁剪到研究区范围大小。

2、其次,将真彩色合成的研究区范围影像显示出来,再显示出水体提取的结果。

3、最后,定义一个导出到云盘的函数,可以同时将两种水体提取的结果任务显示出来。

三、结果查看

(一)提取结果查看

(二)导出任务查看


一、主要信息

(一)Landsat8遥感数据信息

此次提取水体使用的是Landsat8的地表反射率产品,主要信息如下:

1、数据集的名称

LANDSAT/LC08/C02/T1_L2

2、数据集的可用时间

2013年3月18号至今

(二)水体指数的介绍

1、MNDWI

2、NDWI

二、数据集的使用与代码的简单介绍

此次研究区域选取江西省赣州市,使用时间为2014年到2023年,逐年提取水体,代码介绍如下:

(一)设置研究区的显示颜色,并定位到研究区可见。

Map.addLayer(roi, {"color": 'red',}, "roi");
Map.centerObject(roi,8);

(二)定义一个Landsat8的云掩膜函数对图像进行去云处理。

function mask_L8(image) {
	var qaMask = image.select('QA_PIXEL').bitwiseAnd(parseInt('11111', 2)).eq(0);
	var saturationMask = image.select('QA_RADSAT').eq(0);
	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)
		.updateMask(qaMask)
		.updateMask(saturationMask);
}

(三)使用gee中的函数分别计算MNDWI和NDWI,并将返回结果为新的波段。

// 定义一个名为 add_mndwi_L8 的函数,该函数接受一个影像对象作为参数
function add_mndwi_L8(image) {
    // 计算归一化差异水体指数(MNDWI),使用第 3 波段(绿色)和第 6 波段(短波红外)
    var mndwi = image.normalizedDifference(['SR_B3', 'SR_B6']).rename('MNDWI');
    // 将计算得到的 MNDWI 作为新波段添加到原始影像中,并返回增强后的影像
    return image.addBands([mndwi]);
}

// 定义一个名为 add_ndwi_L8 的函数,该函数接受一个影像对象作为参数
function add_ndwi_L8(image) {
    // 计算归一化差异水体指数(NDWI),使用第 3 波段(绿色)和第 5 波段(近红外)
    var ndwi = image.normalizedDifference(['SR_B3', 'SR_B5']).rename('NDWI');
    // 将计算得到的 NDWI 作为新波段添加到原始影像中,并返回增强后的影像
    return image.addBands([ndwi]);
}

(四)定义for循环。

1、首先,设定所需时间范围,筛选时间、研究区、云量,遍历云掩膜函数、提取MNDWI函数、NDWI函数,取中值合成,裁剪到研究区范围大小。

2、其次,将真彩色合成的研究区范围影像显示出来,再显示出水体提取的结果。

3、最后,定义一个导出到云盘的函数,可以同时将两种水体提取的结果任务显示出来。

// 从2014年到2023年循环
for (var year = 2014; year <= 2023; year++) {
    // 设置每年的开始和结束日期
    var start_date = year + '-01-01'; // 每年的开始日期
    var end_date = year + '-12-31'; // 每年的结束日期

    // 创建一个图像集合,过滤条件为每年的日期范围、感兴趣区域(roi)和云覆盖小于10%
    var land_img = ee.ImageCollection("LANDSAT/LC08/C02/T1_L2")
        .filterDate(start_date, end_date) // 过滤指定日期范围内的影像
        .filterBounds(roi) // 过滤只在感兴趣区域内的影像
        .filter(ee.Filter.lt('CLOUD_COVER', 10)) // 过滤云覆盖率小于10%的影像
        .map(mask_L8) // 应用自定义函数 mask_L8 以掩膜云和其他不必要的区域
        .map(add_mndwi_L8) // 应用函数 add_mndwi_L8 计算 MNDWI
        .map(add_ndwi_L8) // 应用函数 add_ndwi_L8 计算 NDWI
        .median() // 计算影像集合的中位数
        .clip(roi); // 将结果裁剪到感兴趣区域(roi)

    // 在地图上添加图层,使用波段3(绿色)、波段2(蓝色)、波段1(红色)显示影像
    Map.addLayer(land_img, {bands: ['SR_B3', 'SR_B2', 'SR_B1'], min: 0, max: 0.3 }, 'land8_img_' + year, false);

    // 选择计算得到的 MNDWI 波段
    var MNDWI = land_img.select('MNDWI');
    // 生成水体掩膜,阈值为 0.3
    var mndwi_water = MNDWI.gt(0.3);
    // 更新掩膜,仅保留值大于0.5的区域
    var mndwi_water = mndwi_water.updateMask(mndwi_water.gt(0.5));

    // 选择计算得到的 NDWI 波段
    var NDWI = land_img.select('NDWI');
    // 生成水体掩膜,阈值为 0.3
    var ndwi_water = NDWI.gt(0.3);
    // 更新掩膜,仅保留值大于0.5的区域
    var ndwi_water = ndwi_water.updateMask(mndwi_water.gt(0.5));

    // 在地图上添加 MNDWI 水体掩膜图层
    Map.addLayer(mndwi_water, { min: 0, max: 1, palette: ['white', 'blue'] }, 'mndwi_water_' + year, false);
    // 在地图上添加 NDWI 水体掩膜图层
    Map.addLayer(ndwi_water, { min: 0, max: 1, palette: ['white', 'blue'] }, 'ndwi_water_' + year, false);

    // 定义一个用于导出水体指数图像的函数
    function export_WaterIndex(image, description, roi, year) {
        Export.image.toDrive({
            image: image, // 要导出的图像
            description: description + '_' + year, // 导出时的描述,包含年份
            folder: '', // 指定导出的文件夹
            region: roi, // 指定导出区域
            scale: 30, // 像素分辨率为30米
            crs: 'EPSG:4326', // 坐标参考系统设置为 WGS84
            maxPixels: 1e13, // 最大像素设置
        });
    }

    // 调用 export_WaterIndex 函数导出 MNDWI 水体掩膜
    export_WaterIndex(mndwi_water, 'water_mndwi', roi, year);
    // 调用 export_WaterIndex 函数导出 NDWI 水体掩膜
    export_WaterIndex(ndwi_water, 'water_ndwi', roi, year);
}

三、结果查看

(一)提取结果查看

(二)导出任务查看

<think>嗯,用户想了解改进的归一化差异水体指数MNDWI)的遥感影像处理方法及应用。首先,我需要回顾一下MNDWI的基本概念公式。根据引用[3],MNDWI的计算公式应该是使用绿光波段短波红外(SWIR)波段的组合,对吧?原来的NDWI是绿光波段近红外(NIR)波段,但MNDWI改用了SWIR,这样可以减少建筑物土壤的影响,提高水体提取精度。 接下来,用户可能需要具体的处理步骤。根据引用[4],处理流程包括数据准备、影像预处理、指数计算、阈值分割、结果优化应用分析。数据准备需要选择包含绿光SWIR波段的影像,比如Landsat 8的B3B6波段。预处理部分,云掩膜辐射校正都是必须的,这里可能需要参考GEE中的相关函数。 阈值分割的方法,用户提到了大津算法(Otsu)零阈值法,这在引用[2]里有提到。需要解释这两种方法如何应用,以及它们的优缺点。例如,大津法自动确定最佳阈值,适合大范围监测,而零阈值可能需要手动调整,适用于特定区域。 然后,应用部分需要结合引用中的案例,比如GEE中的应用(引用[2]、[3]、[4]),说明MNDWI在洪水监测、水域变化分析中的作用。还要提到精度评估的指标,如F1分数、Kappa系数,这些在引用[2]中都有涉及。 可能用户在使用过程中会遇到混淆建筑物土壤的问题,或者云层干扰,这时候需要强调预处理的重要性,比如云掩膜辐射校正。此外,不同传感器的波段差异也需要考虑,比如Sentinel-2的波段位置可能不同,需要调整公式中的波段编号。 最后,生成相关问题时,要覆盖MNDWI的计算、优化、与其他指数的对比、应用场景以及实际案例,这样用户可以根据问题进一步深入学习。还要确保引用的正确标注,比如引用[3]解释了MNDWI的公式,引用[4]提供了处理流程的例子。</think>### 改进的归一化差异水体指数MNDWI)遥感影像处理方法及应用 #### 一、MNDWI的定义与公式 改进的归一化差异水体指数(Modified Normalized Difference Water Index, MNDWI)是一种通过优化波段组合来增强水体与背景地物(如建筑物、土壤)区分度的遥感指数。其公式为: $$ \text{MNDWI} = \frac{\text{Green} - \text{SWIR}}{\text{Green} + \text{SWIR}} $$ 其中,$\text{Green}$为绿光波段(如Landsat 8的B3波段),$\text{SWIR}$为短波红外波段(如Landsat 8的B6波段)[^3]。 #### 二、MNDWI处理流程 1. **数据准备** - 选择包含绿光波段短波红外波段的遥感影像(如Landsat 8/9、Sentinel-2)。 - 在Google Earth Engine(GEE)中加载影像并筛选时间、区域云量[^4]。 2. **影像预处理** - **云掩膜**:使用QA波段或云检测算法(如Fmask)去除云干扰。 - **辐射校正**:转换为地表反射率,消除大气影响[^4]。 3. **指数计算** - 根据公式计算MNDWI值,例如在GEE中实现: ```javascript var mndwi = image.expression('(Green - SWIR) / (Green + SWIR)', { 'Green': image.select('B3'), // Landsat 8绿光波段 'SWIR': image.select('B6') // Landsat 8短波红外波段 }); ``` 4. **阈值分割** - **零阈值法**:直接以MNDWI > 0作为水体与非水体的分界。 - **大津算法(Otsu)**:自动选择最佳阈值,适用于复杂场景[^2]。 5. **结果优化** - 形态学滤波(如腐蚀、膨胀)去除噪声。 - 结合数字高程模型(DEM)排除阴影干扰。 6. **应用分析** - **水域动态监测**:逐年提取水体范围,分析城市化或气候变化影响。 - **洪水灾害评估**:快速识别洪水淹没区域。 #### 三、MNDWI的优势与局限性 - **优势**: - 相比NDWIMNDWI通过引入短波红外波段,有效抑制建筑物土壤的干扰,提升城市水体提取精度[^3]。 - 适用于多源数据(如Sentinel-2、Landsat)。 - **局限性**: - 对深色地物(如阴影)仍可能误判。 - 高浑浊度水体或浅水区可能漏检。 #### 四、实际应用案例 - **GEE平台应用**: - 引用[2]通过ANDWI(类似MNDWI的改进指数)结合大津算法,在WorldViewSentinel影像中实现水体高精度提取,总体准确率达90%以上。 - 引用[4]展示了逐年批量计算MNDWI并分析水域变化的完整流程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Gee Explorer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值