Re: having trouble writing 2D var to new nc file

From: Mary Haley <haley_at_nyahnyahspammersnyahnyah>
Date: Tue Apr 05 2011 - 08:12:18 MDT

Hi Donna,

I think the problem may just be with ncl_filedump. I was able to open your file and read your two character arrays:

 a = addfile("4236162010-sample.nc","r")

 station_id = tostring(a->stationidstr)
 timestring = tostring(a->timestring)

 print("station_id = " + station_id)
 print("timestring = " + timestring)

Here's the output:

(0) station_id = 423616
(1) station_id = 423616
(2) station_id = 423616
(3) station_id = 423616
(4) station_id = 423616
(5) station_id = 423616
(6) station_id = 423616
(0) timestring = 20100601T000600
(1) timestring = 20100601T000600
(2) timestring = 20100601T000600
(3) timestring = 20100601T000600
(4) timestring = 20100601T000600
(5) timestring = 20100601T000600
(6) timestring = 20100601T000600

I'll file a ticket for the ncl_filedump problem, and now I can use your file as a sample one.

--Mary

On Apr 4, 2011, at 11:02 AM, donna Cote wrote:

> A small copy of the file is attached, but still it is 1.6K in size. In this sample, I only worked with a file of 10 records, not 188,456 ;)
>
> There are only two character type variables: stationidstr and timestring. For now, I am able to create a "stationnum" (integer) and a variable called "time". So, this is not a show-stopper for us.
> (Thank God)
>
> Thanks,
> Donna
>
> On 4/4/11 8:56 AM, Mary Haley wrote:
>> Donna,
>>
>> The problem may simply be with ncl_filedump, and not how you've written the file. The error message is co
>>
>> Can you provide us with the file?
>>
>> --Mary
>>
>> On Mar 31, 2011, at 5:16 PM, donna Cote wrote:
>>
>>> 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
>>
>>
> <4236162010-sample.nc>_______________________________________________
> 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 Tue Apr 5 08:12:29 2011

This archive was generated by hypermail 2.1.8 : Tue Apr 05 2011 - 09:01:21 MDT