извлечение данных субсезонной температуры из сеточных данных с использованием функции - PullRequest
2 голосов
/ 19 марта 2019

У меня есть 3-мерный массив данных о суточных осадках [lon, lat, 365] и 3-мерный файл с датой посева [lon, lat, 30]. Один посев на каждый год в ячейке сетки. У меня есть код (приведенный ниже), чтобы извлечь общее количество осадков за сезон (посев для сбора урожая) в каждой ячейке сетки.

НО, теперь я хочу извлечь значения осадков только с 30-60-го дня после даты посева на каждую ячейку сетки (т.е. посев = день 157 по x, у ячейки сетки по сезону Харифа, а день 305 - это дата посева по раби на х, у ячейка сетки). Результатом будет 3-мерный массив через 30 дней после даты посева [долгота, широта, 30 дней]. Мне нужны разные окна дней после посева, т.е. день 30-60, 80-100. Дата посева может быть разной в каждой ячейке сетки, поэтому день 30 после посева может быть разным в разных ячейках сетки, но продолжительность дней (день 30-60) должна быть одинаковой. Любая помощь в выборе определенной продолжительности дня в течение сезона на основе файлов посева (sdate) и урожая (hdate), пожалуйста, оцените

просто в качестве примера:

#precipitation aray
prec<-array(0,dim=nyear)

for (year in c(2:30)) #first year not, because growing season might have started in year 0
{
  print(year+1980)
  inputprec.file<-paste("E:/Paper_2018/Prec/","prec_",1980+year,".nc",sep="")
  inputprec.file.previous<-paste("E:/Paper_2018/Prec/","prec_",1980+year-1,".nc",sep="")

  nc<-nc_open(inputprec.file)
  lons<-ncvar_get(nc,"longitude")
  lats<-ncvar_get(nc,"latitude")
  val<-ncvar_get(nc,"pr")
  nc_close(nc)

  x<-which(abs(lons-lon)<0.01)
  y<-which(abs(lats-lat)<0.01)
  #for kharif season harvest date (260) is > sowing (157)

  if(hdate[year]>sdate[year])
  {
    prec[year]<-sum(val[x,y,sdate[year]:hdate[year]]) # season total     
    }else

  {
#for Rabi sowing start in November and harvets occurs in March-April  next year
    prec[year]<-sum(val[x,y,1:hdate[year]]) # code to extract winter season total precipitation from sdate: hdate spans over two years (1982-1983)
    # nc<-nc_open(inputprec.file.previous)
    # val<-ncvar_get(nc,"pr")
    # nc_close(nc)
    prec[year]<-prec[year]+sum(val[x,y,sdate[year-1]:365])

  }
}
...