The TCL Console
The “console,” available from the Tools menu, is a fully-featured Tcl/Tk interpreter with access to Bluewater internals. You can paste TCL scripts into this window and run them. A collection of tools for managing GriB files can be run from the console command line. In addition, any Tcl script added into bluewater.pref (AppData/bluewater folder) will be executed at startup.
Manipulating Gribs From the Console
To use the full set of GRiB tools described below it will help to understand Tcl programming and the Tk widget model. Each GRiB sequence is stored and accessed as an object in the form of a TK-style widget. When the program loads GriBs, it assigns the corresponding object an internal name of the form "gnn", where nn is a sequence of digits. The internal names of loaded Grib files are displayed in the Grib Manager window.
For example, you can view raw Grib values for the sequence gnn at period <period> by opening the console and typing:
gm::draw_raw_data $c raw gnn <period>
The effect of this operation is to simply display the actual numerical value of the Grib data at period <period> at every grid point. The forecast periods for a Grib can be viewed in the Grib Manager, or by a grib object call
g?? periods
Remove the raw data by typing:
$c delete raw
Some examples of things you can do: to view the header information for the GRiB with internal name g00, type into the console:
g00 header
To view the Grib data interpolated at 12N, 98W on July 1, 2011 12:00 Z, (assuming the GRiB covers that time and place) type into the console:
g00 data -point 12 -98 -attime "2011-07-01 12:00 Z"
To copy the GRiB to a new GRiB named "mygrib", using only every other data point, and write it to a file, type into the console:
g00 copy mygrib -step 2 mygrib write -file mygrib.grb
If you create your own GRiB mygrib from the console, by loading files or copying or using the other functions described below, you can make the Grib Manager aware of it, so that it can be displayed in the main window. In the console window type:
gm::registerGrib mygribYou may also use the list form:
gm::registerGrib [list mygrib1 mygrib2 ... ]
The Grib Widget Documentation
A grib widget is created by the following command.grib <gribID> {-file <gribfile> | -data <datalistn>}
"grib" creates one or more new grib widgets, one for each weather parameter in the input data. It either gets the data from a GRIB file (-file option) or from the command line (-data option). It generates a sequence of new TCL commands with name <gribID>, if only one sequence is constructed, or names
<gribID>i>, i=0,1,2,3...if the -file option is used and the file contains multiple GRiB sequences. The widget names are returned by "grib" as a list. The command takes the option:
-messages <varname>
A list of error messages generated while processing subsequence -file of -data options will be stored in <varname>. If the -data option is used, the grib data is given on the the command line, as follows.
-data [list t1 <record1> ? t2 <record2>... t_nx <recordn>?]
ti: integer forecast time for this record, in forecast time units. (Determines P1 in PDS). Default time unit is hours. For a different unit, modify -forecastunit with widget configure.
recordi: [list... ] rowi: [list d(i,0) d(i,1) ... d(i,nx-1)] d(i,j): the value at latitude lat0+i*dlat, longitude lon0+j*dlon either a single value, or a list {u v} giving vector values.
PDS and GDS values, including lat0, lon0, dlat, and dlon, can be modified by subsequent configure calls to the returned grib widget.
Once a grib widget has been created, the data in the sequence can be accessed with a widget ccommand:
gribID ?command? ?options?
The grib widget accepts the following commands:
header Returns a list of (keyword value) pairs from the sequence header. periods Returns a list of sequence periods. destroy Destroy the widget command. configure Set grib attributes example: set the grib creation date to Jan 12, 2007 g00 config -century 21 -year 7 -month 1 -day 12 with no arguments, returns a list of pairs of "-arg value" pairs for all modifiable attributes. Thus "eval g1 configure [g2 configure]" will set g1 to match g2 in all modifiable attributes. cget Get grib attributes. With no arguments, returns a list of "-arg value" pairs for all attributes, including non-modifiable ones. With a list of attribute options, returns a list of corresponding values in the same order. periods Return a list of valid times for each period in the sequence. data Returns the data values at each grid point for a given period. If the data is scalar, the value will be returned as a single number if vector, then value is returned as a 2 element list {U V}, where U is the value of the grib "U" coordinate, positive in the East direction and V is the value of the "V" coordinate, positive in the North direction The data is returned as a list of lists: {row0 row1 row2} with latitude and longitude of data points given implicitly: the ith element in rowj is at latitude lat0 + j*dlat and longitude lon0 + i*dlon, where lat0, lon0, dlat, dlon are available with the "cget" command. Note that since dlat,dlon are (normally) positive, this means the rows occur in order of increasing latitude. The data command takes the following options: -norm <TF>: <TF> is a boolean value; if true, then vector data is return as a normalized triple {u v m}, so that (u,v) is a unit vector and (U,V) = (m*u, m*v). -period <i>: return the data for the ith, defaults to period 0 -point <lat> <lon> returns only an interpolated value at lat, lon, at the valid time of whatever period is specified. <lat> and <lon> must lie within the bounds of lat0, lon0, latmax, lonmax, or an error will be generated. -attime <t>: ignored unless -point is specified. Causes 3-D interpolation at lat, lon, and time <t>. <t> is the interpolation time, in any time format acceptable to Tcl. Overrides -period switch. If the time does not fall between the forecast time of the first period, and the forecast time of the last period, an error is generated, unless -extrapolate True is added, in which case the time is pinned to the nearest of first or last time. surface Construct a triangulated surface from grid data. Takes the following options: -contours <T/F> If true, returns a list of contour lines. Each line is a list of lat/lon coordinates, representing the intersection of the surface with a clip plane specified in the next option. -clipplanes [zval0 zval1 ...] The surface is clipped against the horizontal planes implied by the z values. write -file <filename> -append <T/F> Appends grib records to an output file -file <fname> : output file. If unspecified, default is grib.grb copy <newname> ?-step <k> -region <region-spec>? Create a copy of this grib with name newname -region lat0 lon0 lat1 lon1 | [list lat0 lon0 lat1 lon1] defines a subregion of the grib to extract -period i only extract the ith period.