Я хотел бы прочитать файл GRIB2 в R, но не смог установить wgrib2
(после нескольких часов борьбы), что означает, что rNOMADS
не вариант. Ничего страшного, так как файлы GRIB2 могут быть прочитаны как пакетами raster
, так и пакетами rgdal
. Проблема, с которой я сталкиваюсь, заключается в том, что имена слоев удаляются при чтении файла.
Вот пример.
# Load libraries
library(raster)
library(rgdal)
# Name of file
file_name <- "https://dd.weather.gc.ca/model_gem_regional/coupled/gulf_st-lawrence/grib2/00/001/CMC_coupled-rdps-stlawrence-ocean_latlon0.02x0.03_2020120100_P001.grib2"
# Load as raster brick
b <- brick(file_name)
# Get layer names
names(b)
# [1] "CMC_coupled.rdps.stlawrence.ocean_latlon0.02x0.03_2020120100_P001.1"
# [2] "CMC_coupled.rdps.stlawrence.ocean_latlon0.02x0.03_2020120100_P001.2"
# [3] "CMC_coupled.rdps.stlawrence.ocean_latlon0.02x0.03_2020120100_P001.3"
# [4] "CMC_coupled.rdps.stlawrence.ocean_latlon0.02x0.03_2020120100_P001.4"
# [5] "CMC_coupled.rdps.stlawrence.ocean_latlon0.02x0.03_2020120100_P001.5"
# [6] "CMC_coupled.rdps.stlawrence.ocean_latlon0.02x0.03_2020120100_P001.6"
# [7] "CMC_coupled.rdps.stlawrence.ocean_latlon0.02x0.03_2020120100_P001.7"
# [8] "CMC_coupled.rdps.stlawrence.ocean_latlon0.02x0.03_2020120100_P001.8"
# [9] "CMC_coupled.rdps.stlawrence.ocean_latlon0.02x0.03_2020120100_P001.9"
#[10] "CMC_coupled.rdps.stlawrence.ocean_latlon0.02x0.03_2020120100_P001.10"
Как видите, это просто общие значения по умолчанию. Затем я попробовал rgdal.
# Load using rgdal
r <- readGDAL(file_name)
# Get names
names(r)
# [1] "band1" "band2" "band3" "band4" "band5" "band6" "band7" "band8"
# [9] "band9" "band10"
И снова имена по умолчанию. Но если я использую утилиту командной строки ncl_convert2nc
для преобразования файла GRIB2 в NetCDF, а затем считываю файл NetCDF с помощью ncdf4
— дополнительный шаг преобразования, который я не хочу включать в свой рабочий процесс, если его можно избежать — есть определенно присутствуют имена переменных.
# [1] "UOGRD_P0_L160_GLL0" "VOGRD_P0_L160_GLL0" "ICEC_P0_L1_GLL0"
# [4] "ICETK_P0_L1_GLL0" "UICE_P0_L1_GLL0" "VICE_P0_L1_GLL0"
# [7] "ICETMP_P0_L1_GLL0" "ICEPRS_P0_L1_GLL0" "CICES_P0_L1_GLL0"
#[10] "WTMP_P0_L1_GLL0"
ВОПРОС: Есть ли способ извлечь или сохранить имена переменных/слоев при использовании rgdal
или raster
для чтения файла GRIB2?
PS Причина, по которой мне нужно получить имена переменных из файла, заключается в том, что слои не совпадают с указанным порядком слоев на веб-сайте при загрузке (например) raster
. Это видно из значений переменных. Хотя я мог бы использовать имена переменных, взятые из файла NetCDF, показанного выше, если бы порядок слоев изменился, это сломало бы мой пакет.