基于GEE洪水发生前后的分析

基本原理为利用水体在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'
});

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

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

  • 14
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
城市热岛是指城市地区由于人为活动所致的高能耗和大量的建筑物、道路等人造热源,导致城市内部温度较郊区和乡村地区明显升高的现象。通过Google Earth Engine(GEE)的数据分析,可以对城市热岛效应进行全面的监测和评估。 首先,利用GEE的遥感影像数据和地表温度监测分析工具,可以实现对城市不同区域的地表温度进行监测。通过比对不同时间段的数据,可以发现城市相对于郊区和乡村地区的地表温度普遍较高,从而揭示出城市热岛效应的分布和程度。 其次,GEE提供的地理信息系统功能可以对城市的土地利用、植被覆盖等因素进行空间分析,从而找出对城市热岛效应有影响的因素。例如,可以发现城市中心区域大量的钢筋混凝土建筑和少量的绿地相比于郊区的绿化率较低,成为导致城市热岛效应的重要原因之一。 最后,利用GEE的大数据处理和可视化功能,可以将监测到的城市热岛效应数据以图表或热力图等形式展示出来,让决策者和公众更直观地了解城市热岛效应的分布和变化趋势,为城市热岛问题的治理提供数据支持和科学依据。 总之,基于GEE的城市热岛效应监测和评估,可以为城市规划和环境保护部门提供科学的数据支持,帮助他们更好地了解城市热岛效应的形成机制和影响因素,制定相应的治理措施和政策。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值