基于 GEE Landsat 与 Sentinel 数据的归一化水体指数 NDWI 计算和水体提取

目录

[1 归一化水体指数(NDWI)](#1 归一化水体指数(NDWI))

[2 完整代码](#2 完整代码)

[3 运行结果](#3 运行结果)

[4 运行结果可视化对比](#4 运行结果可视化对比)


1 归一化水体指数(NDWI)

归一化水体指数(NDWI)是遥感影像分析中常用的指数,主要用于识别和提取水体。NDWI通过比较可见光波段(绿波段)与近红外波段(NIR)的反射率差异,突出水体与非水体区域的区别。水体在近红外波段的反射率较低,而在绿波段的反射率较高,因此NDWI能够有效地识别水域。该指数在水体监测、水资源管理以及环境变化研究中有着广泛应用。

2 完整代码

javascript 复制代码
// 定义研究区域
var studyArea = table;

/**
 * 计算NDWI指数,并将其作为新波段添加到输入图像中
 * @param {ee.Image} image - 输入的影像
 * @param {Array<string>} bands - 用于计算NDWI的波段名称数组
 * @returns {ee.Image} - 添加了NDWI波段的影像
 */
function calculateNDWI(image, bands) {
    var ndwi = image.normalizedDifference(bands).rename('NDWI');
    return image.addBands(ndwi);
}

/**
 * 处理Sentinel - 2影像数据,计算并返回指定时间和区域内的平均NDWI
 * @returns {ee.Image} - Sentinel - 2数据的平均NDWI影像
 */
function processSentinel2() {
    return ee.ImageCollection('COPERNICUS/S2_SR_HARMONIZED')
       .filterDate('2023-03-01', '2023-05-31')
       .filterBounds(studyArea)
       .map(function (image) {
            // 云掩码处理
            var cloudMask = image.select('QA60')
               .bitwiseAnd(1 << 10).eq(0)
               .and(image.select('QA60').bitwiseAnd(1 << 11).eq(0));
            return image.updateMask(cloudMask);
        })
       .map(function (image) {
            return calculateNDWI(image, ['B3', 'B8']);
        })
       .select('NDWI')
       .mean()
       .clip(studyArea);
}

/**
 * 处理Landsat 8影像数据,计算并返回指定时间和区域内的平均NDWI
 * @returns {ee.Image} - Landsat 8数据的平均NDWI影像
 */
function processLandsat8() {
    return ee.ImageCollection('LANDSAT/LC08/C02/T1_L2')
       .filterDate('2023-03-01', '2023-05-31')
       .filterBounds(studyArea)
       .map(function (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);
        })
       .map(function (image) {
            return calculateNDWI(image, ['SR_B3', 'SR_B5']);
        })
       .select('NDWI')
       .mean()
       .clip(studyArea);
}

// 计算Sentinel - 2和Landsat 8数据的NDWI
var sentinel2NDWI = processSentinel2();
var landsatNDWI = processLandsat8();

// 设置地图中心并添加图层
Map.centerObject(studyArea, 10);
Map.addLayer(sentinel2NDWI, { min: -1, max: 1, palette: ['green', 'white', 'blue'] }, 'Sentinel-2 NDWI');
Map.addLayer(landsatNDWI, { min: -1, max: 1, palette: ['green', 'white', 'blue'] }, 'Landsat 8 NDWI');

// 导出Sentinel - 2数据中NDWI大于0的区域
Export.image.toDrive({
    image: sentinel2NDWI.gt(0).selfMask(),
    description: "Water_Bodies_Study_Area_2023_Sentinel2",
    scale: 30,
    region: studyArea,
    fileFormat: 'GeoTIFF',
    maxPixels: 1e9
});

// 导出Landsat 8数据中NDWI大于0的区域
Export.image.toDrive({
    image: landsatNDWI.gt(0).selfMask(),
    description: "Water_Bodies_Study_Area_2023_Landsat8",
    scale: 30,
    region: studyArea,
    fileFormat: 'GeoTIFF',
    maxPixels: 1e9
});

3 运行结果

点击RUN即可下载运行结果

4 运行结果可视化对比

点击RUN下载好运行结果栅格数据,然后利用ArcMap软件打开下载好的数据进行可视化对比,效果如下图所示。
Water_Landsat8
Water_Sentinel2

相关推荐
guts3501 天前
图像篡改数据集下载:COVERAGE、CASIA
python·数据集
前网易架构师-高司机1 天前
带标注的墙面缺陷识别数据集,可识别裂缝,霉变,掉漆起皮,阶梯状裂缝,渗水问题,支持yolo,coco json,pascal voc xml格式
数据集·缺陷·裂缝·渗水·墙面·掉皮·霉变
小仓桑1 天前
【Agent智能体项目实战一】阿里云通义千问兼容 OpenAI 接口实现 AI 对话
人工智能·阿里云·云计算·agent
AI周红伟1 天前
周红伟:豆包大模型的尽头是直播间,豆包开启AI购物内测 电商平台加码“一句话购物”
人工智能·阿里云·云计算·腾讯云·openclaw
威联通安全存储1 天前
某大型食品饮料企业:基于威联通 TS-h1290FX 的中央数据管控与合规实践
大数据·人工智能·云计算
大树881 天前
国产液冷产业链的突破:应对龙虾大模型等终端算力需求激增的倒逼效应
科技·ai·云计算
未来之窗软件服务1 天前
阿里云 page-agent 核心逻辑梳理[AI人工智能(六十一)]—东方仙盟
人工智能·阿里云·云计算·仙盟创梦ide·东方仙盟
武汉唯众智创1 天前
云计算大数据实训平台:从私有云到容器化的教学实现|原理+实操+踩坑+性能全解析
大数据·人工智能·云计算·云计算实训室·大数据实训室·职校云计算大数据实训室建设·职校实训室建设
不吃香菜kkk、1 天前
夜莺n9e+监控K8s集群+自定义监控页面
运维·云原生·云计算
张彦峰ZYF2 天前
阿里云云计算ACA - ACP认证考试模拟试卷二
阿里云·云计算·aca - acp