Re: warning:A bad value was passed to stringtointeger

From: Dave Allured <dave.allured_at_nyahnyahspammersnyahnyah>
Date: Thu Jan 21 2010 - 22:12:14 MST

Kim,

An easy way to put all the files together is with the NCO utilities,
which is separate from NCL. Use ncrcat. This program was made to
do exactly what you want to do. There is no programming; it is all
done in a single command line.

Look under "Other Tools" on this page:

http://www.ncl.ucar.edu/Document/Tools/

Dave Allured
CU/CIRES Climate Diagnostics Center (CDC)
http://cires.colorado.edu/science/centers/cdc/
NOAA/ESRL/PSD, Climate Analysis Branch (CAB)
http://www.esrl.noaa.gov/psd/psd1/

Kim wrote:
> Dear Rick,
>
> First of all thanks for your response, the code is working properly when
> I making the individual nc files but I want to convert all the data
> (from 199610-200908) into one file (i.e.GPCP.199610-200908.nc
> <http://i.e.gpcp.199610-200908.nc/>), I don’t know how to do it? Any
> help would be appreciated.
>
> Thanks
>
> kim
>
> --- On *Thu, 1/21/10, Rick Brownrigg /<brownrig@ucar.edu>/* wrote:
>
>
> From: Rick Brownrigg <brownrig@ucar.edu>
> Subject: Re: warning:A bad value was passed to
> stringtointeger
> To: "Kim" <r4rid@yahoo.com>
> Cc: ncl-talk@ucar.edu
> Date: Thursday, January 21, 2010, 10:02 AM
>
> Hi,
>
> Regarding the error, it looks to me like your filename do not
> conform to the convention expected by the
> function parse_gpcp_filename():
>
> function parse_gpcp_filename( fName:string )
> ; parse file name: return yyyy, mm
> ; gpcp_1dd_v1.1_p1d.200908
> ; 012345678901234567890123
>
> Can you confirm whether or not your files match the pattern
> described in the comments; i.e., with a yyyymm pattern in columns 18-23?
>
> Rick
>
> On Jan 21, 2010, at 2:54 AM, Kim wrote:
>
>> Dear NCL user,
>> I got the code from ncl-talk archived for converting the binary
>> files (gpcp daily data) to nc files. When I run the code it
>> indicates some errors given below & code is also attached.
>> Further, I want to make the file like ("GPCP.199610-200908.nc) and
>> with the help of this file I am interested to draw the plot as the
>> figure attached. Kindly, any help in this regarding will be
>> appreciated.
>> Thanks
>> Kim
>>
>> warning:A bad value was passed to stringtointeger, input strings
>> must contain numeric digits, replacing with missing value
>> fatal:Subscript out of range, error in subscript #0
>> fatal:An error occurred reading c
>> fatal:Execute: Error occurred at or near line 33 in file gprec.ncl
>>
>> fatal:Execute: Error occurred at or near line 78 in file gprec.ncl
>> *************************
>> ; Convert binary to netCDF
>> ; -------------------------------------------------------
>> DIRI = "/home/kim/GPCP1dd/" ; input directory with binary files
>> DIRO = "/home/kim/" ; output directory with netCDF
>> PACK = True
>> if (PACK) then
>> optPack = True
>> optPack@min_value = 0.
>> optPack@max_value = 2009. ; max value thru 2009 = 1975 mm/day :-)
>> optPack@scale_factor = 0.1
>> optPack@add_offset = 0.0
>> else
>> optPack = False
>> end if
>> load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
>> function parse_gpcp_filename( fName:string )
>> ; parse file name: return yyyy, mm
>> ; gpcp_1dd_v1.1_p1d.200908
>> ; 012345678901234567890123
>> ; 1 2
>> begin
>> info = new( 2, "integer", "No_FillValue")
>> c = stringtochar( fName )
>> info(0) = stringtoint( (/c(18:21)/) ) ; yyyy
>> info(1) = stringtoint( (/c(22:23)/) ) ; mm
>> return( info )
>> end
>> begin
>> ; -------------------------------------------------------
>> ; define lat/lon grid: GPCP goes from N=>S
>> ; -------------------------------------------------------
>> nlat = 180
>> mlon = 360
>> lon = lonGlobeFo(mlon,"lon","longitude","degrees_east")
>> lat = latGlobeFo(nlat,"lat","latitude","degrees_north")
>> lat = lat(::-1) ; make N=>S
>> printVarSummary(lat)
>> ; -------------------------------------------------------
>> ; Define generic file attributes
>> ; -------------------------------------------------------
>> nline = inttochar(10) ; new line character
>> fAtt = 0 ; attributes for netCDF file
>> fAtt@creation_date = systemfunc("date")
>> fAtt@Reference = nline + \
>> "Huffman, G.J., R.F. Adler, M.M. Morrissey, S. Curtis " + nline + \
>> "R. Joyce, B. McGavock, and J. Susskind, 2001: " + nline + \
>> "Global precipitation at one-degree daily resolution from
>> multi-satellite observations" + nline +\
>> "J. Hydrometeor., 2, 36-50" + nline
>> fAtt_at_Conversion = "NCL: http://www.ncl.ucar.edu/"
>> fAtt@Convention = "CF-1.0"
>> fAtt_at_Source = "ftp://rsd.gsfc.nasa.gov/pub/1dd-v1.1/"
>> fAtt_at_GSFC = "http://precip.gsfc.nasa.gov/"
>> fAtt@Comment = "netCDF version of original binary file(s)"
>> fAtt@Title = "GPCP ONE-DEGREE DAILY PRECIPITATION DATA SET"
>> ; -------------------------------------------------------
>> ; names of all 1dd files in the directory "diri"
>> ; -------------------------------------------------------
>> diri = DIRI
>> fili = systemfunc("cd "+diri+" ; ls gpcp_1dd_v1.1_p1d*")
>> nfil = dimsizes( fili )
>> print(fili)
>> diro = DIRO
>> ; -------------------------------------------------------
>> ; Loop over all files and create individual netCDF.
>> ; Use "ncrcat" if one file is desired/
>> ; -------------------------------------------------------
>> setfileoption("bin","ReadByteOrder","BigEndian")
>> do nf=0,nfil-1
>> info = parse_gpcp_filename( fili(nf) ) ; yyyy, mm
>> yyyy = info(0) ; clarity
>> mm = info(1)
>> ntim = days_in_month(yyyy, mm )
>> ; read header + all days in the month
>> dumy = fbindirread(diri+fili(nf),0,360+ntim*360*180,"float")
>> ; create netCDF
>> prec = onedtond( dumy(360:), (/ntim,nlat,mlon/) ) ; skip header
>> delete (dumy) ; size may change for next month
>> ; ---------------------------------------------------------
>> ; Construct primary data object
>> ; ---------------------------------------------------------
>> prec@long_name = "GPCP: daily precipitation"
>> prec@units = "mm/day"
>> prec@_FillValue = -99999.
>> prec@missing_value = prec@_FillValue
>> prec!0 = "time"
>> prec!1 = "lat"
>> prec!2 = "lon"
>> prec&lat = lat
>> prec&lon = lon
>> ; ---------------------------------------------------------
>> ; create time variables
>> ; ---------------------------------------------------------
>> yyyymm = yyyy*100 + mm
>> days = ispan(1,ntim,1)
>> hh = 12 ; middle of day (arbitrary)
>> date = yyyymm*10000 + days*100 + hh
>> date!0 = "time"
>> date@long_name = "gregorian date"
>> date@units = "yyyymmddhh"
>> YYYY = conform(date, yyyy, -1) ; make scalar a vector to match "days"
>> MM = conform(date, mm, -1)
>> HH = conform(date, hh, -1)
>> ZERO = conform(date, 0, -1)
>> tunits = "days since 1996-10-01 00:00:00" ; arbitrary
>> time = ut_inv_calendar(YYYY,MM,days,HH, ZERO , ZERO ,tunits, 0)
>> time!0 = "time"
>> time@long_name = "time"
>> time@units = tunits
>> ; ---------------------------------------------------------
>> ; create netCDF
>> ; ---------------------------------------------------------
>> yyyy = info(0)
>> mm = info(1)
>> yyyymm = yyyy*100 + mm
>> ;ncfile = diro+fili(nf)+".nc"
>> ncfile = diro+"GPCP.1DD."+yyyymm+".nc"
>> print (ncfile)
>> system ("/bin/rm -f " + ncfile) ; remove an pre-file
>> ncdf = addfile(ncfile,"c") ; "c"reate the netCDF file
>> fileattdef( ncdf, fAtt )
>> dimNames = (/ "time", "lon", "lat" /)
>> dimSizes = (/ -1 , mlon, nlat /)
>> dimUnlim = (/ True , False, False /)
>> filedimdef( ncdf, dimNames, dimSizes, dimUnlim )
>> ; Define 1D variables.
>> filevardef ( ncdf, "time", typeof(time), getvardims(time) )
>> filevarattdef( ncdf, "time", time )
>> filevardef ( ncdf, "lat", typeof(lat), getvardims(lat) )
>> filevarattdef( ncdf, "lat", lat )
>> filevardef ( ncdf, "lon", typeof(lon), getvardims(lon) )
>> filevarattdef( ncdf, "lon", lon )
>> ; Define 1D variables.
>> filevardef ( ncdf, "date", typeof(date), getvardims(date) )
>> filevarattdef( ncdf, "date", date )
>> if (PACK) then
>> filevardef ( ncdf, "PREC", "short", getvardims(prec) )
>> pShort = pack_values(prec, "short", optPack)
>> delete(pShort@vMin_original_data) ; extraneous
>> delete(pShort@vMax_original_data)
>> filevarattdef( ncdf, "PREC", pShort )
>> else
>> filevardef ( ncdf, "PREC", typeof(prec), getvardims(prec) )
>> filevarattdef( ncdf, "PREC", prec )
>> end if
>> ; Write variables.
>> ncdf->time = (/time/)
>> ncdf->lat = (/lat /)
>> ncdf->lon = (/lon /)
>> ncdf->date = (/date/)
>> if (PACK) then
>> ncdf->PREC = (/pShort/)
>> delete(pShort)
>> else
>> ncdf->PREC = (/prec/)
>> end if
>> delete (prec) ; size may change for next month
>> delete (time)
>> delete (date)
>> delete (days)
>> delete(YYYY )
>> delete(MM )
>> delete(HH )
>> delete(ZERO )
>> end do
>> end
>>
>>
>> <Fig..pdf>_______________________________________________
>> ncl-talk mailing list
>> List instructions, subscriber options, unsubscribe:
>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> ncl-talk mailing list
> List instructions, subscriber options, unsubscribe:
> http://mailman.ucar.edu/mailman/listinfo/ncl-talk

_______________________________________________
ncl-talk mailing list
List instructions, subscriber options, unsubscribe:
http://mailman.ucar.edu/mailman/listinfo/ncl-talk
Received on Thu Jan 21 22:12:21 2010

This archive was generated by hypermail 2.1.8 : Mon Feb 01 2010 - 08:05:34 MST