基本原理为利用水体在SAR散射系数弱的特点进行变化检测(发生洪水时的影像减去洪水前的影像),这里以2020年我国的长江流域的鄱阳湖洪水灾害为例。

第一步:参数设置

// ==========时间设置===========
// 洪水发生前的影像时间段
var before_start= '2020-04-01';
var before_end='2020-04-10';// 洪水发生后的影像时间段
var after_start='2020-06-10';
var after_end='2020-06-23';// Sentinel - 1 SAR极化方式设置, 这里选用 VH ,也可以使用 VV
var polarization = "VH";// 设置轨道方式,有上轨道和下轨道,根据研究区的数据有无选择
// 这里选择ASCENDING, 在有数据的情况下也可选择DESCENDING
var pass_direction = "ASCENDING"; // ASCENDING// 设置变化的阈值,由于基本原理是利用SAR数据在洪水变化前后的差异,因此
// 要得到洪水的范围需要设置阈值j进行分割,这里选择 1.25, 也可以自己设置
var difference_threshold = 1.25;

第二步:数据选择与预处理

// 选择研究区,可以手动画矢量范围,也可以使用资产中的研究去边界
// 为方便运行,这里以代码的形式展现, 范围如下图所示
var geometry = ee.Geometry.Polygon([[115.17313144703087,28.262015660704566],[117.30997226734337,28.262015660704566],[117.30997226734337,29.94180796981419],[115.17313144703087,29.94180796981419],[115.17313144703087,28.262015660704566]]);
var aoi = ee.FeatureCollection(geometry);// 选择SAR影像
var collection= ee.ImageCollection('COPERNICUS/S1_GRD').filter(ee.Filter.eq('instrumentMode','IW')).filter(ee.Filter.listContains('transmitterReceiverPolarisation', polarization)).filter(ee.Filter.eq('orbitProperties_pass',pass_direction)) .filter(ee.Filter.eq('resolution_meters',10)).filterBounds(aoi).select(polarization);// 筛选洪水前后的SAR数据// 洪水发生前
var before_collection = collection.filterDate(before_start, before_end);
// 洪水发生后
var after_collection = collection.filterDate(after_start,after_end);// 对筛选的数据进行镶嵌和裁减
var before = before_collection.mosaic().clip(aoi);
var after = after_collection.mosaic().clip(aoi);// 对数据进行滤波
// 设置滤波半径
var smoothing_radius = 50;
// 应用滤波
var before_filtered = before.focal_mean(smoothing_radius, 'circle', 'meters');
var after_filtered = after.focal_mean(smoothing_radius, 'circle', 'meters');// 显示影像
Map.centerObject(aoi,8);
Map.addLayer(before_filtered, {min:-25,max:0}, 'Before Flood',0);
Map.addLayer(after_filtered, {min:-25,max:0}, 'After Flood',1);

研究区范围:

洪水发生前:

洪水发生时:

第三步:洪水范围绘制

// 利用洪水发生时的影像减去洪水发生前的影像
var difference = after_filtered.divide(before_filtered);// 应用预定义的差分阈值并创建泛滥范围掩膜
var threshold = difference_threshold;
var difference_binary = difference.gt(threshold);
var difference_binary = difference_binary.updateMask(difference_binary.eq(1))
// 计算像素的连通性,以消除那些连接到8个或更少邻居的像素
// 这一操作降低了洪水范围的噪音(椒盐现象-小碎点)
var connections = difference_binary.connectedPixelCount()//.reproject(difference.projection(), null, 10);
var flooded = difference_binary.updateMask(connections.gte(8));//  去除上述洪水淹没范围中坡度大于5度的区域
// 计算坡度
var DEM = ee.Image('WWF/HydroSHEDS/03VFDEM');
var terrain = ee.Algorithms.Terrain(DEM);
var slope = terrain.select('slope');// 最终的洪水淹没范围
var flooded = flooded.updateMask(slope.lt(5));
Map.addLayer(flooded,{palette:"0000FF"},'Flooded areas');

第四步:计算洪水面积

