如何放大从netCDF文件创建的地图?您如何获取netcdf变量的平均值和标准偏差(例如降水)在地图中将其可视化?
而且,当我映射它时,我的经度是从-150-150开始,这正确吗?我认为应该是-180-180。
此外,我想为地图的全局区域和放大区域创建一个时间序列。
总结:我如何: 可视化R中的netCDF文件,并取平均值和标准差 放大地图 为全局区域和放大区域创建时间序列?
我将一个netCDF文件上传到R中,并使用光栅包对其进行可视化并绘制。经度从-150-150开始。我不知道如何计算平均值或标准差数据,尽管由于它与纬度/经度和时间有关
使用的数据:可以找到我正在使用的数据({https://esgf-node.llnl.gov/search/cmip6/,其变量为“ pr”,频率为“ mon”,源ID为“ EC-Earth3”文件-> pr_Amon_EC-Earth3_historical_r1i1p1f1_gr_199801-199812) / p>
#tutorial followed: https://rpubs.com/boyerag/297592
library(ncdf4) # package for netcdf manipulation
library(raster) # package for raster manipulation
library(rgdal) # package for geospatial analysis
library(ggplot2) # package for plotting
nc_data <- nc_open('pr_Amon_EC-Earth3_historical_r1i1p1f1_gr_199801-199812.nc')
# Save the print(nc) dump to a text file
{
sink('pr_Amon_EC-Earth3_historical_r1i1p1f1_gr_199801-199812.txt')
print(nc_data)
sink()
}
lon <- ncvar_get(nc_data, "lon")
lon[lon > 180] <- lon[lon > 180] - 360
lat <- ncvar_get(nc_data, "lat", verbose = F)
t <- ncvar_get(nc_data, "time")
head(lon)
ndvi.array <- ncvar_get(nc_data, "pr") # store the data in a 3-dimensional array
dim(ndvi.array)
fillvalue <- ncatt_get(nc_data, "pr", "_FillValue")
fillvalue
nc_close(nc_data)
ndvi.array[ndvi.array == fillvalue$value] <- NA
ndvi.slice <- ndvi.array[, , 1]
dim(ndvi.slice)
r <- raster(t(ndvi.slice), xmn=min(lon), xmx=max(lon), ymn=min(lat), ymx=max(lat), crs=CRS("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs+ towgs84=0,0,0"))
r <- flip(r, direction='y')
plot(r)
#add countries!!!!
library(maptools)
data(wrld_simpl)
plot(wrld_simpl, add = TRUE)
#showing precip in january 1998
#add country boundaries X
#standard deviation, average
#time series of globe versus time series over smaller region
#zoom in
我得到一张地图,其中有-150至150 lon,有-100至100 lat的国家/地区边界