3

我最近开始使用ERA5 土地小时数据和 python 代码。

我将使用一整年(2017 年)的 2 个变量(总降水量2 米温度)的数据。

下载的数据采用 GRIB 或 netCDF 格式。

我想做的事情是:

1)转换单位。如果是:

  • 总降水量 - 将“m”转换为“mm”
  • 2m 温度 - 将“开尔文”转换为“摄氏度”

2)将每小时值转换为每日值

我从 ECMWF 的官方网站上找到了以下代码: https ://confluence.ecmwf.int/display/CKB/ERA5%3A+How+to+calculate+daily+total+precipitation 不幸的是,该代码仅用于编译一天的每日值(2017 年 1 月 1 日)。

我想将所有值转换为一整年。我知道(如果我是对的):

  • 总降水量呈现累计值。所以每日价值是24小时的总和。
  • 温度呈现平均值。所以每日价值是24小时的平均值。

3)从数据文件中选择特定信息

为了进行分析,我只想保留以下信息:

  • 价值观
  • 纬度
  • 经度
  • 时间

对于两个变量(总降水量和 2 米温度)

4)将GRIB或netCDF文件转换成Stata软件可以读取的某种格式

我真的很感激任何帮助的姿态

4

2 回答 2

2

如果您使用xarray,这些任务中的大多数都很容易完成

1)单位换算:

import xarray as xr 
ds = xr.open_dataset(path/to/netcdf/file)

# converting total precipitation from m to mm
ds.tp = ds.tp * 1000

# converting t2m from K to C
ds.t2m = ds.t2m - 273.15

2)每小时到每天的数据:

xarray .resample方法可以在这里为您提供帮助。

# daily temperature mean from hourly values
ds.t2m.resample(time='1D').mean()
# daily precipitation sum from hourly values
ds.tp.resample(time='1D').sum()

应该更好地解释您的第 3) 和 4) 点,以增加您获得适当帮助的机会

于 2019-11-19T09:55:41.403 回答
0

ERA5-陆地每小时降水量和 ERA5 再分析每小时降水量不同。见https://confluence.ecmwf.int/pages/viewpage.action?pageId=197702790并参考水文参数表。ERA5 Reanalysis Hourly 和 ERA5-Land Hourly 对如何提取每日总数有完全不同的规范。
对于 ERA5-Land Hourly,降水值是自每天开始以来的总和。ERA5 再分析每小时降水是一小时的总和。这意味着来自 ERA5-Land Hourly 的每日总和不是每个小时降水值的总和,而是第二天 00 小时的降水值。

于 2021-04-25T21:47:07.683 回答