今天来简单分享下如何在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);
运行结果如下:
武汉市2020年RGB显示
默认阈值为0的NDFI显示
默认阈值为0.1的NDFI显示
标准阈值为0.6的AWEI显示
标准阈值为0.67的AWEI显示
可以明显得看出,当两种指数阈值设定不同时,水体的面积有很大的变化
感谢关注,欢迎转发!
声明:仅供学习使用!
GEE demo:
https://code.earthengine.google.com/5a2a831b38d346414894e55f0436207b
希望关注的朋友们转发,如果对你有帮助的话记得给小编点个赞或者在看!
## ****更多内容请关注微信公众号“生态遥感监测笔记”**