基于 GEE Sentinel-1 数据集提取水体

目录

1 水体提取原理

2 完整代码

3 运行结果


1 水体提取原理

水体提取是地理信息和遥感技术的关键应用之一,对于多个领域都具有重要的应用价值。它有助于更好地管理水资源,保护环境,减少灾害风险,促进可持续发展,以及确保饮用水供应的安全。水体提取技术的不断发展和改进将进一步提高这些应用的效益。

阈值分割方法是 SAR 数据提取水体方法中原理简单,应用最为广泛的。利用水体在 SAR 图像上散射值低,会呈现暗区的特点,通过求解图像直方图的极值点来设定成值,将图像中小于阈值部分标记为非水体大于阈值部分标记为水体。

使用 Google Earth Engine 进行水体提取的优点包括全球数据覆盖、强大的计算能力、多源数据集集成、实时数据更新、、易于使用的编程界面、可视化和交互性、协作和共享以及开放数据访问。这些特点使 GEE 成为处理水体提取和其他地理信息任务的强大工具。

下面简要介绍如何使用 GEE 来提取水体信息,采用 SDWI 指数提取水体,计算公式是 :SDWI = ln(10 * VH * VV) - 8

2 完整代码

// 设置时间范围
var startDate = '2022-01-01';
var endDate = '2022-12-31';

//感兴趣的区域信息
var roi = ee.FeatureCollection('projects/ee-zhangkanghnust/assets/HengShaoLou');

// 使用Sentinel-1数据集
var s1Collection = ee.ImageCollection('COPERNICUS/S1_GRD')
    .filterBounds(roi)
    .filterDate(startDate, endDate)
    .filter(ee.Filter.listContains('transmitterReceiverPolarisation', 'VV'))
    .filter(ee.Filter.eq('instrumentMode', 'IW'));

// 定义SDWI计算函数
var calculateSDWI = function(image) {
    var XVH = image.select('VH');
    var XVV = image.select('VV');
    return image.expression('log(10 * VV * VH) - 8', {'VV': XVV, 'VH': XVH}).rename('SDWI');
};

// 计算SDWI
var s1SDWI = s1Collection.map(calculateSDWI);

// 合并SDWI图层
var sdwiComposite = s1SDWI.median().clip(roi);
Map.addLayer(sdwiComposite);

// 定义水体掩膜
var waterMask = sdwiComposite.gt(0).clip(roi);

// 可视化水体掩膜
var visParams = {
    min: 0,
    max: 1,
    palette: ['FFFFFF', '0000FF'] // 蓝色表示水体,白色表示非水体
};

// 在地图上显示水体掩膜
Map.centerObject(roi, 10);
Map.addLayer(waterMask, visParams, 'Water Mask');
Map.addLayer(roi, {}, "roi");

3 运行结果

研究区范围

哨兵1号影像

水体提取结果

叠加显示结果
### 使用 GEE 提取遥感影像的光谱特征曲线 #### 准备工作 为了从遥感影像提取光谱特征曲线,在 Google Earth Engine (GEE) 中可以利用其强大的 JavaScript API 来完成这一任务。首先,确保已经安装了必要的开发环境,并登录到了 GEE 账户。 #### 加载影像集合与定义区域 加载所需的卫星影像数据集,并指定感兴趣的地理空间位置作为分析对象。这一步骤对于后续的操作至关重要,因为所有的计算都将基于选定的位置来进行[^1]。 ```javascript // 定义一个点位用于测试 var point = ee.Geometry.Point([longitude, latitude]); // 加载 Landsat 8 表面反射率产品 var collection = ee.ImageCollection('LANDSAT/LC08/C01/T1_SR') .filterBounds(point) .sort('CLOUD_COVER', false) .first(); ``` #### 提取时间序列数据 针对特定地点的时间序列光谱信息可以通过 `reduceRegion` 方法来实现。此方法允许用户在一个给定区域内聚合像元值,从而获得该地区的平均光谱响应特性。这里以单个点为例说明如何获取不同波段下的反射率数值变化情况。 ```javascript // 设置要观察的日期范围 var startDate = 'YYYY-MM-DD'; var endDate = 'YYYY-MM-DD'; // 创建按月过滤后的图像集合 var filteredCollection = ee.ImageCollection('LANDSAT/LC08/C01/T1_SR') .filterDate(startDate, endDate); // 对于每一个图像应用 reduceRegions 计算均值 var timeSeries = filteredCollection.map(function(image){ var means = image.reduceRegion({ reducer: ee.Reducer.mean(), geometry: point, scale: 30 // 根据传感器调整分辨率 }); return ee.Feature(null, { date: image.date().format(), blue: means.get('B2'), green: means.get('B3'), red: means.get('B4'), nir: means.get('B5')}); }); print(timeSeries); ``` #### 可视化光谱特征曲线 最后一步是将上述得到的数据绘制成图表形式以便直观展示。借助于 GEE 自带的地图绘制功能或是导出 CSV 文件再用其他软件(如 Excel 或 Python 的 Matplotlib 库)进行进一步加工处理都是可行的选择之一[^2]。 ```javascript // 将 FeatureCollection 转换为客户端列表 var list = timeSeries.toList(100).getInfo(); // 绘制光谱特征曲线 ui.Chart.feature.byFeature({features:timeSeries, property:'date'}) .setChartType('LineChart') .setOptions({ title: 'Spectral Signature Over Time', hAxis: {title: 'Time'}, vAxis: {title: 'Reflectance'} }) .addToUI(); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值