Как я могу подмножить данные из файла netcdf?

100
13

Итак, у меня есть этот файл netcdf:

1] "file test.nc has 2 dimensions:"
[1] "Time Size: 216"
[1] "ID Size: 36"
[1] "------------------------"
[1] "file test.nc has 1 variables:"
[1] "float Q[ID,Time] Longname:Q Missval:1e+30"

Все, что я хочу сделать, это дать ему один ID (скажем, 100300). И прочитайте определенный период времени (скажем от 4 до 20 минут)

library(ncdf)
ncfile<-nc<-open.ncdf("test.nc")
varcomid <- get.var.ncdf(ncfile,varid = "ID")
vartime <- get.var.ncdf(ncfile,varid = "Time")
ndims = ncfile$var[['Q']]$ndims
varsize = ncfile$var[['Q']]$varsize
comid<-which(ncfile$dim$ID$vals == 100300)

start=c(comid,4)
count = c(varsize[1], varsize[2])

dat<-get.var.ncdf(nc=ncfile,varid="Q",start,count)

Я не могу закончить логику конца timestep.

Кроме того, я получаю эту ошибку: функция C R_nc_get_vara_double возвратила ошибку

Диагностика с использованием комментариев

start=c(comid,4)
count = c(varsize[2], varsize[1])

dat<-get.var.ncdf(nc=ncfile,varid="Q",start,count)

Error in R_nc_get_vara_double: NetCDF: Start+count exceeds dimension bound
Var: Q Ndims: 2 Start: 3,27Count: 36,216Error in get.var.ncdf(nc = ncfile, varid = "Q", start, count) :
C function R_nc_get_vara_double returned error

спросил(а) 2021-01-25T16:15:57+03:00 5 месяцев назад
1
Решение
63

Это работает:

library(ncdf)
ncfile <- nc<-open.ncdf("test.nc")
varcomid <- get.var.ncdf(ncfile,varid = "COMID")
vartime <- get.var.ncdf(ncfile,varid = "Time")
ndims <- ncfile$var[['Qout']]$ndims
varsize <- ncfile$var[['Qout']]$varsize
comid <- which(varcomid == 1439445)

start <- c(comid, 4)
count <- c(1, varsize[2] - start[2])

dat <- get.var.ncdf(nc = ncfile,varid = "Qout", start = start, count = count)

ответил(а) 2021-01-25T16:15:57+03:00 5 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема