#r #gdal #netcdf #r-raster
#r #гдал #netcdf #r-растр
Вопрос:
[1] Я хочу повернуть netcdf
файл с длительностью от 0, 360 до -180, 180. Достаточно просто, но когда я пытаюсь использовать rotate()
функцию в Rstudio, я получаю следующую ошибку:
Error in Rsx_nc4_get_vara_double: NetCDF: HDF error
Var: pr Ndims: 3 Start: 558,0,0 Count: 1,144,96
Fehler in ncvar_get_inner(ncid2use, varid2use, nc$var[[li]]$missval, addOffset, :
C function R_nc4_get_vara_double returned error
У меня установлены пакеты raster, regal и ncdf4. Я попытался установить пакет rgdal, но он говорит мне, что он недоступен для моей версии R.
Ранее я работал на Mac, но у меня была куча проблем с пакетом rgdal (и эта ошибка HDF) Я перешел на Windows 10 с большими надеждами на то, что это станет решением моей проблемы, но, к сожалению, этого не произошло. Итак, я получил точно такую же ошибку на Mac и Windows, мой друг попробовал код и файлы на своем компьютере с Windows, и все сработало так, как должно. Я новичок в R и программировании и не знаю, что попробовать. Помощь очень ценится!
Это мой код:
library(raster)
Stack.nc <- stack("pr_Amon_ACCESS-CM2_historical_r1i1p1f1_gn_185001-201412.nc")
StackRot.nc <- rotate(Stack.nc)`
[Вот веб-сайт, с которого я получил файл, и, надеюсь, все переменные, которые я выбрал
https://esgf-data.dkrz.de/search/cmip6-dkrz/
Ответ №1:
Похоже, это не связано с rgdal
, поскольку ваш скрипт его не использует (я удалил library(rgdal)
из вашего примера, чтобы было понятнее).
Я предполагаю, что это также не только с rotate, но и что любая попытка прочитать данные завершится неудачей. Например, можете ли вы сделать
s <- Stack.nc * 1
Обновить.
У меня это работает с предоставленным файлом
f <- "pr_Amon_ACCESS-CM2_historical_r1i1p1f1_gn_185001-201412.nc"
С terra
library(terra)
r <- rast(f)
rr <- rotate(r)
rr
#class : SpatRaster
#dimensions : 144, 192, 1980 (nrow, ncol, nlyr)
#resolution : 1.875, 1.25 (x, y)
#extent : -180, 180, -90, 90 (xmin, xmax, ymin, ymax)
#coord. ref. : proj=longlat datum=WGS84 no_defs
#source : memory
#names : pr_1, pr_2, pr_3, pr_4, pr_5, pr_6, ...
#min values : 0.000000e 00, 0.000000e 00, 0.000000e 00, 0.000000e 00, 0.000000e 00, 0.000000e 00, ...
#max values : 0.0004399522, 0.0004903608, 0.0003187894, 0.0004326741, 0.0003904318, 0.0006041837, ...
И с raster
library(raster)
b <- brick(f)
bb <- rotate(b)
bb
#class : RasterBrick
#dimensions : 144, 192, 27648, 1980 (nrow, ncol, ncell, nlayers)
#resolution : 1.875, 1.25 (x, y)
#extent : -180, 180, -90, 90 (xmin, xmax, ymin, ymax)
#crs : proj=longlat datum=WGS84 no_defs
#source : memory
#names : X1850.01.16, X1850.02.15, X1850.03.16, X1850.04.16, X1850.05.16, X1850.06.16, X1850.07.16, X1850.08.16, X1850.09.16, X1850.10.16, X1850.11.16, X1850.12.16, X1851.01.16, X1851.02.15, X1851.03.16, ...
#min values : 0.000000e 00, 0.000000e 00, 0.000000e 00, 0.000000e 00, 0.000000e 00, 0.000000e 00, 4.140691e-18, 0.000000e 00, 0.000000e 00, 0.000000e 00, 0.000000e 00, 0.000000e 00, 0.000000e 00, 0.000000e 00, 0.000000e 00, ...
#max values : 0.0004399522, 0.0004903608, 0.0003187894, 0.0004326741, 0.0003904318, 0.0006041837, 0.0008112662, 0.0006924249, 0.0005891759, 0.0003935274, 0.0003543252, 0.0003916493, 0.0004465098, 0.0004070048, 0.0003241026, ...
Date : 1850-01-16, 2014-12-16 (min, max)
Используете ли вы текущую версию R? Вы говорите, что «rgdal недоступен для моей версии R», что предполагает, что вы, возможно, используете довольно старую версию? Можете ли вы показать свой sessionInfo()
? Можете ли вы переустановить соответствующие пакеты?
install.packages(c("raster", "ncdf4", "terra"))
Комментарии:
1. Спасибо, что изучили это! Вы правы, я получаю ту же ошибку, пытаясь s <-Stack.nc * 1 Я попробовал это с terra, на Mac он повернул его, но на 0,180, поэтому он выглядел более обрезанным. В Windows он всегда завершал работу Rstudio, когда я запускал y<-rotate(x) Я также снова загрузил файл, но это не имело никакого значения. Я попытался поместить здесь ссылку на файл, но я не уверен, что это работает.
2. Это должен быть тот файл, который вы используете. Вы можете поделиться им с помощью Google Диска или чего-то подобного.
3. drive.google.com/file/d/1cnnnRS_IJedX6j5TFMVAMRcGHMXusAZg/…
4. Привет, Роберт, с «rgdal недоступен для моей версии R» я имел в виду, что из-за обновления BigSur его было сложно установить на Mac. В Windows это работало нормально, у меня самая новая версия R. Я попытался повернуть NetCDF из другой модели (файл, который я использовал в задаче, был из ACCESS-CM2), и это сработало.