packing data in binary format for GrADS

Dan Leins theedge981 at GMAIL.COM
Mon Dec 12 09:33:36 EST 2005


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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://gradsusr.org/pipermail/gradsusr/attachments/20051212/76bf058b/attachment.html 


More information about the gradsusr mailing list