您如何映射NetCDF文件,以及如何放大,取平均/标准偏差?

时间:2019-07-23 15:40:58

标签: r mapping raster netcdf4

如何放大从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的国家/地区边界

0 个答案:

没有答案