[ncl-talk] Writing SPI to netCDF files
Rick Brownrigg
brownrig at ucar.edu
Sat Jan 2 07:05:55 MST 2016
Hi,
I'm not expert at this: I see where you use filevardef() to define a
variable in the output file named SPI, but I don't see where you actually
copy data into that variable. I also see that you define an output
variable named "time", but then copy data into an output variable "T":
e.g., fout->T = ..... Is this what is intended?
Rick
On Fri, Jan 1, 2016 at 11:26 PM, misnawati misna <misna39 at yahoo.com> wrote:
>
> Dear NCL Supoort,
>
> I was run SPI scripts as below and it's work, but I try to save the output
> of SPI to netCDF file, and I got the results but all values of SPI are
> -9999, anyone can help me to fix it?
>
>
> Thank you very much,
>
>
> Misna
>
> load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
> load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
> load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
>
> diri = "./"
> fili = "UCSB_CHIRPS_v2p0_mo8114_indo.nc"
> f = addfile(diri+fili, "r")
>
> prc = f->precipitation(0:407,:,:)
> ;print(prc)
> pmsg = prc at _FillValue ; convenience
>
> printVarSummary(prc)
> printMinMax(prc,0)
>
> runlen = (/ 12, 24 /)
> nrun = dimsizes(runlen)
> ;*********************************
> ; plot parameters
> ;*********************************
> dimprc = dimsizes(prc)
> ntim = dimprc(0)
> nlat = dimprc(1)
> mlon = dimprc(2)
>
> yyyymm = cd_calendar(f->T(0:407), -1)
> ;print(yyyymm)
> ;yyyymm = yyyymm/100
>
> year = yyyymm/100
> ;print(year)
> nyear = dimsizes(year)
> ;print(nyear)
> yrStrt = year(0)
> ;print(yrStrt)
> yrLast = year(ntim-1)
> ;print(yrLast)
> nyear = yrLast-yrStrt+1
> yyyymm = yyyymm_time(yrStrt, yrLast, "integer")
> yrfrac = (/ yyyymm_to_yyyyfrac(yyyymm, 0.0) /)
>
> prc&T = (/ yyyymm /)
>
> ;=================================
>
> wks = gsn_open_wks ("png","spiprojectindo1")
>
> gsn_define_colormap(wks,"BlueWhiteOrangeRed")
> gsn_reverse_colormap(wks) ; Reverse the color map.
>
> res = True
> res at gsnDraw = False ; don't draw
> res at gsnFrame = False ; don't advance frame
> res at gsnSpreadColors = True
> res at mpMinLonF = 90 ;koordinat indonesia
> res at mpMaxLonF = 145
> res at mpMinLatF = -11
> res at mpMaxLatF = 6
> res at gsnAddCyclic = False
> res at cnFillOn = True ; color Fill
> res at cnFillMode = "RasterFill" ; Raster Mode
> res at cnLinesOn = False ; Turn off contour lines
> res at cnLevelSelectionMode = "ManualLevels" ; set manual contour levels
> res at cnMinLevelValF = -3.0 ; set min contour level
> res at cnMaxLevelValF = 3.0 ; set max contour level
> res at cnLevelSpacingF = 0.5 ; set contour spacing
> res at lbLabelBarOn = False ; turn off individual cb's
>
> resP = True ; panel resources
> resP at txString = "SPI: 1981-2014 (CHIRPS)" ; add center string
> resP at gsnPanelLabelBar= True ; add common colorbar
>
> plot = new ( 2, "graphic")
>
> do nr=0,nrun-1
> spi = dim_spi_n(prc, runlen(nr), False, 0)
>
> spi at long_name = "SPI"
> spi at units = "run="+runlen(nr)
> copy_VarCoords(prc, spi)
>
> res at gsnCenterString = yyyymm({200007})
> plot(0) = gsn_csm_contour_map_ce(wks,spi({200007},:,:), res)
>
> res at gsnCenterString = yyyymm({200612})
> plot(1) = gsn_csm_contour_map_ce(wks,spi({200612},:,:), res)
>
> gsn_panel(wks,plot,(/2,1/),resP)
> end do
>
>
> dimprc = dimsizes(prc)
> ntim = dimprc(0)
> nlat = dimprc(1)
> mlon = dimprc(2)
> ;ntime=time
> ;nlat=lat
> ;mlon=lon
> diro = "./" ; Output directory
> filo = "IndeksKekeringan.nc" ; Output file
> system("/bin/rm -f " + diro + filo) ; remove if exists
> fout = addfile (diro + filo, "c") ; open output file
> ;print(fout)
>
> setfileoption(fout,"DefineMode",True)
>
> fAtt = True ; assign file attributes
> fAtt at title = "NCL Efficient Approach to netCDF Creation"
> fAtt at source_file = "UCSB_JawaTengah.nc"
> fAtt at Conventions = "None"
> fAtt at creation_date = systemfunc ("date")
> fileattdef( fout, fAtt ) ; copy file attributes
> dimNames = (/"T", "Y", "X"/)
> dimSizes = (/ ntim , nlat, mlon/)
> dimUnlim = (/ False , False, False/)
> filedimdef(fout,dimNames,dimSizes,dimUnlim)
> print(dimNames)
> print(dimSizes)
> print(dimUnlim)
> filevardef(fout, "time" ,typeof(spi&T),getvardims(spi&T))
> filevardef(fout, "lat" ,typeof(spi&Y),getvardims(spi&Y))
>
> filevardef(fout, "lon" ,typeof(spi&X),getvardims(spi&X))
>
> filevardef(fout, "SPI" ,typeof(spi),getvardims(spi))
>
> filevarattdef(fout,"SPI",spi) ; copy T attributes
> filevarattdef(fout,"time" ,spi&T) ; copy time
> attributes
> filevarattdef(fout,"lat" ,spi&Y) ; copy lat
> attributes
> filevarattdef(fout,"lon" ,spi&X) ; copy lon
> attributes
>
> setfileoption(fout,"DefineMode",False)
> fout->T = (/spi&T/)
> fout->lat = (/spi&Y/)
> fout->lon = (/spi&X/)
>
>
> _______________________________________________
> ncl-talk mailing list
> ncl-talk at ucar.edu
> List instructions, subscriber options, unsubscribe:
> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20160102/7e8bdd14/attachment.html
More information about the ncl-talk
mailing list