В настоящее время я работаю над проектом, который включает данные климатической модели, хранящиеся в файле NetCDF.В настоящее время я пытаюсь рассчитать «взвешенные» пространственные годовые «глобальные» средние значения осадков.Я должен сделать это для каждого из 95-летних глобальных данных об осадках, которые у меня есть.Идея состояла бы в том, чтобы как-то применить веса к каждой ячейке сетки, используя косинус ее широты (что означает, что ячейки сетки широты на экваторе будут иметь вес 1 (т. Е. Косинус 0 градусов равен 1), а полюса будут иметьзначение 1 (косинус 90 равен 1)).Затем я смог бы рассчитать средневзвешенные годовые значения на основе усреднения каждой ячейки сетки.
У меня есть идея, как сделать это концептуально, но я не уверен, с чего начать писать скрипт на R, чтобы применить веса ко всем ячейкам сетки, а затем усреднить их для каждого из 95 лет.Я был бы очень признателен за любую помощь в этом, или любые ресурсы, которые могут быть полезны !!!
По крайней мере, я открыл файл .nc и прочитал переменные NetCDF, как показано ниже:
ncfname<-"MaxPrecCCCMACanESM2rcp45.nc"
Prec<-raster(ncfname)
print(Prec)
Model<-nc_open(ncfname)
get<-ncvar_get(Model,"onedaymax")
longitude<-ncvar_get(Model, "lon")
latitude<-ncvar_get(Model, "lat")
Year<-ncvar_get(Model, "Year")
Кроме того, скажем, что я хотел создать временной ряд этих вновь полученных весовых усреднений для определенного местоположения или региона, следующий код, который я ранее использовал, чтобы показать тенденции за 95 лет для одногодневное максимальное количество осадков работает, но мне просто нужно немного изменить его, чтобы использовать среднегодовое взвешенное значение?:
r_brick<-brick(get, xmn=min(latitude), xmx=max(latitude), ymn=min(longitude),
ymx=max(longitude), crs=CRS("+proj=longlat +ellps=WGS84 +datum=WGS84
+no_defs+ towgs84=0,0,0"))
r_brick<-flip(t(r_brick), direction='y')
randompointlon<-13.178
randompointlat<--59.548
Random<-extract(r_brick,
SpatialPoints(cbind(randompointlon,randompointlat)),method='simple')
df<-data.frame(year=seq(from=1, to=95, by=1), Precipitation=t(Hope))
ggplot(data=df, aes(x=Year, y=Precipitation,
group=1))+geom_line()+ggtitle("One-day maximum precipitation (mm/day) trend
for Barbados for CanESM2 RCP4.5")
Кроме того, если это поможет, вот что содержит файл .nc:
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
Опять же, любая помощь будет чрезвычайно полезна в этом!Я с нетерпением жду вашего ответа!