目录
探索动态水面范围 (DSWE)
USGS contacts: Chris Soulard, Jessica Walker from US Geological Survey (USGS)
美国地质调查局(USGS)联系人:Chris Soulard、Jessica Walker
理解地表水动态对于有效的水资源管理、洪水制图、生态研究和气候变化分析至关重要。动态地表水范围(DSWE)数据集提供了从陆地卫星图像生成的可靠、可重复和一致的水体存在地图。最初由 Jones(2015 年)引入,DSWE 已持续改进,现在利用 Google Earth Engine(GEE)的力量提供月度地表水合成图。有关代码输出的详细信息,请参阅美国地质调查局官方源代码存档。
在本教程中,我们将:
- 访问和预处理陆地卫星图像以生成 DSWE 图层。
- 理解 DSWE 分类和置信水平。
- 可视化月度 DSWE 合成图。
- 导出数据以进行进一步分析。
引用
Walker JJ, Waller EK, Kreitler JR, Petrakis RE, Soulard CE. (2025). DSWE_GEE v2.0.0 Software release. U.S. Geological Survey. DOI: https://doi.org/10.5066/P14CF2B2.
Landsat DSWE Google Earth Engine code originally developed for this paper:
Walker, J.J., Soulard, C.E. and Petrakis, R.E., 2020. Integrating stream gage data and Landsat imagery to complete time-series of surface water extents in Central Valley, California. International Journal of Applied Earth Observation and Geoinformation, 84, p.101973.
MODIS DSWE Google Earth Engine code originally developed for this paper:
Soulard, C.E., Waller, E.K., Walker, J.J., Petrakis, R.E. and Smith, B.W., 2022. DSWEmod—The production of high‐frequency surface water map composites from daily MODIS images. JAWRA Journal of the American Water Resources Association, 58(2), pp.248-268.
教程大纲
1. 访问和准备 Landsat 数据
DSWE 分析使用 Landsat 卫星图像数据集,特别是 Landsat 4 到 Landsat 9,时间跨度从 1982 年至今。在应用 DSWE 方法之前,图像必须进行预处理以保持反射率的一致性,并且要消除云污染。
步骤:
- 定义你的兴趣区域(AOI)和日期范围。
- 加载 Landsat Collection 2 影像。
- 应用缩放和云掩膜。
- 计算地形和太阳几何指数(例如,坡度阴影)。
这是用于访问和预处理数据的 Earth Engine JavaScript 代码片段:
// Define your date range (within Landsat availability)
var startdate = ee.Date('2000-08-01');
var enddate = ee.Date('2000-10-31');
// Define your AOI (user-defined polygon or drawn geometry)
var aoi = ee.Geometry.Polygon([
[-113.285, 40.423],
[-111.318, 40.423],
[-111.318, 41.952],
[-113.285, 41.952],
[-113.285, 40.423]
]);
// Load and preprocess Landsat collections (example for Landsat 8)
var ls8 = ee.ImageCollection('LANDSAT/LC08/C02/T1_L2')
.filterBounds(aoi)
.filterDate(startdate, enddate)
.map(function(img) {
var scaled = img.select('SR_B.*').multiply(0.0000275).add(-0.2);
var qaMask = img.select('QA_PIXEL').bitwiseAnd(parseInt('111101', 2)).neq(0);
return scaled.updateMask(qaMask);
});
// Merge multiple collections (if using multiple Landsat sensors)
2. 生成 DSWE 层
DSWE 算法根据多个光谱指数和来自 Landsat 波段的位逻辑测试对地表水存在进行分类。输出是一个分类图层,表示地表水存在的不同置信度。
DSWE 类别:
0
- Not water0
- 非水1
- High-confidence water
高置信度水体2
- Moderate-confidence water
中置信度水体3
- Partial surface water pixel
部分水面像素4
- Low-confidence water or wetland
低置信度水体或湿地9
- Cloud, cloud shadow, or snow
9
- 云、云阴影或雪
这是 GEE 中如何进行分类的:
// DSWE indices calculation (e.g., MNDWI, NDVI, AWEsh)
var calculateIndices = function(img) {
var ndvi = img.normalizedDifference(['SR_B5', 'SR_B4']).rename('ndvi');
var mndwi = img.normalizedDifference(['SR_B3', 'SR_B6']).rename('mndwi');
return img.addBands([ndvi, mndwi]);
};
var indexedCollection = ls8.map(calculateIndices);
// Apply DSWE decision logic (simplified example)
var dsweLayer = indexedCollection.map(function(img) {
var water = img.select('mndwi').gt(0.124).rename('dswe');
return water.set('system:time_start', img.get('system:time_start'));
});
3. 创建月度 DSWE 合成图
月度合成图有助于提供稳定且具有代表性的地表水范围图像。这些合成图处理多个观测结果,并优先考虑高置信度的水像元。
如何创建月度合成图:
// Generate monthly composites
var months = ee.List.sequence(0, enddate.difference(startdate, 'month').subtract(1));
var monthlyDSWE = ee.ImageCollection.fromImages(months.map(function(monthOffset) {
var start = startdate.advance(monthOffset, 'month');
var end = start.advance(1, 'month');
var monthly = dsweLayer.filterDate(start, end).max(); // Example using max confidence
return monthly.set('month', start.format('YYYY-MM'));
}));
print('Monthly DSWE Composites:', monthlyDSWE);
4. 可视化 DSWE 图层
有效地可视化 DSWE 图层需要清晰的符号来区分水的置信度类别。以下是一个可视化示例:
// DSWE visualization parameters
var dsweViz = {min:0, max:9, palette:['000000', '002ba1', '6287ec', '77b800', 'c1bdb6', 'ffffff']};
// Add the monthly composite layer to the map
Map.centerObject(aoi, 10);
var sampleMonth = monthlyDSWE.first();
Map.addLayer(sampleMonth, dsweViz, 'Monthly DSWE');
5. 导出 DSWE 数据
DSWE 图层可以导出以进行进一步的 GIS 分析或研究应用:
Export.image.toDrive({
image: sampleMonth,
description: 'DSWE_Monthly_Composite',
folder: 'EarthEngineExports',
scale: 30,
region: aoi,
crs: 'EPSG:5070',
maxPixels: 1e13
});
全部代码
// Define your date range (within Landsat availability)
var startdate = ee.Date('2015-08-01');
var enddate = ee.Date('2018-10-31');
// Define your AOI (user-defined polygon or drawn geometry)
var aoi = ee.Geometry.Polygon([
[-113.285, 40.423],
[-111.318, 40.423],
[-111.318, 41.952],
[-113.285, 41.952],
[-113.285, 40.423]
]);
// Load and preprocess Landsat collections (example for Landsat 8)
var ls8 = ee.ImageCollection('LANDSAT/LC08/C02/T1_L2')
.filterBounds(aoi)
.filterDate(startdate, enddate)
.map(function(img) {
var scaled = img.select('SR_B.*').multiply(0.0000275).add(-0.2);
var qaMask = img.select('QA_PIXEL').bitwiseAnd(parseInt('111101', 2)).neq(0);
return scaled.updateMask(qaMask);
});
// Merge multiple collections (if using multiple Landsat sensors)
// DSWE indices calculation (e.g., MNDWI, NDVI, AWEsh)
var calculateIndices = function(img) {
var ndvi = img.normalizedDifference(['SR_B5', 'SR_B4']).rename('ndvi');
var mndwi = img.normalizedDifference(['SR_B3', 'SR_B6']).rename('mndwi');
return img.addBands([ndvi, mndwi]);
};
var indexedCollection = ls8.map(calculateIndices);
// Apply DSWE decision logic (simplified example)
var dsweLayer = indexedCollection.map(function(img) {
var water = img.select('mndwi').gt(0.124).rename('dswe');
return water.set('system:time_start', img.get('system:time_start'));
});
// Generate monthly composites
var months = ee.List.sequence(0, enddate.difference(startdate, 'month').subtract(1));
var monthlyDSWE = ee.ImageCollection.fromImages(months.map(function(monthOffset) {
var start = startdate.advance(monthOffset, 'month');
var end = start.advance(1, 'month');
var monthly = dsweLayer.filterDate(start, end).max(); // Example using max confidence
return monthly.set('month', start.format('YYYY-MM'));
}));
print('Monthly DSWE Composites:', monthlyDSWE);
// DSWE visualization parameters
var dsweViz = {min:0, max:9, palette:['000000', '002ba1', '6287ec', '77b800', 'c1bdb6', 'ffffff']};
// Add the monthly composite layer to the map
Map.centerObject(aoi, 10);
var sampleMonth = monthlyDSWE.first();
Map.addLayer(sampleMonth, dsweViz, 'Monthly DSWE');
Export.image.toDrive({
image: sampleMonth,
description: 'DSWE_Monthly_Composite',
folder: 'EarthEngineExports',
scale: 30,
region: aoi,
crs: 'EPSG:5070',
maxPixels: 1e13
});
结论
DSWE 数据集提供了一种先进、一致、高分辨率的方法,用于从太空分析水动态。本教程将指导您使用 Google Earth Engine 访问、预处理、可视化和导出 DSWE 数据,促进水资源管理、洪水检测和生态研究中的实际分析。
Keywords: Dynamic Surface Water Extent (DSWE), Landsat, Google Earth Engine, Monthly Composites, Surface Water Mapping, Flood Monitoring, Visualization, GIS, Remote Sensing.
关键词:动态水面范围(DSWE)、陆地卫星、谷歌地球引擎、月度合成影像、水面测绘、洪水监测、可视化、地理信息系统、遥感。
许可证
This project is licensed under the Creative Commons Zero v1.0 Universal.
本项目根据知识共享零协议 v1.0 通用许可协议授权。