Howdy experts (y'all), I wonder if I have approached this correctly. I'm
trying to take a string of 6 characters, use them to populate a 2D array
of the 6 characters (per record in the file), and then write the 2D
variable to a new netCDF file. In particular, I'm not sure my approach
(where I have "questioning this portion") is a working one. Something
isn't working because after the ncl script successfully runs, the new
netCDF file gives me an error when I do:
ncl_filedump -v stationidstr adcp-testcase.nc
Thanks in advance, Donna
READFN="testcase-adcp.txt"
data = asciiread("/tmp/"+READFN,-1,"string")
ndata = dimsizes(data)
<snip>
ST_ID_Str = new(ndata,"string","")
<snip>
; arranged column numbers for column-formatted pre-processed file -dlc
ST_ID_Str = str_get_cols(data,0,5)
<snip>
ST_ID_StrLen=max(strlen(ST_ID_Str)) + 1
; add 1 to account for the terminator character
<snip>
;;;;;; questioning this portion
nullChar = inttochar(0)
; could use nullChar to test a single char to see if it's null
StationIDstr = new((/ndata,ST_ID_StrLen/),"character",nullChar)
do ircd=0,ndata-1
StationIDstr(ircd,:)=stringtochar(ST_ID_Str(ircd))
end do
;;;;;;
<snip, see "snippet A" below>
<snip>
filevardef(fout,"stationidstr","character",
(/"recordcount","ST_ID_StrLen"/))
fout->stationidstr@_FillValue = nullChar
<snip>
fout->stationidstr= (/StationIDstr/)
After the nc file is created, integer and float variables look great.
But not this string changed to characters 2D variable.
I get the message:
fatal:Argument type mismatch on argument (0) of (make_var2d) can not coerce
fatal:Execute: Error occurred at or near line 135 in file
/var/folders/g9/g9wihWJCFayhpNTWt06Ksk+++TU/-Tmp-/tmp1005.ncl
P.S.
Running with NCAR Command Language Version 5.2.1
sample input file (where first six characters is the station ID) is:
423616 2010-06-01T00:06:00 27.55 -92.49 51.0 249 15.5 1 3 333393330
423616 2010-06-01T00:06:00 27.55 -92.49 67.0 270 10.0 2 3 333393330
423616 2010-06-01T00:06:00 27.55 -92.49 83.0 204 4.9 3 3 333393330
423616 2010-06-01T00:06:00 27.55 -92.49 99.0 261 9.6 4 3 333393330
423616 2010-06-01T00:06:00 27.55 -92.49 115.0 213 8.3 5 3 333393330
423616 2010-06-01T00:06:00 27.55 -92.49 131.0 249 9.7 6 3 333393330
423616 2010-06-01T00:06:00 27.55 -92.49 147.0 279 10.1 7 3 333393330
423616 2010-06-27T18:16:00 27.55 -92.49 771.0 300 4.0 46 3 333393333
423616 2010-06-27T18:16:00 27.55 -92.49 787.0 333 1.1 47 3 333393333
423616 2010-06-27T18:16:00 27.55 -92.49 803.0 45 2.1 48 3 333393333
< snippet A>
WRITEFN = "adcp-testcase.nc" ; netCDF file to write.
if(isfilepresent(diro+WRITEFN))
system("/bin/rm -f " + diro + WRITEFN) ; remove any pre-existing file
fout = addfile(diro+WRITEFN,"c")
setfileoption(fout,"DefineMode",True) ; Enter predefine phase.
ndims = 3
string_FillValue = "-99999"
integer_FillValue = -99999
logical_FillValue = 0
dimNames = new(ndims,"string",string_FillValue)
dimSizes = new(ndims,"integer",integer_FillValue)
dimNames(0) = "recordcount"
dimNames(1) = "ST_TIME_StrLen"
dimNames(2) = "ST_ID_StrLen"
dimSizes(0) = ndata
dimSizes(1) = ST_TIME_StrLen ; added 1 to account for the
terminator character
dimSizes(2) = ST_ID_StrLen ; added 1 to account for the
terminator character
filedimdef(fout,dimNames,dimSizes,(/False,False,False/))
_______________________________________________
ncl-talk mailing list
List instructions, subscriber options, unsubscribe:
http://mailman.ucar.edu/mailman/listinfo/ncl-talk
Received on Thu Mar 31 17:16:42 2011
This archive was generated by hypermail 2.1.8 : Tue Apr 05 2011 - 09:01:21 MDT