基于Sentinel-1雷达数据的洪水动态监测(附完整GEE代码)
洪水是最常见的自然灾害之一,快速、准确地监测洪水淹没范围及动态变化,对灾情评估和救援决策至关重要。本文将介绍如何利用Google Earth Engine(GEE)平台,基于Sentinel-1合成孔径雷达(SAR)数据,实现洪水的自动化监测与分析。
一、为什么选择Sentinel-1数据监测洪水?
Sentinel-1是欧洲航天局(ESA)发射的雷达卫星,具有以下优势,使其成为洪水监测的理想选择:
- 全天时、全天候工作:不受云雨天气影响,可在洪水发生时的恶劣天气条件下获取数据
- 高空间分辨率:提供10-30米分辨率数据,能清晰识别淹没区域
- 短重访周期:单颗卫星重访周期为12天,双颗卫星协同可实现6天重访
- 对水体敏感:雷达波在水体表面发生镜面反射,回波信号弱(表现为低后向散射值),容易与陆地区分
二、技术流程概述
本研究通过以下步骤实现洪水动态监测:
- 加载研究区域并设置地图显示
- 定义需要监测的三个关键时期(洪水前、洪水期、洪水后)
- 自动获取各时期的Sentinel-1雷达数据
- 利用Otsu算法自动计算水体提取阈值
- 提取各时期的淹没范围并可视化
- 对比分析洪水动态变化
三、完整代码及解析
1. 研究区设置
// 研究区定义(替换为你的研究区资产ID)
var roi = ee.FeatureCollection("projects/ee-hllutlu2024/assets/huaiji");
Map.centerObject(roi, 10); // 将地图中心定位到研究区,缩放级别10
首先需要定义研究区域,这里使用GEE资产中的矢量数据。Map.centerObject
函数用于将地图视图定位到研究区,方便后续可视化查看。
2. 监测时期设置
// 三期目标监测时间与标签(可根据实际洪水过程调整)
var dates = [{date: '2024-06-05', label: '洪水前'}, // 洪水前{date: '2024-06-18', label: '洪水期'}, // 洪水期(峰值阶段){date: '2024-06-30', label: '洪水后'} // 洪水后
];
根据洪水过程设置三个关键监测时间点(已调整为2024年实际可行日期):
- 洪水前:作为基准参考,反映区域正常地表状态
- 洪水期:监测洪水淹没最大范围(建议选择洪水峰值时段)
- 洪水后:评估退水情况及未退水区域
3. Sentinel-1数据获取函数
// 获取Sentinel-1影像(目标日期±2天内最新数据,升轨VV极化)
function getS1VV(date) {var start = ee.Date(date).advance(-2, 'day'); // 开始日期:目标日期前2天var end = ee.Date(date).advance(2, 'day'); // 结束日期:目标日期后2天var imgCol = ee.ImageCollection('COPERNICUS/S1_GRD').filterBounds(roi) // 按研究区过滤.filterDate(start, end) // 按日期范围过滤.filter(ee.Filter.listContains('transmitterReceiverPolarisation', 'VV')) // 选择VV极化.filter(ee.Filter.eq('orbitProperties_pass', 'ASCENDING'))