第十三篇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);
}

三、结果查看

(一)提取结果查看

(二)导出任务查看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Gee Explorer

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

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

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

打赏作者

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

抵扣说明:

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

余额充值