标签: netcdf

使用R打开grib文件

我正在使用 R 来处理气象数据。我分两步进行:

  1. 使用 ncar 命令语言中的命令行函数 ncl_convert2nc 将 grib 转换为 netcdf
  2. 在 R 中使用包 ncdf 导入 netcdf 数据。

我还有一个问题:

2- 对于某些特定的 grib 文件,使用 ncar 工具进行转换不起作用。是否有其他方法或技巧(除了转录到 netcdf 中)来读取 R 中的 grib 文件

Dirk 回答的问题:1- 我想在 R 中自动处理许多文件。我可以在 R 中调用 ncl_convert2nc 吗?(下面由 Dirk Eddelbuettel 回答)

r netcdf data-structures grib

5
推荐指数
1
解决办法
5982
查看次数

netcdf文件中的变量出现翻转

我已经从中下载了一个nc文件

f=open.ncdf("file.nc")
[1] "file Lfile.nc has  2 dimensions:"
[1] "Longitude   Size: 1440"
[1] "Latitude   Size: 720"
[1] "------------------------"
[1] "file filr.nc has   8 variables:"
[1] "short ts[Latitude,Longitude]  Longname:Skin Temperature (2mm) Missval:NA"
Run Code Online (Sandbox Code Playgroud)

然后我想使用变量soil_moisture_c

A = get.var.ncdf(nc=f,varid="soil_moisture_c",verbose=TRUE)
Run Code Online (Sandbox Code Playgroud)

然后我绘制用image(A).我得到了下面显示的地图,我甚image(t(a))至改变了它,但是它改变了其他方向,而不是它应该如何.无论如何,为了知道出了什么问题,我使用netcdf查看器Panoply并正确绘制了地图,如下所示.

r netcdf

5
推荐指数
2
解决办法
4488
查看次数

覆盖netcdf中的特定单元格

是否有netcdf操作符(来自nco或任何python netcdf库)可用于覆盖netcdf文件中的特定单元格?

我想更改包含全球气候数据的netcdf文件中的小区域的值.谢谢!

python netcdf nco cdo-climate

5
推荐指数
2
解决办法
1109
查看次数

如何在python中读取gzip netcdf文件?

我有一个工作的python程序,它使用netCDF4模块中的Dataset命令读入大量的netCDF文件.以下是相关部分的片段:

from netCDF4 import Dataset
import glob

infile_root = 'start_of_file_name_'

for infile in sorted(glob.iglob(infile_root + '*')):
   ncin = Dataset(infile,'r')
   ncin.close()
Run Code Online (Sandbox Code Playgroud)

我想修改它以读取gzip压缩的netCDF文件.文件本身在创建后进行了压缩; 它们不是内部压缩的(即文件是*.nc.gz).如果我正在阅读gzip压缩文本文件,那么命令将是:

from netCDF4 import Dataset
import glob
import gzip

infile_root = 'start_of_file_name_'

for infile in sorted(glob.iglob(infile_root + '*.gz')):
   f = gzip.open(infile, 'rb')
   file_content = f.read()
   f.close()
Run Code Online (Sandbox Code Playgroud)

在谷歌搜索大约半小时并阅读netCDF4文档后,我能够为netCDF文件做到这一点的唯一方法是:

from netCDF4 import Dataset
import glob
import os

infile_root = 'start_of_file_name_'

for infile in sorted(glob.iglob(infile_root + '*.gz')):
   os.system('gzip -d ' + infile)
   ncin = Dataset(infile[:-3],'r')
   ncin.close()
   os.system('gzip ' + infile[:-3]) 
Run Code Online (Sandbox Code Playgroud)

是否可以直接使用数据集命令读取gzip文件?或者没有通过os调用gzip?

python gzip netcdf

5
推荐指数
2
解决办法
2643
查看次数

是否有任何并行方式访问Python中的Netcdf文件

有没有办法在Python中为Netcdf文件执行并行IO?

我知道有一个名为PyPNetCDF的项目,但显然它已经老了,没有更新,似乎根本不起作用.有没有人在Python中使用NetCDF并行IO?

任何帮助是极大的赞赏

python io parallel-processing netcdf

5
推荐指数
1
解决办法
821
查看次数

如何将旋转的NetCDF转换回正常纬度/长度?

我有一个旋转坐标的NetCDF文件.我需要将它转换为普通的纬度/经度坐标(长度为-180到180,纬度为-90到90).

library(ncdf4)
nc_open('dat.nf')
Run Code Online (Sandbox Code Playgroud)

对于尺寸,它显示:

[1] "     5 variables (excluding dimension variables):"
[1] "        double time_bnds[bnds,time]   "
[1] "        double lon[rlon,rlat]   "
[1] "            long_name: longitude"
[1] "            units: degrees_east"
[1] "        double lat[rlon,rlat]   "
[1] "            long_name: latitude"
[1] "            units: degrees_north"
[1] "        char rotated_pole[]   "
[1] "            grid_mapping_name: rotated_latitude_longitude"
[1] "            grid_north_pole_longitude: 83"
[1] "            grid_north_pole_latitude: 42.5"
[1] "        float tasmax[rlon,rlat,time]   "
[1] "            long_name: Daily Maximum Near-Surface Air Temperature"
[1] "            standard_name: air_temperature"
[1] "            units: K" …
Run Code Online (Sandbox Code Playgroud)

r rotation coordinates netcdf cdo-climate

5
推荐指数
3
解决办法
4144
查看次数

检查库版本netcdf linux

如何确定我的系统中安装了哪个版本的netcdf库?有命令行吗?我试图搜索"netcdf",我找到了一堆文件,但我无法确定版本号.是否有命令检查安装的任何版本?

我在ubuntu上

linux ubuntu netcdf

5
推荐指数
1
解决办法
8409
查看次数

将PCICt类分配给数据帧r

我有大量的NetCDF文件,其中包含按月平均的历史天气数据。时间维度单位为“自1600-01-01起的天数”,并使用360天日历。我使用了PCICt软件包来根据360天日历正确格式化时间维度。我的问题是:

  1. 尝试将数据写入数据帧或将其保存到输出文件时,收到以下错误消息:as.data.frame.default(x [[i]],optional = TRUE)中的错误:无法强制类“ “ PCICt”“到data.frame

  2. 我可以从该PCICt数据中提取年份和月份吗?

任何帮助将非常感激。

#packages used
require("PCICt")
require("RNetCDF")

#dput output assigned to "ex" variable (units "Days since 1600-01-01")
ex <- structure(c(1095, 1125, 1155, 1185, 1215, 1245, 1275, 1305, 1335, 
1365, 1395, 1425), .Dim = 12L)

#used PCICt to correctly format date stamp
cal <- "360_day"
origin <- ("1600-01-01")
seconds.per.day <- 86400
origin.pcict <- as.PCICt(origin,cal)
ex_pcict <- origin.pcict + (ex * seconds.per.day)

#result of PCICt code
> print(ex_pcict)
 [1] "1603-01-16" "1603-02-16" "1603-03-16" "1603-04-16"
 [5] "1603-05-16" …
Run Code Online (Sandbox Code Playgroud)

r netcdf

5
推荐指数
1
解决办法
222
查看次数

将netcdf时间变量转换为R日期对象

我有一个带有时间序列的netcdf文件,时间变量具有以下典型元数据:

    double time(time) ;
            time:standard_name = "time" ;
            time:bounds = "time_bnds" ;
            time:units = "days since 1979-1-1 00:00:00" ;
            time:calendar = "standard" ;
            time:axis = "T" ;
Run Code Online (Sandbox Code Playgroud)

RI内部想要将时间转换为R日期对象.我通过读取units属性并拆分字符串并使用第三个条目作为我的原点(因此假设间距为"days",时间为00:00等)以硬连线方式实现此目的:

require("ncdf4")
f1<-nc_open("file.nc")
time<-ncvar_get(f1,"time")
tunits<-ncatt_get(f1,"time",attname="units")
tustr<-strsplit(tunits$value, " ")
dates<-as.Date(time,origin=unlist(tustr)[3])
Run Code Online (Sandbox Code Playgroud)

这个硬连线解决方案适用于我的具体示例,但我希望R中可能有一个包很好地处理时间单位的UNIDATA netcdf数据约定并将它们安全地转换为R日期对象?

r unidata netcdf netcdf4

5
推荐指数
2
解决办法
2475
查看次数

How to join data from multiple netCDF files with xarray in Python?

I'm trying to open multiple netCDF files with xarray in Python. The files have data with same shape and I want to join them, creating a new dimension.

I tried to use concat_dim argument for xarray.open_mfdataset(), but it doesn't work as expected. An example is given below, which open two files with temperature data for 124 times, 241 latitudes and 480 longitudes:

DS = xr.open_mfdataset( 'eraINTERIM_t2m_*.nc', concat_dim='cases' )
da_t2m = DS.t2m

print( da_t2m )
Run Code Online (Sandbox Code Playgroud)

有了这段代码,我希望结果数据数组的形状像(情况:2,时间:124,纬度:241,经度:480)。但是,其形状为(案例:2,时间:248,纬度:241,经度:480)。它创建了一个新维度,但也将最左边的维度相加:两个数据集的“时间”维度。我想知道这是来自“ xarray.open_mfdateset”的错误还是预期的行为,因为两个数据集的“时间”维度都是无限的。

有没有一种方法可以直接使用xarray从这些文件中联接数据并获得上述预期收益?

谢谢。

马泰斯

python concatenation netcdf python-xarray

5
推荐指数
1
解决办法
653
查看次数