// 计算洪水面积
// 将每个像素转化为像元面积
var flood_pixelarea = flooded.select(polarization).multiply(ee.Image.pixelArea());// 统计所有像元的和,默认的面积是 ㎡
var flood_stats = flood_pixelarea.reduceRegion({reducer: ee.Reducer.sum(),              geometry: aoi,scale: 10, bestEffort: true // 为true时可以减少计算时间});// 将 平方米转化为 公顷
var flood_area_ha = flood_stats.getNumber(polarization).divide(10000).round();// 四舍五入// 显示淹没范围面积结果print('area/ha', flood_area_ha);

第五步: 导出计算结果fe

// 导出栅格格式 tif
Export.image.toDrive({image: flooded, description: 'Flood_extent_raster',fileNamePrefix: 'flooded',region: aoi, maxPixels: 1e10
});// 导出shp格式
// 栅格转矢量
var flooded_vec = flooded.reduceToVectors({scale: 10,geometryType:'polygon',geometry: aoi,eightConnected: false,bestEffort:true,tileScale:2,
});// 导出shp结果
Export.table.toDrive({collection:flooded_vec,description:'Flood_extent_vector',fileFormat:'SHP',fileNamePrefix:'flooded_vec'
});

我的分享就到这里啦,如果以上对您有用的话还希望三连支持一下哦~~~~~

您的鼓励就是我最大的动力!!!!!!

基于GEE洪水发生前后的分析相关推荐

  1. 基于HEC-RAS数值模拟与GIS水文分析技术的洪水危险性及风险评估

    基于HEC-RAS数值模拟与GIS水文分析技术的洪水危险性及风险评估 直播时间:10月30日-31日   11月6日(3天) 教学特色: 1.原理深入浅出的讲解: 2.技巧方法讲解,提供所有案例数据及 ...

  2. 付力力: 基于 ImpalaS 构建实时用户行为分析引擎

    本文来自神策数据联合创始人&首席架构师付力力在 QCon 北京 2017 年全球软件开发者大会上的精彩分享,主题是"基于 ImpalaS 构建实时用户行为分析引擎". 付力 ...

  3. python文本热点问题挖掘_基于文本挖掘的网络热点舆情分析

    基于文本挖掘的网络热点舆情分析 罗怡薇,张科伟 [摘 要] 爬取豆瓣上的网络新闻热点,获取了相关文本数据,运用文本挖掘对 网络热点进行了分析,进而达到网络热点舆情分析.监测的目的. [期刊名称] 内蒙 ...

  4. 基于API HOOK的软件行为分析系统

    基于API HOOK的软件行为分析系统 目录 软件安全课程设计 1 基于API HOOK的软件行为分析系统 1 一.课程设计题目 1 基于API HOOK的软件行为分析系统 1 二.课程编码:1306 ...

  5. 【期权系列】基于偏度指数的择时分析

    [期权衍生指标系列]基于偏度指数的择时分析 本篇文章是基于研究报告的复现作品,旨在记录个人的学习过程和复现过程中的一些思路. 感谢中信期货研究员前辈的宝贵思路. 一.偏度指数 1.偏度指数简介 偏度是 ...

  6. matlab中汽车刹车,基于Matlab的汽车制动性分析.doc

    基于Matlab的汽车制动性分析 ***大学 毕业设计 题 目 基于Matlab的汽车制动性分析 专 业 机械设计制造及其自动化(汽车方向) 班 级 姓 名 学 号 指导教师 职 称 基于Matlab ...

  7. 信息管理与信息系统专业的来龙去脉——基于六所大学个案的分析(转)

    信息管理与信息系统专业的来龙去脉--基于六所大学个案的分析(转) 信息管理与信息系 2011-04-02 摘 要 在论文的前两部分,作者对信息管理与信息系统专业学科归属作了梳理,并通过对中国六所大学的 ...

  8. 基于数据仓库的证券营业部客户细分分析

    基于数据仓库的证券营业部客户细分分析 目录 内容摘要 ----------------------- 2 引    言  ----------------------  3 一.数据仓库和聚类分析的概 ...

  9. python数据挖掘课程设计——基于数据挖掘的森林火灾预测分析(数据代码+数据分析+数据可视化展示)

    基于数据挖掘的森林火灾预测分析 [摘要]随着全球范围性的温室效应,全球气温正逐步升高,为对抗温室效应,森林已经成为我们急需保护的资源,但是火灾时刻威胁着森林资源.为了帮助对抗温室效应.保护森林,本研究 ...

最新文章

  1. javaweb:servlet
  2. Java Calendar 获取时间为明天的上午10点
  3. Go的channel与map是否并发安全以及原因
  4. java 多个 panel_java – 在JFrame中组织多个JPanel的好方法是...
  5. gzip压缩文件解压文件(gz文件)
  6. 二分查找——A-B数对(洛谷 P1102)
  7. 音响白噪音测试软件,白噪音软件哪个好_电脑上的白噪音软件_什么白噪音软件比较好用...
  8. [Hacking]国内首届黑客大会COG2011现场报道(补)
  9. 南昌工程学院c语言试题,南昌工程学院概率论与数理统计试题库部分题目
  10. 用matlab产生hdb3码,MATLAB仿真 HDB3码程序
  11. 软考数据库-无损联接分解
  12. gromacs 安装_GROMACS安装
  13. 2018互联网月饼哪家壕,阿里腾讯网易走着瞧
  14. 苹果公布Apple Watch手表新专利,可穿戴设备少不了Find My技术
  15. 2021支付宝五福活动 集五福攻略大全
  16. 如何让青少年远离“网络成瘾”?
  17. python3.x程序设计基础周元哲答案_周元哲
  18. 机械学习房价预测实战(mse 回归 交叉验证)
  19. 计算机大赛剪辑的视频,视频剪辑大赛
  20. 新生赛第一题:dls的黑粉

热门文章

  1. 【问链财经-EOS公开课】 第十八课 史上最全EOS 资源汇总
  2. 【STM32F407】第5章 RTX5操作系统移植(MDK AC6)
  3. 计算机基础知识试题答案6,计算机基础知识试题及答案
  4. 手机无线网卡最高支持到866Mbps
  5. Android 对话框(Dialogs)
  6. 【BZOJ4379】[POI2015]Modernizacja autostrady 树形DP
  7. 若依管理系统windows本地运行教程
  8. 十五个闭目养神、调养身心的方法
  9. 血色冲锋队洛谷P1332(福建省历届夏令营)
  10. LeetCode 276:栅栏涂色