问题描述
我正在尝试将netCDF文件读入R. netcdf chirps-v2.0.1981.days_p05.nc
是从此处下载的:
I'm trying to read into R a netCDF file. The netcdf chirps-v2.0.1981.days_p05.nc
is downloaded from here:
ftp://ftp.chg.ucsb.edu/pub/org/chg/products/CHIRPS-2.0/global_daily/netcdf/p05/
此netCDF文件将全球每日降雨量描述为经度,纬度的函数,其大小为1.1 GB
This netCDF file describes daily rainfall globally as a function of longitude, latitude and has size of1.1 GB
我也有一套lon
dat <- structure(list(locatioID = paste0('ID', 1:16), lon = c(73.73, 86, 73.45, 86.41, 85.36, 81.95, 82.57, 75.66, 82.03,
81.73, 85.66, 85.31, 81.03, 81.70, 87.03, 73.38),
lat = c(24.59, 20.08, 22.61, 23.33, 23.99, 19.09, 18.85, 15.25, 26.78,
16.63, 25.98, 23.28, 24.5, 21.23, 25.08, 21.11)),
row.names = c(1L, 3L, 5L, 8L, 11L, 14L, 17L, 18L, 19L, 21L,
23L, 26L, 29L, 32L, 33L, 35L), class = "data.frame")
library(ncdf4)
library(raster)
temp <- nc_open("chirps-v2.0.1981.days_p05.nc")
precip = list()
precip$x = ncvar_get(temp, "longitude")
precip$y = ncvar_get(temp, "latitude")
precip$z = ncvar_get(temp, "precip", start=c(1, 1, 1), count=c(-1, -1, 1))
precip.r = raster(precip)
plot(precip.r)
我有两个问题:
-
任何人都可以向我解释开始并计数"参数的作用吗?
?ncvar_get
并没有给我直观的感觉.如果我要创建儒略日252天的栅格,我需要更改哪个参数?
Can anyone explain to me what does start and count argument does?
?ncvar_get
does not give me an intuitive feeling. If I want to create a raster of Julian day 252, which argument do I need to change?
如何提取dat
中每个纬度的所有365天的每日降雨量值,这样我的矩阵/数据框为16 * 365天
How do I extract the daily rainfall values for all the 365 days for every lat lon in dat
such that I have a matrix/dataframe of 16 * 365 days
推荐答案
您可以使用以下代码从.nc文件中提取数据
You can use the following code for data extraction from .nc files
dat <- structure(list(locatioID = paste0('ID', 1:16), lon = c(73.73, 86, 73.45, 86.41, 85.36, 81.95, 82.57, 75.66, 82.03,
81.73, 85.66, 85.31, 81.03, 81.70, 87.03, 73.38),
lat = c(24.59, 20.08, 22.61, 23.33, 23.99, 19.09, 18.85, 15.25, 26.78,
16.63, 25.98, 23.28, 24.5, 21.23, 25.08, 21.11)),
row.names = c(1L, 3L, 5L, 8L, 11L, 14L, 17L, 18L, 19L, 21L,
23L, 26L, 29L, 32L, 33L, 35L), class = "data.frame")
temp <- brick("chirps-v2.0.1981.days_p05.nc")
xy <- dat[,2:3] #Column 1 is longitude and column 2 is latitude
xy
spts <- SpatialPoints(xy, proj4string=CRS("+proj=longlat +datum=WGS84"))
#Extract data by spatial point
temp2 <- extract(temp, spts)
temp3 <- t(temp2) #transpose raster object
colnames(temp3) <- dat[,1] #It would be better if you have the location names corresponding to the points
head(temp3)
write.csv(temp3, "Rainfall.csv")
这篇关于从netcdf提取特定纬度的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!