软件包< code>ncdf4中的命令< code>ncdim_def旨在鼓励自动创建与尺寸相符的坐标变量,这是一个非常好的做法。
但是,它只允许为此坐标变量创建“双精度”或“整数”精度。出于外部原因,我需要将坐标变量“time”写为浮点数。
为此,我使用以下结构,其中包括与维度定义分开创建坐标变量(即。使用ncdim_def
文档中描述的选项create_dimvar=FALSE
)
timevalue= seq(0.5,10.5)
VAR1value= seq(10.2,20.2)
# define time dim, but without the time var
timedim <- ncdim_def( name = 'time' ,
units = '',
vals = seq(length(timevalue)),
unlim = TRUE,
create_dimvar = FALSE)
# define time coordinate variable
timevar <- ncvar_def(name = 'time',
units = 'days since 1950-01-01 00:00:00',
dim = list(timedim),
longname = 'time',
prec = "float")
# define another variable
var1var<- ncvar_def(name = 'VAR1',
units = 'unit1',
dim = list(timedim),
missval = -9999.0,
longname = 'VAR1 long name')
defVar<-list(timevar,var1var)
# creating ncfile (removing any previous one for repeated attempt)
ncfname='test.nc'
if (file.exists(ncfname)) file.remove(ncfname)
ncout <- nc_create(ncfname,defVar,force_v4=T, verbose = T)
# writing the values
ncvar_put(ncout,timevar,timevalue)
ncvar_put(ncout,var1var,VAR1value)
nc_close(ncout)
但是,这会返回错误:
"ncvar_put: warning: you asked to write 0 values, but the passed data array has 11 entries!"
事实上,由此产生的netcdf显示(ncdump):
dimensions:
time = UNLIMITED ; // (0 currently)
variables:
float time(time) ;
time:units = "days since 1950-01-01 00:00:00" ;
float VAR1(time) ;
VAR1:units = "unit1" ;
VAR1:_FillValue = -9999.f ;
VAR1:long_name = "VAR1 long name" ;
我想我需要在创建时强制使用无限时间维度的维度,但我不明白如何在ncdf4
的框架中做到这一点。
我遇到了同样的问题(需要时间维度作为浮点数而不是双精度),并且能够通过将时间变量定义为具有小时向量长度的常规非无限维度来解决它
hours <- c("595377")
t <- ncdim_def("time", "", 1:length(hours), create_dimvar = FALSE)
timevar <- ncvar_def(name = "time",
units = 'hours since 1950-01-01 00:00:00',
dim = list(t),
longname = "time",
prec = "float")
variables <- list(timevar)
ncnew <- nc_create("TEST.nc", variables )
ncvar_put(ncnew, timevar, hours, start=c(1), count=c(length(hours)))
nc_close(ncnew)
但不确定这是否仅在时间维度只有一个值时有效。。。
我有一个 netcdf 数据文件,其中包含以下变量,显示在下面的 ncdump 代码段中: 我正在尝试从此文件中消除时间坐标变量,以便获得三维 netcdf 数据文件。基本上在netcdf文件中第一次拥有数据数据值,仅此而已。我试图用 ncks 完成此操作,这就是他们在进行谷歌搜索时显示我应该做的事情。我用 ncks 尝试了以下命令: 但我无法删除时间维度。我应该怎么做才能调整此命令以获得仅显示初
我不断得到关于浮点数(即、或)是否有一个且只有一个精度值的混合答案,或者具有可以变化的精度值。 一个名为浮点与双精度的主题似乎暗示浮点精度是绝对精度。 然而,另一个被称为浮点和双精度之间的差异的主题说, 一般来说,双精度有15到16位十进制数字 另一位消息人士说, 浮点型变量的精度通常约为7位有效数字 double类型的变量通常具有约16位有效数字的精度 如果我使用的是敏感代码,当我的值不精确时,
代码是这个答案确实有效,增加了一个新的维度,但是它没有做我想要它做的事情。 为了进一步说明我的问题 - 我有以下定义时间(无限),纬度,经度,水平为四个维度和一个可变的位势高度。我想做的是在现有的可变地势高度中添加一个维度dimz_Z。 现在,上面代码中的答案是 netCDF 文件在 ncdump 中的样子 但是dimz_Z维度不见了,如下所示,从nck的输出。 它确实出现在定义中,但作为一个独立
- r - read : rt_device_ops read_index : rt_ringbuffer read_mirror : rt_ringbuffer reader_queue : rt_pipe_device readers : rt_pipe_device recv_buf : rt_spi_message ref_count : rt_device remaining_tic
我希望创建一个netCDF4文件,area_nc,与时间的维度和离散的字母数字区号,例如'A0','A1','A2','B0'等,不适合常规网格(而不是纬度/经度)。 NetCDF气候和预测(CF)元数据公约pdf建议,这可以在第4.5节中完成,但我找不到任何示例。 有办法做到这一点吗? 到目前为止,我已经尝试过: 但是我得到错误: 实现这一点,然后我想使用此代码作为参考将数据添加到文件中,而不是
问题内容: 上的sql变量是否有任何已知的长度限制?我有一个应用程序,它发送一个命令块来执行(插入到…,插入到…等)。它在上运行良好,但在上,最后一条指令被忽略。丢失最后一条指令的sql命令有4900行。 问题答案: 在大于536的sql字符串上,将截断为65536个字符。尝试使用查询或将查询写入文件,然后从sqlcmd工具执行查询