简介

在本篇博客中,我们将通过Google Earth Engine (GEE) 分析特定区域内的降水量异常。利用UCSB-CHG提供的CHIRPS(Climate Hazards Group InfraRed Precipitation with Station data)数据集,我们可以监测2000年至2020年期间的降水量变化。

背景知识

CHIRPS数据集

CHIRPS数据集是一个高分辨率的全球降水量产品,它结合了红外估算和地面站数据,提供了每日降水量估计。

降水量异常

降水量异常指的是与长期平均降水量相比的偏差,这可以指示干旱或过量降水事件。

完整代码

// 定义研究区域的坐标点
var cor = [
  [54.04610024292115, 36.26824729036319],
  [56.30928383667115, 36.26824729036319],
  [56.30928383667115, 37.7942120428063],
  [54.04610024292115, 37.7942120428063],
  [54.04610024292115, 36.26824729036319]
];

// 创建多边形区域
var roi = ee.Geometry.MultiPolygon(cor);

// 将多边形添加到地图上
Map.addLayer(roi, {color: 'red'});

// 定义时间范围
var time_start = '2000';
var time_end = '2020';

// 创建CHIRPS图像集合并筛选数据
var chirps = ee.ImageCollection("UCSB-CHG/CHIRPS/DAILY")
  .filterDate(time_start, time_end);

// 定义一个函数来创建时间序列的图像集合
function temporal_collection(collection, start, count, interval, unit) {
  var seq = ee.List.sequence(0, ee.Number(count).subtract(1));
  var origin_date = ee.Date(start);
  return ee.ImageCollection(seq.map(function(i) {
    var start_date = origin_date.advance(ee.Number(interval).multiply(i), unit);
    var end_date = origin_date.advance(ee.Number(interval).add(1).multiply(i), unit);
    return collection.filterDate(start_date, end_date).sum()
      .set('system:time_start', start_date.millis())
      .set('system:time_end', end_date.millis());
  }));
}

// 创建月降水量图像集合
var monthly = temporal_collection(chirps, time_start, 240, 1, 'month');

// 计算月降水量平均值
var pr_mean = monthly.mean();

// 将平均降水量图层添加到地图上
Map.addLayer(pr_mean.clip(roi), {min: 0, max: 10, palette: ['blue', 'green', 'yellow']}, 'Mean Precipitation');

// 计算降水量异常
var anomaly = monthly.map(function(img) {
  return img.subtract(pr_mean)
    .copyProperties(img, img.propertyNames());
});

// 打印降水量异常的图表
print(
  ui.Chart.image.series({
    imageCollection: anomaly,
    region: roi,
    reducer: ee.Reducer.mean(),
    scale: 5000,
    xProperty: 'system:time_start'
  }).setChartType('ColumnChart')
);

// 将2010年的降水量异常图层添加到地图上
Map.addLayer(anomaly.filterDate('2010', '2011').toBands().clip(roi), {min: -5, max: 5, palette: ['red', 'yellow', 'green']}, 'Precipitation Anomaly 2010');

// 导出2010年的降水量异常图像到Google Drive
Export.image.toDrive({
  image: anomaly.filterDate('2010', '2011').toBands().clip(roi).float(),
  description: 'Precipitation Anomaly 2010',
  scale: 5000,
  region: roi,
  folder: 'Precipitation',
  crs: 'EPSG:4326'
});
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72.
  • 73.
  • 74.

代码详解

1. 定义研究区域

创建一个多边形区域roi,用于限定分析的地理范围。

2. 创建CHIRPS图像集合

获取CHIRPS数据集,并根据指定的时间范围筛选图像。

3. 时间序列图像集合

定义temporal_collection函数,用于生成按月汇总的降水量图像集合。

4. 计算月降水量平均值

使用mean方法计算整个时间序列的平均月降水量。

5. 计算降水量异常

通过从每月的降水量中减去平均值来计算降水量异常。

6. 可视化降水量异常

使用ui.Chart.image.series打印降水量异常的图表,并将其添加到地图上。

7. 导出数据

将2010年的降水量异常图像导出到Google Drive。

结论

本教程展示了如何使用GEE分析特定区域内的降水量异常。通过CHIRPS数据集,我们能够监测和可视化降水量的变化趋势,这对于理解气候变化和水资源管理至关重要。

进一步探索

GEE是一个强大的平台,可以用来分析各种环境和气候变化相关的问题。在后续的教程中,我们将继续探索GEE在不同领域的应用。