问题标签 [era5]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
r - R 简单计算后另存为 NetCDF 文件
我想做一些(显然)简单的事情,但还没有找到正确的方法:
我在网格上读取了一个 netcdf 文件(来自 ERA5 再分析的风速)。由此,我使用风速来计算风容量因子(使用给定的功率曲线)。然后我想编写一个新的 netcdf 文件,其结构与输入文件完全相同,但只是用新变量(风容量因子)替换输入风速。
有没有一种简单/快速的方法来做到这一点,避免用 ncvar_def 和 ncdim_def 重新定义所有的暗淡、变量……?
提前感谢您的回复!
python-3.x - 如何使用全年的小时数据计算每天的总降水量?
我有来自 ERA5 在特定年份的每一天的每小时数据。我想将该数据从每小时转换为每天。我知道做到这一点的漫长而艰难的方法,但我需要一些容易做到的东西。
哥白尼在这里有一个代码https://confluence.ecmwf.int/display/CKB/ERA5%3A+How+to+calculate+daily+total+precipitation,如果数据集只转换一天,它工作正常,但是在全年转换时,我遇到了问题。
下载 ERA5 数据集的链接可在https://cds.climate.copernicus.eu/cdsapp#!/home获得
按照此处的步骤使用哥白尼服务器
https://confluence.ecmwf.int/display/CKB/How+to+download+ERA5
此脚本仅下载 2 天(2017 年 1 月 1 日和 2 日)的 houly 数据: 下面的脚本将只创建一个 netCDF 文件一天我想要的是一个代码,它将遵循与上述数据相同的步骤,但假设我有一个包含一年数据的输入文件并将其转换为一年的每日数据。
结果应该是全年计算变量(如降水等)的每日值。
示例:假设我有一个全年的降水数据,每天 1 毫米/小时,我将有 2928 个全年的值。
我想要的是全年 24 毫米/天,非闰年只有 365 个值。
输入数据集示例:可以从此处下载数据的子集(2017 年 1 月 1 日和 2 日)https://www.dropbox.com/sh/0vdfn20p355st3i/AABKYO4do_raGHC34VnsXGPqa?dl=0。只需在此之后使用第二个脚本来检查代码。{全年代码>10GB,无法上传
提前致谢
matlab - MATLAB:如何使用每小时数据计算每天的总降水量?(网络发展基金)
我有来自 ECMWF ERA5 特定年份每一天的每小时数据。我想将该数据从每小时转换为每天。哥白尼在这里有一个 Python 代码https://confluence.ecmwf.int/display/CKB/ERA5%3A+How+to+calculate+daily+total+precipitation。
我想知道执行此操作的matlab代码是什么?我在我的谷歌驱动器中上传了 netcdf 文件:
https ://drive.google.com/open?id=1qm5AGj5zRC3ifD1_V-ne2nDT1ch_Khik
每天的时间步骤是:
通知涵盖 2017 年 1 月 1 日的总降水量 例如,我们需要两天的数据: 2017 年 1 月 1 日时间 = 01 - 23 将为您提供涵盖 2017 年 1 月 1 日 00 - 23 UTC 的总降水量数据 2017 年 1 月 2 日时间 = 00 将为您提供 2017 年 1 月 1 日 23 - 24 UTC 的总降水数据,这里是 ncdisp():
tp
是我的变量,它有 3 个维度(lon*lat*time) = 49*41*8760
,我希望在49*41*365
非闰年使用它。
结果应该是全年的每日值。
python - 如何使用 Python 操作 ERA5 土地每小时数据?
我最近开始使用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软件可以读取的某种格式
我真的很感激任何帮助的姿态
python - 使用 CDO 计算 ERA5 每日总降水量
本质上,这是对这个问题的转发:https ://confluence.ecmwf.int/pages/viewpage.action?pageId=149341027
我已经从 CDS 下载了 ERA5。输入文件从每个考虑年份的 1 月 1 日到 12 月 31 日的每个日历日都有 24 小时步长(0、1、2、3、4、..、23)。
ECMWF 在这里声明https://confluence.ecmwf.int/display/CKB/ERA5%3A+How+to+calculate+daily+total+precipitation每日总降水量必须通过累积降水量来计算,例如 1979 年 1 月 1 日通过求和1 月 1 日的第 1、2、...、23 步和 1 月 2 日的第 0 步。表示 1979 年 1 月 1 日的第 0 步不计入当日总降水量。为了计算 1979 年 1 月 2 日的总降水量,我们还使用当天的第 1、2、3、...、23 步加上 1 月 3 日的第 0 步等等。
在 python 中似乎有这样一个选项:
现在我想知道这是否也可以通过简单的方式使用气候数据运营商 (CDO)。通常我会使用 CDO 中的命令进行任何此类计算daysum
,但我不确定这是否正确。
有人建议使用:
但我不确定这是正确的 - 有什么建议吗?
javascript - 从 ERA5 中提取时间序列数据 - Google Earth Engine
我正在尝试从 Google 地球引擎中的 ERA5 数据集中提取与点特征相交的每日平均温度的时间序列。对于某些年(例如,“1979”到“1980”),输出会抛出“内部服务器错误”。其他范围工作正常。
有没有更直接的方法从包含这么多数据点的整个图像集合中提取时间序列,或者服务器是否总是超载?
谢谢!!
r - 有没有办法最小化唯一组合的数量?
尝试请求 ERA5 数据。请求受大小限制,系统将自动拒绝任何大于限制的请求。但是,人们希望尽可能接近请求限制,因为气候数据存储 (CDS) 处理每个请求需要几个小时。
例如,我有一个向量years <- seq(from = 1981, to = 2019, by = 1)
和一个向量variables <- c("a", "b", "c", "d", "e"...., "z")
。最大请求大小为 11。这意味着长度(年)*长度(变量)必须小于或等于 11。
对于每个请求,我必须提供一个包含年份和变量的字符向量的列表。例如:
req.list <- list(year = c("1981", "1982", ..."1991"), variable = c("a"))
这将起作用,因为有 11 年和 1 个变量。
我考虑过使用 expand.grid() 然后使用第 1-11 行、第 12-22 行 ...和 unique() 值每列来获取请求的年份和变量。但是这种方法有时会导致请求大小太大:
req.list <- list(year = c("2013", "2014", ..."2018"), variable = c("a", "b"))
因为长度(年)*长度(变量)= 12> 11而被拒绝。
我也使用 foreach() 和 doParallel 创建多个请求(一次最多 15 个请求)
如果有人有更好的解决方案,请分享(在遵守请求大小限制的同时尽量减少独特组合的数量),非常感谢。
python - 如何沿动物轨迹点提取 ECMWF ERA-5 数据?
我想从 ERA5 每小时压力水平数据中提取/插入每个轨道位置(空间 [xy]、时间 [t] 和高度)的气温值。
我使用 CDS 工具箱检索了 ERA5 数据集,如下所示。但是,我不知道如何提取每个点的值。我尝试在 CDS 工具箱中使用该工具:'ct.observation.interp_from_grid()',但没有成功。
或者,我可以先下载 ERA5 数据,然后使用 R 中光栅包的提取功能。但是,我不想在我的计算机上下载大量数据集(可能是数百 GB,甚至 TB),因为我的轨道点覆盖了大的空间和时间尺度。
这是一个仅用于演示的虚拟跟踪点。
如果您有任何建议或其他方式,我将不胜感激。
提前致谢,
蝙蝠
r - 按月对光栅砖进行子集
我给自己买了一个名为 y 的光栅砖,它有 14 975 个时间层,因为它从 1979 年 1 月 1 日到 2019 年 12 月 31 日(14 975 天)每天都有每日平均位势高度值。砖有以下描述:
我想按月将这个 rasterbrick 分成 12 个 rasterbrick,这样我每个日历月就有 1 个 rasterbrick。我尝试了几种方法,但都没有奏效。例如,我尝试从名称(y)中减去月份字符,我认为这绝对是要走的路,但它根本行不通。每一个帮助表示赞赏,谢谢!
r - 使用标准分析 R 中的栅格堆栈
我得到了一个带有以下描述的光栅堆栈:
每个 RasterLayer 都是一个位势高度异常数组,其值从 -300 到 300 不等。我得到了 14 975 个时间层,这意味着从 1.1.1979 到 31.12.2019 的每一天。
如果异常达到至少 +100 m 并持续至少 10 天,则将单个网格点称为阻塞。所以我想写一个函数,它返回这个条件给出的运行。这意味着我想通过时间层自己计算每个网格点
我不太擅长编写函数,这个问题对我来说似乎太难解决了,但也许有人可以帮助我。非常感谢!