1

我想更新以下代码以将 E-OBS 数据库的每日气候时间序列提取到多个(用户定义的)最近点:

我使用 ncdf4 包读取 E-OBS 数据:

library(ncdf4)
obsdata <- nc_open("tg_ens_mean_0.1deg_reg_v19.0e.nc")

创建具有位置和 WGS84 坐标的数据框:

df <- data.frame(locality=c(1,2,3), lat=c(48,48,48), lon=c(17,18,19))

现在,运行这些代码从最近的点提取数据并按位置的 ID 保存在单独的 csv 文件中:

for (i in 1:nrow(df)) {
  lat <- df[i,2] # longitude of location
  lon <- df[i,3] # latitude  of location
  
  
  # get dates
  obsdatadates <- as.Date(obsdata$dim$time$vals, origin = '1950-01-01')
  
  
  # get values at location lonlat
  obsoutput <- ncvar_get(obsdata, varid = "tg",
                         start= c(which.min(abs(obsdata$dim$longitude$vals - lon)), # look for closest long
                                  which.min(abs(obsdata$dim$latitude$vals - lat)),  # look for closest lat
                                  1),
                         count = c(1,1,-1)) #count '-1' means 'all values along that dimension'that dimension'
  # create dataframe
  datafinal <- data.frame(date= obsdatadates, value = obsoutput, latitude=lat, longitude=lon, variable="Tday")
  fn1<-paste0(df[i,1],"_","Tday",".csv")
  write.table(datafinal,fn1,sep=",", row.names=FALSE)
}

任何帮助表示赞赏!谢谢!

4

0 回答 0