Как указать порядок измерения при использовании ncdf4 :: ncvar_get?
После предыдущего вопроса (Более быстрое чтение временных рядов из netCDF?) Я переставил мои файлы netCDF, чтобы обеспечить быстрое чтение временных рядов (скрипты на github со временем уберутся ...).
Короче говоря, чтобы сделать чтение быстрее, я изменил размеры отlat, lon, time
вtime, lat, lon
, Теперь мои существующие скрипты ломаются, потому что они предполагают, что размеры всегда будутlat, lon, time
, следуя документации ncdf4ncvar_get
для аргумента 'start':
Порядок X-Y-Z-T (то есть, измерение времени является последним)
Однако, это не так.
Кроме того, существует связанная несогласованность в порядке перечисления переменных с помощью утилиты командной строки netCDF.ncdump -h
и функция Rncdf4::nc_open
, Первый говорит о том, что размеры находятся в ожидаемом (широте, долготе, времени) порядке, в то время как последний видит размеры со временем первым (время, широте, долготе).
Для минимального примера скачайте файлtest.nc и беги
bash-$ ncdump -h .nc
bash-$ R
R> library(ncdf4)
R> print(nc_open("test.nc")
То, что я хочу сделать, это получить записи 5-15 из переменной "lwdown"
my.nc <- nc_open("test.nc")
Но это не работает, так как R сначала видит измерение времени, поэтому я должен изменить свои сценарии на
ncvar_get(my.nc, "lwdown", start = c(5, 1, 1), count = c(10, 1, 1))
Было бы неплохо обновить мои скрипты и функции, за исключением того, что я хочу иметь возможность читать данные из файлов независимо от порядка измерений.
Кроме как есть способ обобщить эту функцию, чтобы она работала независимо от порядка измерений?