简介

在本篇博客中,我们将使用Google Earth Engine (GEE) 对长时间序列的风速数据进行分析。通过ERA5再分析数据集,我们可以计算2010年至2024年间的平均风速,并与1980年至2020年的风速数据进行比较。

背景知识

ERA5数据集

ERA5是ECMWF(European Centre for Medium-Range Weather Forecasts,欧洲中期天气预报中心)提供的全球气候再分析数据集,具有高空间和时间分辨率。

风速计算

风速是风向的两个分量(u和v分量)的矢量合成,通常使用平方和的平方根来计算。

完整代码

// 定义研究区域的坐标点
var cor = [
  [52.24091120672926, 28.94538993989301],
  [59.00848933172926, 28.94538993989301],
  [59.00848933172926, 33.89295282767506],
  [52.24091120672926, 33.89295282767506],
  [52.24091120672926, 28.94538993989301]
];

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

// 加载ERA5数据集并选择风速分量
var era5 = ee.ImageCollection("ECMWF/ERA5/DAILY")
  .select('u_10m', 'v_10m')
  .filterDate('2010', '2024');

// 计算风速
var windspeed = era5.map(function (img) {
  var u = img.select('u_10m');
  var v = img.select('v_10m');
  var wind_speed = u.pow(2).add(v.pow(2)).sqrt().rename('wind_speed');
  return wind_speed.copyProperties(img, img.propertyNames());
});

// 绘制风速时间序列图表
print(
  ui.Chart.image.series(windspeed, roi, ee.Reducer.mean(),
    27000, 'system:time_start')
);

// 加载1980年至2020年的ERA5数据集
var wind40 = ee.ImageCollection("ECMWF/ERA5/DAILY")
  .select('u_10m', 'v_10m')
  .filterDate('1980', '2020');

// 计算风速
var windspeed40 = wind40.map(function (img) {
  var u = img.select('u_10m');
  var v = img.select('v_10m');
  var wind_speed = u.pow(2).add(v.pow(2)).sqrt().rename('wind_speed');
  return wind_speed.copyProperties(img, img.propertyNames());
});

// 定义函数提取风速平均值和日期
function get_value(img) {
  var date = ee.Date(img.get('system:time_start')).format().slice(0, 10);
  var value = img.reduceRegion({
    reducer: ee.Reducer.mean(),
    geometry: roi,
    scale: 27000
  }).get('wind_speed');
  return [date, value];
}

// 提取风速数据列表
var size = windspeed40.size();
var windlist = windspeed40.toList(size).map(get_value);

// 将风速数据转换为特征集合
var wind_feature = ee.FeatureCollection(windlist.map(function (el) {
  el = ee.List(el);
  return ee.Feature(null, {
    'date': el.get(0),
    'windspeed': el.get(1).getInfo()
  });
}));

// 导出风速数据表至Google Drive
Export.table.toDrive({
  collection: wind_feature,
  description: 'windspeed40',
  fileFormat: 'CSV'
});
  • 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. 加载ERA5数据集

加载ERA5数据集,并选择风速的u和v分量。

3. 计算风速

使用平方和的平方根公式计算风速,并为结果重命名。

4. 绘制风速时间序列图表

使用ui.Chart.image.series绘制风速的时间序列。

5. 加载更长时间序列的ERA5数据集

加载1980年至2020年的ERA5数据集,用于更长时间尺度的风速分析。

6. 提取风速平均值和日期

定义函数get_value提取每张图像的日期和平均风速。

7. 导出风速数据表

将风速数据转换为特征集合,并导出为CSV格式的表格。

结论

本教程展示了如何使用GEE对ERA5数据集进行风速分析。通过计算风速分量的矢量合成,我们可以了解特定区域内风速的时空变化。

进一步探索

GEE提供了多种工具和方法来进行气象数据分析。在后续的教程中,我们将继续探索GEE在不同领域的应用。