Как указать порядок измерения при использовании 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))

Было бы неплохо обновить мои скрипты и функции, за исключением того, что я хочу иметь возможность читать данные из файлов независимо от порядка измерений.

Кроме как есть способ обобщить эту функцию, чтобы она работала независимо от порядка измерений?

Ответы на вопрос(1)

Ваш ответ на вопрос