help creating a time netcdf file

From: john koudelka <john.koudelka_at_nyahnyahspammersnyahnyah>
Date: Fri Mar 14 2014 - 14:15:30 MDT

I need some guidance as to how to properly consolidate a time series of
temperature grids into a single netcdf file.

Not sure what I'm doing wrong here, printing the ncdf_out at the end shows
only 1 item in the time dimension. Doesn't matter if I place the following
code in the do loop or after it. I don't know how to associate the grid
with the time array and I couldn't understand how this should be done.
Also, the model I'm working with needs data to be dimensioned as: y,x,time.

Variable: ncdf_out
Type: file
filename: test
path: ./test.nc
   file global attributes:
      title : Temperature Data: degC
      source : NLDAS Forcing2 - hourly
      creation_date : Fri Mar 14 14:01:28 MDT 2014
   dimensions:
      lat = 19
      lon = 17
      time = 1
   variables:
      float lat ( lat )

      float lon ( lon )

      float time ( time )

      float TEMP ( lat, lon, time )
         _FillValue : 9.96921e+36

Many thanks in advance for your help,
john

Here's my code:
;**************************************************
begin
ncfiles=systemfunc("ls *.nc")
if(dimsizes(ncfiles) .gt. 0) then
  system("rm *.nc") ;remove any pre-existing file
end if

;specify extent
latN=42.852
latS=40.500
lonL=-112.620
lonR=-110.480

cmd="ls *.grb"
grbFiles=systemfunc(cmd)
nfiles=dimsizes(grbFiles)

;create time var
;should be 'hours since 2010-10-01T00.00
;time should be provided as floating numbers
 start=str_split(grbFiles(0),".")
 year=str_get_cols(start(1), 1, 4)
 month=str_get_cols(start(1), 5, 6)
 day=str_get_cols(start(1), 7, 8)
 hour=str_get_cols(start(2),0,1)

 time = fspan(0,nfiles,1)
 time!0 = "time"
 time@units = "hours since "+year+"-"+month+"-"+day+"T00.00"
 time&time = time
 timec=tocharacter(time)
 ;print(time)

;create and define the output file
 ncdf_out = addfile("./test.nc" ,"c")
 ncdf_out@title="Temperature Data: degC"
 ncdf_out@source="NLDAS Forcing2 - hourly"
 ncdf_out@creation_date = systemfunc ("date")
 setfileoption(ncdf_out,"DefineMode",True)

;get dimensions and setup file
 g=addfile(grbFiles(0),"r")
 l=g->lat_110
 lat=l({latS:latN})
 lat!0="lat"
 lon=g->lon_110({lonL:lonR})
 lon!0="lon"
 nlat=dimsizes(lat)
 nlon=dimsizes(lon)

 dimNames = (/"lat","lon","time"/)
 dimSizes = (/nlat,nlon,dimsizes(time)/)
 dimUnlim = (/False,False,False/)
 filedimdef(ncdf_out,dimNames,dimSizes,dimUnlim)

;setup the variable
 t=g->TMP_110_HTGL
 tc = new((/nlat,nlon,dimsizes(time)/), float)
 tc!0="lat"
 tc!1="lon"
 tc!2="time"
 tc&time=time
 tc&lat=lat
 tc&lon=lon
 tc@sub_center=t@sub_center
 tc@center=t@center
 tc@long_name=t@long_name
 tc@units="degC"
 tc@level_indicator=t@level_indicator
 tc@gds_grid_type=t@gds_grid_type
 tc@parameter_table_version=t@parameter_table_version
 tc@parameter_number=t@parameter_number
 tc@model=t@model
 tc@level=t@level

;setup file variables
 filevardef(ncdf_out, "lat" ,typeof(lat),getvardims(lat))

 filevardef(ncdf_out, "lon" ,typeof(lon),getvardims(lon))
 filevardef(ncdf_out, "time" ,typeof(time),getvardims(time))

 filevardef(ncdf_out, "TEMP" ,typeof(tc) ,getvardims(tc))

; loop through the files and process
do n = 0, nfiles-1
   g=addfile(grbFiles(n),"r")

;do the conversions and add to ncdf_out
; TEMPERATURE
  t=g->TMP_110_HTGL
    tc=t({latS:latN},{lonL:lonR})-273.15
;tc(,,n)=t({latS:latN},{lonL:lonR})-273.15
        ;this spot reserved for regridding to higher resolution
    ;ncdf_out->TEMP=(/tc/)

tc!0="lat"
tc!1="lon"
tc!2="time"
tc&lat=lat
tc&lon=lon
tc&time=time
 end do

 ncdf_out->TEMP=(/tc/)
 print(ncdf_out)
end

_______________________________________________
ncl-talk mailing list
List instructions, subscriber options, unsubscribe:
http://mailman.ucar.edu/mailman/listinfo/ncl-talk
Received on Fri Mar 14 14:15:41 2014

This archive was generated by hypermail 2.1.8 : Fri Mar 21 2014 - 15:49:21 MDT