Проблемы при попытке разместить глобальную карту с данными Ncdf - PullRequest
0 голосов
/ 16 февраля 2019

Я пытаюсь наложить глобальную карту с данными ncdf осадков для определенного местоположения (используя определенные координаты).Файл в формате ncdf (обычно используется для хранения климатических данных), и в настоящее время я пытаюсь разместить глобальную карту на нанесенных значениях осадков.Тем не менее, я испытываю трудности с размещением глобальной карты на этом графике и сталкиваюсь с ошибками.Я покажу вам, что я сделал:

#To create a plot of precipitation data using the following ncdf file - the
following code works fine and provides the distributions global precipitation
values (Land+Water values):

>library(ncdf4)
>Can<-"MaxPrecCCCMACanESM2rcp45.nc"


>Model<-nc_open(Can)
>print(Model)
>attributes(Model$var)
>$names
>dat<-ncvar_get(Model, "onedaymax")
>dat[128,50,1] #View onedaymax for selected latitude, longitude and Year
>nc_lat<-ncvar_get(Model,attributes(Model$dim)$names[2]) #Retrieve latitude
>nc_lon<-ncvar_get(Model,attributes(Model$dim)$names[3]) #Retrieve longitude
>print(paste(dim(nc_lat), "latitudes and", dim(nc_lon), "longitudes"))
>library(maptools)
>map<-dat[,,5] #Precipitation for all longitudes, latitudes, and Year 5
>grid<-expand.grid(nc_lon=nc_lon, nc_lat=nc_lat)
>image(nc_lon,nc_lat,map, ylab="Latitude", xlab="Longitude", main="One-day
maximum precipitation")
>levelplot(map~nc_lon*nc_lat, data=grid, at=cutpoints, cuts=11,
ylab="Latitude", xlab="Longitude", >main="Year 5 one-day maximum
precipitation (mm/day) for CanESM2 under RCP4.5", pretty=T,
col.regions=(rev(brewer.pal(10, "Spectral"))))

#To place a global map on the map that map that returns using the above
code. *This is where errors begin:

>ggplot()+geom_point(aes(x=nc_lon,y=nc_lat,color="onedaymax"),
size=0.8)+borders("world", colour="black")+scale_color_viridis(name="onedaymax")+theme_void()+coord_quickmap()

Ошибка: эстетика должна быть либо длины 1, либо соответствовать данным (128): x, y, цвет

Почему бы это не сработало?Может быть, я не включил измерение «время» в функцию ggplot?Проблема, однако, заключается в том, что, когда я пытаюсь получить измерение «время», как я сделал для широты и долготы, я получаю следующую ошибку:

>t<-ncvar_get(Model,"time")

Ошибка в nc $ dim [[idobj $ list_index]]: попытка выбрать более одного элемента

Если это поможет, вот как переменные и измерения выглядят в файле ncdf:

/ File MaxPrecCCCMACanESM2rcp45.nc (NC_FORMAT_NETCDF4):

3 variables (excluding dimension variables):
    double onedaymax[lon,lat,time]  (Contiguous storage)  
        units: mm/day
    double fivedaymax[lon,lat,time]  (Contiguous storage)  
        units: mm/day
    short Year[time]  (Contiguous storage)  

3 dimensions:
    time  Size:95
    lat  Size:64
        units: degree North
    lon  Size:128
        units: degree East/

Любая помощь будет принята с благодарностью !!!!

Спасибо,

...