// 定义研究区域的坐标点
var coordinates = [
[42.000552219688586, 38.18969302118053],
[43.868228000938586, 38.18969302118053],
[43.868228000938586, 39.209978258633186],
[42.000552219688586, 39.209978258633186],
[42.000552219688586, 38.18969302118053]
];
// 创建多边形区域
var roi = ee.Geometry.Polygon(coordinates);
// 将多边形添加到地图上
Map.addLayer(roi, {color: 'red'});
// 定义时间范围
var time_start = '2013-01-01';
var time_end = '2021-12-31';
// 创建Landsat 8图像集合并筛选数据
var landsat = ee.ImageCollection('LANDSAT/LC08/C01/T1')
.filterDate(time_start, time_end)
.filter(ee.Filter.lt('CLOUD_COVER', 10))
.filter(ee.Filter.calendarRange(6, 9, 'month')) // 筛选夏季月份
.filterBounds(roi); // 应用地理范围
// 计算NDWI
var ndwi = landsat.map(function(img) {
var green = img.select('B4').multiply(0.0001).subtract(0.1); // 绿色波段
var nir = img.select('B5').multiply(0.0001).subtract(0.1); // 近红外波段
var ndwi = green.normalizedDifference(nir).rename('ndwi');
return img.addBands(ndwi);
}).median().select('ndwi');
// 应用阈值并创建水体掩膜
var water_mask = ndwi.gte(0.1); // NDWI大于等于0.1的像素被认为是水体
// 将水体掩膜添加到地图上
Map.addLayer(water_mask, {min: 0, max: 1, palette: ['0000FF']}, 'Water Mask');
// 计算水体像素面积(单位:平方米)
var pixel_area = water_mask.multiply(ee.Image.pixelArea());
// 将像素面积添加到地图上
Map.addLayer(pixel_area.clip(roi), {min: 0, max: 1000, palette: ['00FF00']}, 'Pixel Area');
// 计算湖泊面积(单位:平方公里)
var scale = 30; // 定义分析的尺度
var lake_area = pixel_area.reduceRegion({
reducer: ee.Reducer.sum(),
geometry: roi,
scale: scale,
bestEffort: true
}).get('ndwi');
// 将面积从平方米转换为平方公里
var lake_area_km2 = lake_area / 1e6 / 1e6 * scale * scale;
// 打印湖泊面积
print('Lake Area (square kilometers):', lake_area_km2);
我们首先定义了一个多边形区域(Region of Interest, ROI),这是分析湖泊面积的地理范围。坐标点列表表示多边形的顶点,我们使用ee.Geometry.Polygon
来创建这个多边形。
使用Map.addLayer
函数将ROI添加到地图上,使用红色边界线可视化多边形区域。
设置时间范围time_start
和time_end
,用于筛选Landsat 8图像集合中的图像。
使用ee.ImageCollection
获取Landsat 8图像,并应用多个筛选条件:
filterDate
:根据时间范围筛选图像。filter
:选择云量覆盖小于10%的图像。filterBounds
:将图像集合限制在ROI内。使用map
函数遍历图像集合,对每张图像进行处理:
normalizedDifference
函数。使用gte
函数(greater than or equal)设置阈值0.1,创建水体掩膜。
将水体掩膜添加到地图上,使用蓝色可视化水体区域。
使用multiply
函数将水体掩膜与每个像素的面积相乘,得到每个水体像素的面积(单位:平方米)。
将计算得到的像素面积添加到地图上,使用绿色可视化。
使用reduceRegion
函数和ee.Reducer.sum
对ROI内的像素面积求和,得到湖泊的总面积(单位:平方米)。然后将面积转换为平方公里。
使用print
函数打印湖泊的面积。
本教程通过一个具体的代码实例,详细解释了如何在GEE中进行湖泊面积分析。从定义研究区域到计算和可视化结果,我们逐步介绍了每个步骤及其代码实现。希望这个教程能帮助你更好地理解GEE的功能,并激发你在地理空间数据分析领域的探索。