packing data in binary format for GrADS
Dan Leins
theedge981 at GMAIL.COM
Mon Dec 12 14:07:26 EST 2005
All,
Ok yes, following those conventions definitely had the desired effect!
Thanks for pointing me in the right direction!
Dan
On 12/12/05, Diane Stokes <Diane.Stokes at noaa.gov> wrote:
>
> Hi, Dan.
>
> I didn't go through your msg carefully to catch everything, but for
> starters, it doesn't look like you are following the required format
> described at:
>
> http://grads.iges.org/grads/gadoc/aboutstationdata.html#station
>
> The station id should be the first word in your header and should be
> written out as type character with length 8. nlev and nflag should be
> written as integer, not float.
>
> Diane
>
>
> Dan Leins wrote:
> > List,
> >
> > I'm working on a project that involves parsing through a page of text,
> > stripping out the data I want, and writing it to a binary file.
> > Ultimately I would like to take the data in the binary file and plot it
> > as station data in GrADS, but I've come across a problem when I try to
> > write my data out as binary.
> >
> > I'm decoding RR2 SHEF encoded snowfall data, stripping out the LAT/LON
> > of the station of interest, 6/12/24hr snowfall totals (if available,
> > using -999.0 to fill in missing data), and snow depth (again, -999.0 if
> > missing).
> >
> >
> > .A CLE141 1126 Z DH0000/DVH12/SFV 1.5"LAT=41.86 LON=-80.8 ASHTABULA
> 3S"/
> > .A CLE130 1126 Z DH0000/DVH12/SFV 1.5"LAT=41.58 LON=-81.2 CHARDON"/
> > .A CLE221 1126 Z DH0000/DVH12/SFV 1.4"LAT= 41.16 LON=-81.21 RAVENNA
> 1E"/
> > .A CLE032 1126 Z DH0000/DVH12/SFV 5.0"LAT=41.83 LON=-80.09 CAMBRIDGE
> > SPRINGS"/
> > .A CLE020 1126 Z DH0000/DVH12/SFV 3.2"LAT=41.93 LON=-80.3 FRANKLIN
> CTR"/
> > .A CLE023 1126 Z DH0000/DVH12/SFV 0.8"LAT=41.92 LON=-79.64 CORRY"/
> > .A CLE032 1126 Z DH0230/DVH24/SFV 3.0"LAT=41.81 LON=-80.07 CAMBRIDGE
> > SPGS"/
> > .A CLE020 1126 Z DH0000/DVH6/SFV 16.0"LAT=41.93 LON=-80.3 FRANKLIN
> CTR"/
> > .A CLE141 1126 Z DH0000/SD/ 5.0"LAT=41.86 LON=-80.8 ASHTABULA 3S"/
> > .A CLE130 1126 Z DH0000/SD/ 10.0"LAT=41.58 LON=-81.2 CHARDON"/
> > .A CLE221 1126 Z DH0230/SD/ 6.0"LAT=41.34 LON=-81.2 HIRAM RAPIDS"/
> > .A CLE221 1126 Z DH0000/SD/ 6.0"LAT=41.16 LON=-81.21 RAVENNA 1E"/
> > .A CLE032 1126 Z DH0000/SD/ 15.0"LAT=41.83 LON=-80.09 CAMBRIDGE
> SPRINGS"/
> > .A CLE032 1126 Z DH0230/SD/ 7.0"LAT=41.81 LON=-80.07 CAMBRIDGE SPGS"/
> > .A CLE023 1126 Z DH0000/SD/ 17.0"LAT=41.92 LON=-79.64 CORRY"/
> > .A CLE020 1126 Z DH0000/SD/ 12.0"LAT=41.93 LON=-80.3 FRANKLIN CTR"/
> >
> > Using the logic from an existing script...I start w/
> >
> > #!/usr/local/perl/bin/perl
> > open BINFILE, ">snowfall.bin";
> >
> > open (RR2, "<rr2.txt");
> > while (<RR2>){
> >
> > #6 hr snow depth search
> > if (/DVH6\S{4}\s(\d+.\d+)"LAT=(\d{2}.\d+)\sLON=(-\d{2}.\d+)\s/){
> > $sf_6 = $1;
> > $latitude="$2";
> > $longitude="$3";
> > $sf_12= "-999.0";
> > $sf_24= "-999.0";
> > $sd= "-999.0";
> > print "6hr: $sf_6 12hr: $sf_12 24hr: $sf_24 SD: $sd LAT: $latitude LON:
> > $longitude\n";
> > $nLev=1;
> > $nFlag=1;
> > $timeInc=0.;
> > $buffer = pack 'f f f f f f f f f', $latitude, $longitude, $timeInc,
> > $nLev, $nFlag, $sf_6, $sf_12, $sf_24, $sd;
> > print BINFILE $buffer;
> > }
> >
> > I do the same thing for the other variables too, 12hr, 24hr, and snow
> > depth. I didn't bother to include them here, they look the same except
> > for the - 999.0 values which vary.
> >
> > At the end of my script, I end w/
> >
> >
> > $nLev=0;
> > $nFlag=0;
> > $buffer = "pack 'f f f f f', $latitude, $longitude, $timeInc, $nLev,
> > $nFlag";
> > print $buffer;
> >
> > exit;
> >
> > Again, following suit with what I've seen before. I get a snowfall.bin
> > file w/out a problem, but when I go to run `stnmap -i snowfall.ctl`...I
> > get the following error...
> >
> > Name of binary data set: snowfall.bin
> > Number of times in the data set: 1
> > Number of surface variables: 4
> > Number of level dependent variables: 0
> >
> > Starting scan of station data binary file.
> > Binary data file open: snowfall.bin
> > Processing time = 1
> > Invalid station hdr found in station binary file
> > Possible causes: Invalid level count in hdr
> > Descriptor file mismatch
> > File not station data
> > Invalid relative time
> > levs = -998653952 flag = 1069547520 time = 1
> >
> > My snowfall.ctl file is pretty straightforward, I'm pretty confident I
> > don't have any errors in there, just 4 variables (6hr,12hr,24hr,sd) and
> > the DTYPE set to station. While the error is semi-cryptic, I can infer
> > that something's not right with how the data is being written to the
> > binary file. Like I said, this is more of a problem of getting data
> > into a "grads-readable" format instead of actually using GrADS, but
> > maybe someone has used station data enough to have come across this
> > error. Does anyone have any insight as to how I can go about fixing it?
> > Any help would be appreciated!
> >
> > Thanks!
> >
> > Dan Leins
> >
>
> --
> Diane Stokes
> Environmental Modeling Center
> National Weather Service/NOAA
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://gradsusr.org/pipermail/gradsusr/attachments/20051212/4568af68/attachment.html
More information about the gradsusr
mailing list