Google Earth Engine(GEE)计算NDFI和AWEI

今天来简单分享下如何在GEE计算归一化差分洪水指数(NDFI)和自动水体提取指数AWEI

目标:

在GEE计算归一化差分洪水指数(NDFI)和自动水体提取指数AWEI,并进行对比分析

以武汉市为研究区

GEE实现代码:

var imageCollection = ee.ImageCollection("COPERNICUS/S2_SR_HARMONIZED"),
    roi = ee.FeatureCollection("users/lilei655123/WUhan");
Map.centerObject(roi,7)
var styling = {color:"red",fillColor:"00000000"};
Map.addLayer(roi.style(styling),{},"geometry")


var image = imageCollection       // 加载哨兵2号的数据
.filterDate('2020-01-01', '2020-12-10')
.filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 10)) //最大云量为10%,以获得清晰的图像
.median();


//RGB可视化
 var rgbVis = {
  min: 0,
  max: 3000,
  bands: ['B4', 'B3', 'B2'],
};


// 按研究区裁剪
var Khartum = image.clip(roi);
Map.addLayer (Khartum, rgbVis, 'RGB')
  var palette = ['#0000FF'];
 // 计算NDFI
 //归一化差分洪水指数(NDFI)
 var ndfi = Khartum.normalizedDifference(['B4', 'B12'])
// 尝试哪种阈值能给NDFI带来好的结果
var ndfiMasked = ndfi.updateMask(ndfi.gte(0));
Map.addLayer(ndfiMasked, {min: 0, max: 1, palette: palette}, '默认阈值为0的NDFI');
var ndfiMasked2 = ndfi.updateMask(ndfi.gte(0.1));
Map.addLayer(ndfiMasked2, {min: 0, max: 1, palette: palette}, '阈值为0.1的NDFI');
// 计算 AWEI
//自动水体提取指数AWEI
 var awei = Khartum.expression('(blue + 2.5 * green - 1.5 * (nir - swir1) - (0.25 * swir2))/(blue + green + nir + swir1 + swir2)' ,{
  'green':Khartum.select('B3'),
  'blue':Khartum.select('B2'),
  'nir':Khartum.select('B8'),
  'swir1':Khartum.select('B11'),
  'swir2':Khartum.select('B12')
}).rename('AWEI');
// 可视化 AWEI
var visAwei = {
  min: 0,
  max: 1,
  bands: ['AWEI'],
  palette: ['blue']
};
Map.setCenter(114.35, 30.64, 9);
// 尝试哪种阈值能给NDFI带来好的结果
var aweiMasked = awei.updateMask(awei.gte(0.6)); // 0.6是默认设置的阈值
Map.addLayer(aweiMasked, visAwei, '标准阈值为0.6的AWEI');
var aweiMasked2 = awei.updateMask(awei.gte(0.67)); // 阈值为0.67的AWEI
Map.addLayer(aweiMasked2, visAwei, '标准阈值为0.67的AWEI');
// 设置标题
Map.add(ui.Label(
    '测试水指数AWEI和NDFI的适用性',  {
      fontWeight: 'bold', BackgroundColor: 'FBF9F5',fontSize: '14px'}));      
    // 分类的图例  
 // 定义图例内容
var names = ['Wasser'];
var values = [ '1'];
var legendsPalette = ['0000FF'];
// 设置面板的位置
var legend = ui.Panel({style: { position: 'bottom-left', padding: '8px 15px'}}); 
// 图例标题和视觉化的布局
var legendTitle = ui.Label({value: 'Indizes (AWEI & NDFI)',style: {
  fontWeight: 'bold', fontSize: '18px', margin: '0 0 4px 0', padding: '0' }}); 
legend.add(legendTitle); 
 // 对图例面板进行可视化设置
var makeRow = function(color, name) {
  var colorBox = ui.Label({
    style: {
      backgroundColor: '#' + color, padding: '8px',margin: '0 0 4px 0'} });
  var description = ui.Label({
    value: name, style: {margin: '0 0 4px 6px'}});
  return ui.Panel({
    widgets: [colorBox, description],layout: ui.Panel.Layout.Flow('horizontal')})}; 
// 在图例中添加名称和相应的颜色
for (var i = 0; i < 1; i++) {
  legend.add(makeRow(legendsPalette[i], names[i]));
  }  
//  在地图上添加图例
Map.add(legend);

运行结果如下:

22239fc5c7bc17721f26247de991c57f.png

武汉市2020年RGB显示

bb5c5c06f5ee913203fbff16980fdb2d.png

默认阈值为0的NDFI显示

62878bbeef8042cd76d2d8ab2dc0c734.png

默认阈值为0.1的NDFI显示

991d84e46e7fb8cd9cc69ec7677a22dc.png

标准阈值为0.6的AWEI显示

8fd2efb5804ea2f672ef7f508fa56e45.png

标准阈值为0.67的AWEI显示

可以明显得看出,当两种指数阈值设定不同时,水体的面积有很大的变化

感谢关注,欢迎转发!

声明:仅供学习使用!

GEE demo:

https://code.earthengine.google.com/5a2a831b38d346414894e55f0436207b

希望关注的朋友们转发,如果对你有帮助的话记得给小编点个赞或者在看

## ****更多内容请关注微信公众号“生态遥感监测笔记”**

  • 6
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

生态遥感监测笔记

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

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

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

打赏作者

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

抵扣说明:

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

余额充值