用GEE追踪青海湖结冰消融全过程:从代码到可视化全解析

青海湖作为中国最大的内陆湖,其季节性结冰与消融过程不仅是区域气候的“晴雨表”,也是生态监测的重要指标。本文将通过Google Earth Engine(GEE)平台,结合Landsat 8/9遥感数据,完整还原青海湖2022-2023年“未结冰—结冰—消融”的全周期变化,并附上可直接运行的代码与可视化成果,适合遥感初学者和生态爱好者参考。

一、研究背景与数据说明

1.1 青海湖结冰消融的科学意义

青海湖位于青藏高原东北部,由于海拔高(约3200米)、气候寒冷,每年冬季会经历完整的“结冰—封冻—消融”过程:

  • 未结冰期(10-11月):湖面保持液态,水体吸热储存能量;
  • 结冰期(12-次年3月):随气温下降,湖岸先结冰,逐步扩展至全湖;
  • 消融期(4-7月):春季气温回升后,冰层从边缘向中心消融,最终完全消失。

这一过程受气温、风力等气候因素影响,通过遥感监测可直观反映区域气候变化对湖泊生态的影响。

1.2 数据选择:Landsat 8/9地表反射率数据

本次使用的遥感数据为Landsat 8和Landsat 9的T1_L2级地表反射率产品(数据集ID:LANDSAT/LC08/C02/T1_L2LANDSAT/LC09/C02/T1_L2),优势在于:

  • 空间分辨率30米:能清晰捕捉湖岸结冰细节;
  • 时间覆盖完整:Landsat 8(2013年至今)与Landsat 9(2021年至今)衔接,可获取连续数据;
  • 预处理完善:已完成大气校正,反射率数据可直接用于可视化。

我们将重点提取红(RED)、绿(GREEN)、蓝(BLUE)三个波段,合成真彩色影像,直观展示湖面结冰状态。

二、GEE代码实现全流程

2.1 核心思路

  1. 定义青海湖边界范围;
  2. 加载Landsat 8/9数据并预处理(云掩膜、波段重命名);
  3. 按“未结冰—结冰—消融”5个阶段,筛选对应月份数据;
  4. 合成月度影像(取当月无云影像的中值);
  5. 可视化并导出结果。

2.2 完整代码与关键步骤解析

第一步:定义研究区域与基础函数
// 青海湖边界(经纬度范围)
var qinghai_lake = ee.Geometry.Polygon([[
  [99.5, 37.3], 
  [100.8, 37.3], 
  [100.8, 36.5], 
  [99.5, 36.5]
]]);

// 云掩膜函数:去除云及云阴影像素
function maskClouds(image) {
   
   
  var qa = image.select('QA_PIXEL'); // 质量控制波段
  // 云(bit3)和云阴影(bit4)的掩码
  var cloudMask = qa.bitwiseAnd(1 << 3).or(qa.bitwiseAnd(1 << 4));
  return image.updateMask(cloudMask.not()); // 保留非云像素
}

// 波段重命名:统一Landsat 8和9的波段名称(便于合并)
function renameBands(image) {
   
   
  return image.select(
    ['SR_B2', 'SR_B3', 'SR_B4', 'SR_B5', 'SR_B6', 'SR_B7'], 
    ['BLUE', 'GREEN', 'RED', 'NIR', 'SWIR1', 'SWIR2']
  );
}

// 真彩色可视化参数(Landsat反射率值范围)
var visParamsTrueColor = {
   
   
  bands: ['RED', 'GREEN', 'BLUE'], // 红、绿、蓝波段合成
  min: 7000,
  max: 22000,
};

关键说明

  • 青海湖边界用多边形定义,后续数据将裁剪至该范围;
  • 云掩膜通过QA_PIXEL波段的云标识位实现,确保影像“无云”;
  • 波段重命名后,Landsat 8和9的数据格式一致,可直接合并处理。<
### 使用Google Earth Engine (GEE) 进行青海湖水文分析的代码示例 以下是一个使用Google Earth Engine (GEE)青海湖进行水文分析的代码示例。此代码主要基于遥感影像数据(如Landsat系列卫星数据)来计算青海湖的水面面积变化。 #### 1. 加载必要的库和数据集 在GEE中,可以使用Landsat系列卫星数据来获取青海湖遥感影像。以下代码展示了如何加载Landsat 8 OLI/TIRS Collection 2 Tier 1数据[^1]。 ```javascript // 定义研究区域:青海湖 var qinghaiLake = ee.Geometry.Rectangle([99.5, 36.5, 101.0, 37.5]); // 加载Landsat 8 OLI/TIRS Collection 2 Tier 1 数据 var dataset = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA') .filterDate('2015-01-01', '2022-12-31') // 设置时间范围 .filterBounds(qinghaiLake); // 筛选覆盖青海湖的影像 ``` #### 2. 计算NDWI指数 归一化差异水体指数(NDWI)是一种常用的遥感指数,用于识别和提取水体信息。以下代码展示了如何计算NDWI并提取青海湖的水体区域[^2]。 ```javascript // 定义NDWI计算函数 function calculateNDWI(image) { var ndwi = image.normalizedDifference(['B3', 'B5']).rename('NDWI'); // 使用绿波段和近红外波段 return image.addBands(ndwi); } // 应用NDWI计算到图像集合 var ndwiCollection = dataset.map(calculateNDWI); // 提取NDWI值大于0的区域作为水体 var waterMask = ndwiCollection.select('NDWI').mean().gt(0); ``` #### 3. 计算青海湖的水面面积 通过掩膜提取水体后,可以进一步计算青海湖的水面面积。以下代码展示了如何实现这一目标[^3]。 ```javascript // 计算水体面积 var scale = 30; // Landsat分辨率(米) var waterArea = waterMask.multiply(ee.Image.pixelArea()) .reduceRegion({ reducer: ee.Reducer.sum(), geometry: qinghaiLake, scale: scale, maxPixels: 1e13 }); print('青海湖水面面积 (平方米):', waterArea.get('NDWI')); ``` #### 4. 可视化结果 为了更好地展示分析结果,可以将水体区域可视化并导出地图[^4]。 ```javascript // 可视化水体区域 Map.centerObject(qinghaiLake, 8); Map.addLayer(waterMask, {min: 0, max: 1, palette: ['blue']}, 'Water Mask'); // 导出水体区域为GeoTIFF文件 Export.image.toDrive({ image: waterMask.updateMask(waterMask), description: 'QinghaiLake_WaterMask', scale: scale, region: qinghaiLake }); ``` --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

遥感AI实战

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值