从 R 中的 CERRA ERA5 下载数据时出现问题,总降水量为负值

问题描述 投票:0回答:1

我正在使用哥白尼气候数据,特别是 de CERRA 再分析数据。我已经用 Grib 格式文件下载了 2 米温度的数据,一切看起来都是正确的。当我尝试对总降水量执行相同的过程时,我得到的负值范围从 -160 到 -260。这没有任何意义。因此,如果我尝试以 NetCDF 格式下载数据,这些值似乎是正确的,因为它的范围从 0 到 110,但栅格对象中没有坐标系,我收到一条警告:

“vobjtovarid4: **** 警告 **** 我被要求为名为 y 的维度获取一个变量,但是这个维度没有 DIMVAR!此时代码可能会失败”

我曾尝试为栅格设置多个坐标系,但似乎没有任何效果。 有人遇到过吗?

这是我用于 grib 文件的代码:

rm(list=ls())
library(ncdf4)
library(tidyverse)
library(sf) 
library(raster)
library(terra)
library("mapSpain")
library(reticulate)
library(ncdf4)

conda_install("r-reticulate","cdsapi", pip=TRUE)#import python CDS-API
cdsapi <- import("cdsapi")
#for this step there must exist the file .cdsapirc
server = cdsapi$Client() #start the connection

year_n = "2020"
month_n = "03"
day_n = "01"
query <- r_to_py(list(
  variable= "total_precipitation",
  level_type= "surface_or_atmosphere",
  data_type= "reanalysis",
  product_type=" forecast",
  year= year_n,
  month= month_n,
  day= day_n, 
  time="00:00",
  format= "grib",
  leadtime_hour = "24"
))


#query to get the ncdf
Path = paste0("1newera5_temp_",year_n,month_n, day_n,".grib")
server$retrieve("reanalysis-cerra-single-levels",
                query,
                Path)

nc_raster <- rast(Path)
plot(nc_raster,1)

我得到以下信息:

这没有任何意义,因为总降水量为负值。如果我使用 NC 格式而不是 Grib,我会得到以下信息:

这似乎是正确的,但没有与光栅文件关联的坐标系,所以我无法理解西班牙的数据和过滤器。这是没有坐标的 .nc 文件的光栅数据描述。参考: 有谁知道如何将总降水量的值转换为正常的毫米值,其中 Grib 文件有正值?或者为总降水量值已经正确的 NC 文件正确设置坐标系?

r raster terra era5
1个回答
0
投票

我怀疑数据是打包的,即存储为 2 字节短并使用 add_offset 和 scale_factor。你可以用

在 cdo 中解压它
cdo unpack in.nc out.nc 

cdo -b f32 copy in.nc out.nc 
© www.soinside.com 2019 - 2024. All rights reserved.