Enter a ZIP code to get a forecast:
Setup Location

WRN Logo

New Features in WXP 6.0

Latest Version 6.62
December 30, 2009

New in version 6.62 (December 2009)

  • Added forecast time parsing for range (beg-end/dt).  For example: 
    This makes a short hand in creating loops with figure and other forecast related programs.
  • Added the ability to plot underlay and overlay maps in each panel
  • The meteoplot program now handles forecast output (MOS) from NAM and GFS models
  • Added full MOS data processing to mosplot
  • Reworked variable processing in SfcPlot, UpaPlot and MosPlot.  Now variable processing is done in the following steps:
    • Decode variable parameter
    • Read in of raw data or grids
    • Use ObjectAnal to grid raw data
    • Apply functions to grids
    • Plot grids and raw data
    What this does is make sure all parameters are process including the nested and subparameters.  It also simplifies the code and increases stability
  • The NIDS plotting now supports products 94 and 99 which are to replace products 19 and 27 in the near future
  • The nids2image program can now properly create mosaics of products such as cref, vil, 3 hr prec, etc.
  • Changed plot_format resource to just format
  • Added wxpres and gridmath programs
  • Removed plotting of contour max/min labels when grid is missing in Contour
  • Added Data::searchInfo and printData(ind)
  • Added code to DataMath::add to preserve valid field if input data has one
  • Added DataMath::replace to replace one value in data with another
  • Added %j (julian day) and %u (day of week) to Date::toString output
  • Added code to DateTool::decode to decode "dd mmm yy"
  • Fixed a bug in DateTool::decode where month not properly decoded if month is numeric
  • Added flag to DateTool::createLabel to add day of week to label
  • Changed DateTool functions to take forecast hours as a float rather than int
  • Added forecast time range (beg-end/dt) to Figure
  • Added Figure::startPlot( Rect )
  • Fixed the setting on the plot date in Figure
  • Fixed a bug in File::skipLine where extra line read if sitting at newline (should just read newline)
  • Fixed bug in Filename where file offset time not set.  So plots which skipped hours didn't
  • Fixed bug in GifFile where control extensions not read in (wrong variable)
  • Fixed a bug in GifFile where transparent color ignored
  • Fixed bug in GribFile where variable parameters not set properly when reading from a header file (uninitialized variable)
  • Fixed a bug in GribFile where year encoded as yyyy when it should be yy
  • Fixed bug in GribPDB where GRIB2 time parameters not properly decoded
  • Added code to delete arrays in Grid when initialized
  • Fixed several bugs in GridBox related to locating grid box that wraps domain
  • Added prepend of grid_path resource to files in GridCont
  • Fixed an issue with the setting of use_header in GridFile
  • Changed GridFile::read( spec, grid ) to read( grid, spec ) and added GridFile::read( file, grid )
  • Added functions to GridMath::process: max, min, sum, ugeos, vgeos, wchill, theta, show
  • Added GridMath::max, min, dewTemp, mixRatio, windChill, showalter, interp
  • Fixed several bugs related to computing dx and dy in GridMath for functions like vorticity and convergence
  • Added map_line, map_fill parameters to GridPlot
  • Removed GridPlot::updateSpec (moved to GridTool)
  • Fixed several bugs in variable processing in GridPlot
  • Fixed search for preset grids in GridTool::read
  • Added GridTool::read( mspec, date, gspec, grid )
  • Added GridTool::updateSpec
  • Added Grids::isVarSet
  • Removed debug output from Hash
  • Added fixed date (hour resource) to Lev2Plot, MdrPlot, NidsPlot, RcmPlot.  Fixed a bug related to fixed data in RadPlot
  • Added more output to MapPlot::print
  • Added code to MeteoPlot to handle model forecast plots
  • Changed MosData to use tmax and tmin rather than ext
  • Changed MosData::(sg)etPtype to (sg)etPType
  • Cleaned up data processing in MosDataTool and added all appropriate MOS parameters including weather, visibility, precip, snow, etc
  • Changed output of MosFile::getModel to have MOS added to model name (NAM MOS rather than just NAM)
  • Updated MosFile to reflect new parameters in MosData
  • Added grid scaling to MosGrid
  • Added map_line and map_fill parameters to MosPlot
  • Added proper variable processing to MosPlot
  • Added forecast time range decoding to MosRaw
  • Added MosUData and MosUFile to read in upper air model output
  • Added processing of products 94 and 99 to NidsFile
  • Fixed a couple of bugs in NidsFile relative to threshold parameters
  • Fixed a bug in NidsFile that would allow garbled graphics alphanumeric data to result in infinite loop
  • Fixed a bug in NidsFile where domain for VAD winds not set properly
  • Fixed bug in NidsImage that would produce bad output for non-bref products
  • Fixed bug in NidsPlot that would improperly determine file parameters in init()
  • Added products 94 and 99 to output in NidsPlot
  • Fixed bug in ObjectAnal where grid data not properly allocated for all grids
  • Added Panel object (in development)
  • Added Parse::seek and Parse::tell
  • Reworked Plot::setDomain functions to allow for full plot output (used for meteograms)
  • Added code to remove trailing whitespace from info field in RawFile::read
  • Fixed a bug where there was no space after formatted output in RawFile::write
  • Added initialization code to RawPlot
  • Added RawPlot::setHour, RawPlot::setVariable
  • Reworked label generation in RawPlot
  • Added min and max plot parameters to RawPlot
  • Added prepend of raw_path resource to files in RawPlot
  • Reworked variable processing in SfcPlot separating read/grid, function and plotting capabilities
  • Added Strings::find to search for a string in a list
  • Added Unit::simplify( String )
  • Fixed bug in UpaCalc::liftedIndex where surface level not always initialized
  • Changed UpaData::getSfcPr to getSfcPres
  • Added several new parameters to UpaDataTool::compute
  • Added map_line and map_fill parameters to UpaPlot
  • Reworked variable processing in UpaPlot separating read/grid, function and plotting capabilities
  • Removed default level to UpaRaw.  Now level must be specified
  • Fixed output of Variable::toString so that string can be decoded by Variable (no upper case and spaces)
  • Changed VCoord::PRESS to PRES
  • Added VarName::get( int, VarNameItem )
  • Added VarSpec::set( VarSpec )
  • Fixed a bug where "lcf" plot type wasn't considered a contour in VarSpec
  • Added VarSpec::update functions
  • Fixed several small bugs in Variable::toIndCode
  • Changed plot_format resource to just format in WxpResrc
  • Added some additional checking in XWindow to remove possible memory leaks from X11 parameters not getting freed
  • Fixed a bug in XWindow::drawImage where transparent color ignore in indexed color images
  • Reworked gribfile so that it could properly output grid files.  Essentially separated display of grid information from saving of grids.  This allows pieced grids to be saved
  • Added prepending of grid_path to gribfile output file
  • Added first cut at gridmath program
  • Fixed plotting area in meteoplot
  • Added object analysis resources to mosplot
  • Added code to mostext to output MOSU data
  • Added noborder option to plot program
  • Reworked rawmath program to accomodate more functions
  • Added output format parameter to rawmath
  • Added prepending of raw_path resource to rawmath input and output files
  • Added object_anal resource to rawplot
  • Added prepending of raw_path resrouce to sfcraw, uparaw and mosraw programs

New in version 6.61.2 (October 2009)

  • Added several new functions into GridMath.  About half of the WXP v5 functions are now ported
  • Changed environment variables for paths to wxp#path with # being first character of resoource name
  • Added lev2image and nameconv programs
  • Added initializing to BufrCode
  • Fixed a bug where data might be improperly read when reaching end of codes in BufrFile
  • Added parameter option to Contour for labeling parameters separated by commas
  • Added the ability to specify fixed date in Figure
  • Fixed a bug in ForeTime where time range was computed backwards
  • Added several functions to GridMath including sum, avg, min, max, wchill and wchill2
  • Added checkVar function to GridMath to check to see if proper parameters are available for processing
  • Added setInfo function to GridMath to remove redundant code
  • Added multi grid "add" function to GridMath (i.e. sum)
  • Added multi grid "avg" function to GridMath
  • Added setSpec function to GridPlot to override variable specification
  • Added code to GridPlot to set output variable if function changes time and level parameters of output
  • Added code to Level to compute upper and lower layer values for height and potential temperature layers
  • Added code in MiscPlot to reset draw parameters before plotting
  • Fixed a bug in NidsFile where readBytes passed a NULL data location might still get data copied into it
  • Added code to ObjectAnal to process parameters (oa=....) separated by a comma
  • Fixed a bug in Plot where the formatted plotting of labels would misinterpret a single "%" and not print it out
  • Added Prog::printProg( lev, str ) so that the printing of program title is not always tied to level MESS
  • Added uwnd and vwnd computations to UpaCalc::calc
  • Fixed bug to make sure all wind data is output in m/s from UpaCalc routines
  • Added grid option to UpaGrid for grid scaling
  • Changed UpaLevel::isManadtory back to boolean test for mandatory level and created getMandatoryIndex for index into UpaRawinData arrays
  • Added map_line and map_fill option to UpaPlot to make sure proper map coloring is used on fill and line plots
  • Fixed a bug in UpaWxpFile where output to file could be wrong if mandatory level data is missing.  Also cleaned up output by moving line breaks
  • Added code to VarList to propogate variable format data to sub parameters of a group
  • Fixed a bug in VarList that could allow getString to overrun the buffer on output
  • Added specification of "hour" resouce to gribfile to fix file time
  • Added lev2image and nameconv programs
  • Added ability to specify fixed time to plot program (#yyyymmdd..)
  • Added IO resources to soundplot to make sure graphical output can be saved to file

New in version 6.61 (September 2009)

  • Eliminated blank string as referring to standard input or output.  Must use "-", "std".
  • Added MiscPlot object to plot circles, markers and text at lat, lon locations: circle:lat:lon:radius, text:lat:lon:label
  • Changed how plot attributes are managed.  Now there is no default.  So specifying setText( attr, size ) won't set text size if height attribute not set.  You must use setTextHeight explicitly before the setText call to initialize height.  This is the same with marker size.
  • Added Plot::clearLabels so that label area above and below plot could be cleared and a new set of labels applied

  • Fixed a bug in CityTool where coded WMO for Netherland Antilles was wrong
  • Added code to Domain to do line wraps in Lambert Conformal projections
  • Added clearRect to Graph
  • Changed the number of transformation from 2 to 4 in Graph
  • Added Grid::getForeHour
  • Added to GridCont map_line and map_fill options to set map colors outside of using fill type from contouring.  Useful if want color fill contours but don't want black maps (i.e. radar plots)
  • Added timezone option to GridPlot
  • Fixed a bug in GridPlot where parameters not carried over on reinitialization (with panels specifically)
  • Fixed layer specifications in GridPlot so that grids read in properly, functions used right grids and output used proper grids
  • Moved function computations in GridPlot outside of plotting loop. Functions are now done before any plotting which simplifies code and eliminates several bugs
  • Fixed bug in plotting of vector grids in GridPlot.  In some cases, the U and V grids were not properly referenced
  • Added group specification to GridPlot so that it can be used to specify simple labels for complex overlay plots
  • Added GridTool::read( filename, grids ).  This allows GridPlot to read in grids if only filename specified and not model name or in_file name convention
  • Added resize function to Grids so that grids can expand if needed
  • Fixed issue with constant pointers in IngestFile, MapPlot and Scanp
  • Fixed several options where it now checks for "=" in option setting. This avoids confusion between co= and cod= and between fi= and fill=
  • Fixed issue in MapPlot where im:file and if:file got misinterpretted.
  • Fixed issue in MapPlot where plotting of image not done right if there was no projection in the image
  • Added MiscPlot object to plot circles, markers and text at lat, lon locations: circle:lat:lon:radius, text:lat:lon:label
  • Fixed the geometry specification in Plot.  It didn't handle negative location values  "WxH-X-Y"
  • Added fore_hour and source parameters for generic labeling to Plot
  • Fixed a bug in Plot where a blank color map cleared colors so that nothing would draw.  Now an invalid or blank color map is ignored
  • Changed transformation numbers in Plot - 0 = base, 1 = projection, 2 = overlay.  Added enum in Plot to handle this TRAN_BASE, TRAN_PROJ, TRAN_OVER
  • Added Plot::setMarkType( string ) so that strings could be used to set marker type (such as "plus" or "dot")
  • Added %D and %V option to Plot::formatLabel so that generic date and valid time labels can be plotted with drawLabels
  • Added Plot::clearLabels so that label area above and below plot could be cleared and a new set of labels applied
  • Added Plot::setDataSource( str ) function to set data source for generic labels
  • Fixed bug in PlotAttr::parseFillStyle where some fill patterns not properly parsed
  • Fixed bug in RadPlot where name convention was getting reset based on data type.  Now in_file is set before input
  • Added raw data plotting to RCM grid output.  It was in output from the RCM image parameter (default) but not grid
  • Added code to RcmWxpFile to read in winter RCM mosaics.  It could write them but not read them properly
  • Added code to create a date label in RcmWxpFile for plotting
  • Fixed a bug in SatPlot where date not queried from some images.  This could disrupt coordination of time in overlays
  • Eliminated hard coded name convention in SfcGrid
  • Fixed a bug in StrLib::length where a NULL pointer caused core dump
  • Added "noparcel" option to ThermPlot
  • Fixed a bug in UpaRawinData::addMan where an invalid mandatory level could be added
  • Fixed bug in VarList where resizing of list wasn't working
  • Added VarNameItem::setName and setAbbr functions
  • Added speed and density parameters to VectPlot.  The speed option scales vectors to a specific speed.  The density option relates to how many streamlines can be drawn in a specific area
  • Added VectPlot::drawLabels to manage labels on vector plots
  • Added VectPlot::drawVect to add a vector scale on lower right of plot
  • Addded Wxp::getVirtMem to extract virtual memory for debugging
  • Added code to handle negative window location parameters in XWindow
  • Added XWindow::clearRect to clear a rectangular region of screen
  • Added code in XWindow to delete pixmaps when done to avoid possible memory leak
  • Added XWindow::deleteFrame() to delete all frames.  This is called when window closes to clean up loop pixmaps
  • Added inline GridCont::setMapFile
  • Added MiscPlot object to plot and figure programs
  • Added several key resources to input processing by plot and figure
  • Fixed a bug in plot where multiple plots using the same object were literally using the same object.  This meant parameters would not get set because the parameters from the second would override the first.  Now each plot allocated is allocated so that multiple instances of the same object are unique and distinct

New in version 6.60 (August 2009)

  • Added the concept of a value grid.  This is a 1x1 grid used by various functions to represent a constant value grid.  This is mostly used by GridMath to add a value to a grid or scale a grid.
  • Added first cut of a GRIB writer to GribFile. 

  • Fixed AreaFile and AreaDir to read data properly on 64 bit platforms
  • Fixed a small bug in Buffer related to allocation of buffer data
  • Added code to delete allocated arrays in BufrFile
  • Fixed a bug in ColorBar where bar size was not correct in multipanel displays
  • Added proper initialization of arrays in ColorFill
  • Fixed a bug in Contour related to setup of color parameters
  • Removed initPlot function in Contour
  • Added date, forehour and data source calls to Contour
  • Removed drawBar from drawLabels in Contour.  Moved so GridPlot and other objects could better control bar plotting.
  • Added line, fill and text attribute reset to Contour
  • Fixed initial color parameter settings in Contour
  • Added ability to set line type and width from color_fill even when specifically not using colors
  • Changed DateTool::createLabel to handle forecast hour as float rather than int (need this for sub hour forecast times)
  • Added Datum::clearData
  • Added concept of a nx by ny domain on XY plane (use with value grids)
  • Fixed a bug in Enhance to make sure lines starting with @ are treated like comments (other than specific directives)
  • Added code in Figure to delete allocated objects
  • Changed how refresh is handled in Figure.  If not "1", then the refresh time is the loop increment
  • Changed ForeTime to handle forecast times in decimal hours (float rather than int)
  • Changed ForeTime::getForeHour to getHour
  • Added ForeTime::getSecs to return forecast time in seconds
  • Added close to GiniFile::readHeader if file has illegal parameters
  • Added counter to GribFile::read( Grids ) to stop reading when all grids have been found
  • Removed several grid.setSize calls that were not needed in GribFile
  • Fixed bug in GribFile relative to computation of domain in Mercator grids
  • Added GribFile::scaleConv to convert scale factor for output to GRIB
  • Changed GribFile::makeDatim to create time string consistent with DateTool (NAM 24 hour valid...)
  • Added first cut on GRIB writer to GribFile
  • Changed setSize in Grid to set simple XY domain with grid of nx by ny
  • Changed setDomain in Grid to set nx and ny.  Don't call setSize to set nx and ny
  • Added Grid::getForeSecs
  • Set up Grid to use a 1x1 grid as a value grid (i.e. constant value for all points).  This returns a constant value for all x and y in getValue and is used in GridMath for addition and scaling by a value
  • Added Grid::isValue to check for value grid
  • Fixed color and plot initialization in GridCont
  • Removed GridCont::initPlot
  • Added "nolabel" option to GridCont
  • Removed plotGridvalues from GridCont (in Contour already)
  • Added GRIB write to GridFile
  • Added "add", "sub", "mul" and "div" to GridMath::process
  • Removed early returns in GridMath so that grid post processing can occur (setting of output info label)
  • Added value grid use to various GridMath functions
  • Removed GridPlot::plotGridValues (in Contour already)
  • Added GridSpec::isVarSet
  • Added counter in GridTool to stop reading in grids if all grids found
  • Added "noLabel" option to GridVect
  • Added color bar and vector bar (vbar) options to GridVect
  • Fixed label generation code in GridVect
  • Fixed several 64 bit issues in Gvar code
  • Added initClass to Image to set pointers
  • Changed set function in Level to check order of levels so that lowest is first.  It also checks for missing levels
  • Fixed several issues in Level where output coded levels is wrongly computed for layers
  • Added generic set function to ObjectAnal to unify the setting of parameters
  • Added SatPlot::saveImage and setOutput, triggered by output resource to save manipulated image to file
  • Fixed variable processing in SfcPlot.  Some layer parameters would not get processed properly
  • Fixed a bug in Tools::toString( float, sig, str ) where runaway strings could occur in some cases.  Now strings are limited to sig digits
  • Added special processing to UpaDataTool to handle coded geopotential height (such as last 3 digits of 500 mb height)
  • Cleaned up UpaDataTool::units
  • Added grid scaling to UpaGrid
  • Added UpaGrid::setLevel function
  • Fixed UpaLevel::isMandatory.  The indices were wrong
  • Added several plotting parameters and code to UpaPlot to make it similar to SfcPlot.  UpaPlot is still work in progress
  • Added UpaPlot::setLevel
  • Fixed several bugs in UpaRaw
  • Added UpaRaw::setLevel
  • Added code to UpaTool::decodeTTAA to handle special levels (surface, trop, max wind).  Somehow the indices to these levels were not getting set
  • Fixed a bug in UpaWxpFile where invalid data could corrupt further input reading.  So added a test to skip to end of report if there is a problem
  • Fixed a bug in writing in mandatory level data.  If somehow the data is invalid, it still tries to write it
  • Added inline functions to Plot to set data type, time sync, date for labeling

New in version 6.59 (June 2009)

Note:  6.58 was an internal release

  • Added new ingest and decoder programs: ingest, sfcdec, mdrdec, rcmdec, upadec
  • Added "sync" parameter to plot objects to target that object as the time and loop sync.  Rather than using the first plottable object, you can specify an object as the time sync with the "sync" parameter.  The base time and loop increment are based on that object.   This is useful for overlaying radar on satellite.   Without sync, the plot would use the latest satellite image and update every 15 minutes.   With sync, the plot will use the latest radar plot and update every 6 minutes.
  • Added quote delimiting to strings parsing.   This means a string won't be broken on "," if a parameter is quoted:

    OLD:   -pa=x,y,va=a,b,c,cod=white
    NEW:  -pa=x,y,"va=a,b,c",cod=white

    In the old version, b,c would be individual parameters and not variable specifications.   With the parameter delimiting, "va=a,b,c" is preserved for variable parsing.
  • To simplify and make consistent the parameter specification, the "plot_param" resource has been replaced with just "parameter".  Most objects have a setParam method and the parameter resource is passed to this method.
  • Some functions were reworked to work on 64 bit platforms.  RHEL5 64 bit versions are now available.

  • Added buffered decompression in BZlib object (see Buffer object)
  • Added Buffer object for use of buffered data
  • Added Calc::dist for simple distance computations
  • Rewrote Cdf object to use v3 function calls and use of IntArray for dimension and array offsets
  • Added generic get and put functions to Cdf object for use with Perl
  • Removed Tools::convertIdToWmo and replaced with CityTool::toWmo
  • Removed "plot_param" resource and replaced with "parameter"
  • Added Date::fix to zero out missing date elements
  • Added Date::printSeconds
  • Reworked DateRange to not store start and end date but to have base date and pre and post values.  This means base date can now be set independent of pre and post
  • Added Datum::addFormat to append format information
  • Added track plot type to DatumAttr
  • Added Domain::set( ul, lr, nx, ny ) so that domains can be set from corner lat,lon specifications
  • Added Domain::set( char * ) so that only projection parameters are specified
  • Fixed several bugs related to passing missing values to Domain::tran.  This makes sure that if missing values are passed to it, missing values are returned
  • Added getSync to Drawing protoype so that drawings can return whether they are the time sync
  • Reworked time specification in Figure object.  It now only uses file time for base date is current is set to "la" (it would have to then).  Now, for other current specifications, it uses time based on current time
  • Added time sync parameter to Figure so that base date and loop parameters are based on the object with "sync" set and not on the first available object
  • Added buffered read (Buffer object) to File
  • Added FileTool::checkPath which adds a path to a specified filename and checks for existence
  • Fixed several bugs in Filename related to filenames with missing date parameters.  Now the date is fixed first so that weird filenames aren't generated
  • Added "obs" to ForeTime as an equivalent to "anal"
  • Changed GFont::getSize to getWidth
  • Simplified reading in of compressed GINI files by using buffered data rather than arrays.  This gives better error checking on data decompression.
  • Fixed several bugs in Graph that would cause core dumps if for some reason a plot hadn't been opened or had been closed inadvertantly
  • Added Graph::getDropShadow so value can be saved and then restored
  • Added "light" marker to Graph for the display of lightning data
  • Added Grid( nx, ny ) constructor
  • Added Grid::setLevel, setForeTime and setVar where strings can be passed to set parameters.  This is useful with Perl
  • Added GridCont::initPlot to initialize just the contouring parameters
  • Added check in GridMath::remap to make sure domain is set, otherwise do a null remap (i.e. copy)
  • Fixed several bugs in Hash object related to mulitple keys.  The Hash object had been set up to store all objects entered into it, even duplicates.  This made it difficult to find matching data to update in the hash, such as updating decoded METAR data.  Now only duplicates are saved if at least one of the hash keys is different.
  • Fixed bug in Hash where first item in each table entry was never used
  • Fixed some initialization bugs in ImagePlot
  • Added map specification to ImagePlot so that it can plot a map like other plot objects
  • Reworked ImgWxpFile to handle new swap functions (Int2 rather than Short)
  • Finalized and got working IngestFile object so that it now replicates WXP 5 ingest program
  • Added sequence number testing to IngestFile
  • Fixed bug in Level where for static levels, a missing value is returned by toLevelCode
  • Fixed how Level interprets layers.  Now it makes sure lowest level is in level1
  • Reworked LightFile to use new swap functions (Int2 and Int4 rather than Short and Long... for 64 bit clarification)
  • Added color data and fill parameters to LightPlot
  • Changed LightPlot to use LightFile::getType for input type specification
  • Added new "light" marker type to LightPlot to plot a "Z" like symbol at strike location
  • Fixed bug in LightPlot where USPLN data would be labeled as NLDN data
  • Reworked MapFile to use new swap functions (Int2 and Int4)
  • Added grid plot to MapPlot so that a specific grid can be plotted on a map from the wxp.reg file
  • Added MdrDecode object to decode MDR data
  • Added MdrDomain object for processing of MDR grid domain
  • Fixed several bugs in MdrFile related to decoding MDR data
  • Added MdrHash for processing of MDR sites in decoding
  • Reworked MdrImage to use MdrDomain for location of radar echos
  • Reworked and fixed MdrPlot so that it can now plot MDR data
  • Fixed several bugs in MdrWxpFile
  • Added MdrWxpFile::write to save decoded data from MdrDecode
  • Fixed a couple of bugs in MetarTool relating to decoding of METAR type.  Fixed date decoding from observation time.  Fixed bug related to early RMK in Canadian METAR reports
  • Reworked NidsFile to use buffered input for decompression.  This fixes several bugs related to the decompression of TDWR data and simplifies the decompression process
  • Changed label of Dbz to dBZ in NidsPlot
  • Changed distance rings in NidsPlot to KM rather than NM.  A new "distm" parameter added to handle rings in NM
  • Changed option in NidsPlot to plot comp reflectivity attribute table to "table" from "graph" (holdover from WXP 5)
  • Added code to determine base domain in NidsPlot to use identifier resource inquiring lat,lon from rad.cty.  This fixes bug where some loops with missing frames could result in bad domain specification
  • Fixed table overlay in NidsPlot to plot fixed text and not scale to width of display
  • Added drawStorm to NidsPlot to manage plotting of storm attributes
  • Fixed labeling of NidsPlot storm attributes.  It used to just plot "NIDS Data" and now plots actual parameters being plotted.  A group label can now be used NIDS_Data{cid,tops,...} to reduce label clutter
  • Fixed bug in NidsPlot so that units of parameters can now be converted
  • Added "cstat" parameter to NidsPlot to plot a status marker at storm location
  • Added a "meso5" parameter to NidsPlot to plot only mesos with a MDA value >= 5
  • Added Plot::getDomAspect function to return domain aspect ratio
  • Added Plot::drawLine( GridPoint, GridPoint )
  • Added resetting of drop shadowing in Plot for lines, markers and text
  • Added shadow specification to PlotAttr (-cod=white,sh=3)
  • Added "light" marker specification to PlotAttr
  • Added RadMask object to generate winter mask for radar mosaics
  • Fixed several bugs in RadPlot related to managing parameters between various types of radar plots
  • Added RcmDecode object to decode RCM data
  • Added filtering mechanism to RcmDecode to eliminate overlap of storm data
  • Added winter mask to RcmDecode
  • Fixed RcmDomain to make it accurate and usable
  • Fixed several bugs in RcmFile
  • Added RcmFile::write to save decoded data from RcmDecode
  • Added RcmHash to store data from RCM sites and to aid in filtering of data by RcmDecode
  • Fixed several bugs in RcmImage related to location of radar sites
  • Added a ramp function specification for clear air and precip sites in RcmImage
  • Reworked RcmPlot to use RcmDomain
  • Reworked RcmPlot to better plot site and storm information
  • Added "cstat" parameter to plot cell status to RcmPlot
  • Set up RcmWxpFile to output decoded RCM data from RcmDecode
  • Reworked SfcData::compare to output mask of what's different rather than true or false
  • Added SfcData::printDiff to print differences from mask
  • Reworked SfcData::update to use mask to update only specific parameters
  • Fixed bug in SfcData::validate related to precip in mm rather than inches.  Valid range was too low for mm
  • Added SfcDecode object to decode METAR and SYNOP data
  • Reworked SfcHash to use new Hash setup and provide data to SfcDecode
  • Changed SfcUniFile to use new swap setup (Int2 and Int4)
  • Reworked SfcWmoFile to read SYNOP data (only worked with METAR data)
  • Fixed bug in SfcWxpFile relating to writing of header to new file
  • Added append function to SfcWxpFile
  • Added client socket code to Socket
  • Fixed StormAttr to read in numeric values for TVS and MESO data
  • Added StrLib::validData which checks for a string with data, not just blank or full of spaces
  • Added code to Strings to not break strings delimited with "...".  So a substr with commas can be preserved by putting a " at the beginning and end of substring
  • Changed functions in Swap from Short and Long to Int2 and Int4 to eliminate byte issues going to 64 bits
  • Fixed several bugs in SynopTool related to the decoding of buoy and CMAN reports
  • Changed TiffFile to use new swap setup (Int2 and Int4)
  • Removed Tools::convertWmoToId and convertIdToWmo (redundant with CityTool)
  • Changed Tools::hexdump to dumpHex
  • Added UpaDecode for decoding upper air data
  • Fixed a bug in UpaFile where date wasn't getting to UpaWxpFile
  • Added UpaRawinData::getTime
  • Fixed a couple of bugs in UpaRawinHash related to use with UpaDecode
  • Added code to UpaTool to decode TEMP MOBIL sites
  • Added code to UpaWmoFile to read in TEMP MOBIL sites
  • Fixed a bug in UpaWxpFile related to specification of date in output file
  • Reworked WindPlot to handle drop shadowing on barbs and vectors
  • Reworked WmoFile to manage data on CR/CR/LF boundaries rather than LF boundaries.  This fixes several problems with end of product determination.
  • Removed file_param and plot_param resources from WxpResrc and added log_file and prod_file
  • Changed color_grid shorthand from -cogr to -cog
  • Reworked Zlib to use buffered data (see Buffer object)
  • Added programs: ingest, mdrdec, rcmdec, sfcdec, upadec
  • Added identifier resource to nidsplot
  • Reworked plot program to use same current time specification as Figure object (current uses current time, not latest file time)
  • Simplified object creation and management in plot.  This unifies processing between objects
  • Fixed sfcplot initial domain specification
  • Fixed watchplot initial domain specification

New in version 6.57 (March 2009)

  • Fixed bug in ColorBar where con_base was ignored
  • Changed ColorFill to default to interval of 1 and base of 0
  • Changed drawLabels to drawLineLabels in Contour to draw contour line labels
  • Added drawLabels to Contour to just draw the labels on plot
  • Added source to Data to specify what created the data, used to set labels in ObjectAnal
  • Added Data::add to add new point given a Datum object
  • Added id field to Datum so that Data objects can store an id for each point (see RawFile output)
  • Fixed bug in DatumPlot so that data string is plotted by default (used to be nothing)
  • Fixed Domain specifications for POLAR so it matches XY (clat/clon are center and not lower left coord)
  • Fixed bug in TEPH domain where input coordinates would be modified.
  • Added return value to Domain::adjust so that adjustment could be checked
  • Added Domain::adjust( Points )
  • Added code to Domain::zoom and Domain::pan to properly handle Thermo diagrams
  • Changed Domain::correctLine to WrapLine since method deals with wrapping lines around edge of domain
  • Changed Domain parsing to include station id centering without specifying "id:".  Code looks for 4 upper case letters for id
  • Added forecast time looping to Figure (-ft=time,time,...)
  • Fixed several bugs in Figure related to date coordination between objects
  • Added printing of new domain on zooms and pans in Figure
  • Changed File::eof to File::endFile
  • Changed default in setFilePrompt to not prompt for file.  Use "inter" resource to prompt for File
  • Added FrontPlot::setFrontColor.  Before only too resource value
  • Added GeomBox::print
  • Added info label for "Composite NH" to GiniFile
  • Moved label plotting (info/datim) from GridCont to Contour
  • Added setForeTime to all Drawing objects (for Figure)
  • Added forecast model plotting to HodoPlot
  • Fixed bug in Image::getRGB where missing color returned random value
  • Added demo license to License
  • Changed LightPlot labels to show time of last file (not last strike)
  • Fixed bug in MosDataTool where units weren't properly specified resulting in missing value on some plots
  • Added MosFile::geModel to return a descrptive string of model name
  • Changed default model in MosFile, MosRaw and MosPlot from NGM to NAM
  • Added setModel to MosPlot and MosRaw
  • Changed check in NidsFile for compression for odd magic string in some TDWR data
  • Changed missing checks in Run block for TDWR velocity products
  • Added check for "miss" in color fill in NidsPlot
  • Changed default device to display, not command prompt
  • Added print for thermo diagram in Alt-v value output
  • Fixed bug in panel decoding in Plot
  • Added Plot::getLabelPosIndex to simplify label plotting code
  • Changed Points::del to Points::remove to avoid name conflict
  • Fixed bug in RadPlot where name convention was properly being passed to subclasses
  • Added RawFile::getInfo( ind )
  • Added scan of station id to RawFile
  • Added gridding and contouring to RawPlot
  • Added code to handle plot type in variable string a plotting of map in SfcPlot
  • Fixed problem in handling plotting of sublayers, relating to groups in SfcPlot
  • Fixed bug in SfcRaw relating to station priority setup
  • Added StrLib::equal( str, num, str ) and StrLib::hasToken
  • Added String::occurs
  • Added Strings::check
  • Added ThermPlot::setId
  • Added forecast model plotting to ThermPlot
  • Added VarList::isFillContour to see if format specified fill contour plot
  • Removed ":" compatibility with WXP 5 from VarSpec
  • Added color bar plotting to VectPlot
  • Removed "batch" resource processing
  • Reworked object processing in plot program to better handle file and date setup
  • Added rawgrid and rawmath programs
  • Added code to sfcraw program to create output filename based on date and variable specification
  • Renamed thermplot to soundplot

New in version 6.56 (December 2008)

  • Changed default cover in CloudLayer to 0
  • Added print to CloudLayer
  • Changed contour interval spec to "ci" instead of "in"
  • Changed input resource command line from "inp" to "in"
  • Moved calcInterval from Contour to Tools
  • Fixed two problems in DatumPlot (cof only 2 char, ept = datum.getLoc)
  • Moved getProj from DomainTool to Domain
  • Added set( char * ) to Domain
  • Fixed bug in Domain::setLimits (convert from int to float divide on pt1,2 set)
  • Changed XY domain to absolute coordinates and adjusted limits in Domain
  • Added code to correct wind dir (limit to 0-360) in Domain::adjustDir
  • Added noborder option to Figure
  • Added Graph::printTran
  • Added time, level, etc to GridPlot::setParam
  • Added grid_type specification to GridSound
  • Added ImageMath::toGray
  • Added MapPlot::setColorLine
  • Reworked image file determination in map list in MapPlot
  • Set default output file to meta.out to MetaFile graphics output
  • Added MeteoPlot class
  • Fixed range settings for TDWR data in NidsFile
  • Changed device, geometry, title specification in Plot
  • Added logo specifications in Plot
  • Simplified parameter specification in Plot, added setParam
  • Fixed color table specification in Plot
  • Set a default domain where none is specified in Plot::setDomain
  • Doubled number of points in Spline in Plot::drawSpline
  • Fixed a bug in PlotAttr where first attribute is not a color
  • Reworked Points::getCenter
  • Fixed bug in RawFile that read off end of line
  • Added timezone resource to WxpResrc and Plot classes
  • Added raw dump of image bytes to SatFile
  • Added "clds" variable to SfcDataTool::compute
  • Fixed "prec" variable to access other precip values in SfcDataTool
  • Added default plot type to SfcPlot
  • Fixed grid scaling in SfcPlot
  • Added polygon option to Spline
  • Added Strings::valid
  • Fixed several bugs in VarList decoding to propogate format to sub params
  • Added cplot and value to VarSpec decoding of plot type

New in version 6.55 (November 2008)

  • Added BUFR table cache in BufrFile to speed up lookups
  • Fixed bug in wchill computation that allows wchil > temp
  • Added drawValues to Contour
  • Added scale factor to contour labels in Contour
  • Added adjust function to Domain for fixing domain related issues
  • Fixed multiple path in listing available files in Filename
  • Added code to GridMath to add basic functionality
  • Fixed bug in GridTool that read in new grid when same was needed
  • Fixed bug in MapPlot that didn't account properly for bgcolor in images
  • Added additional lon line for LATLON/MERC proj
  • Added processing of TDWR data to NidsFile and NidsPlot
  • Fixed object_param decoding in ObjectAnal for ",," missing values
  • Added line cropping to Plot for lines crossing domain boundary
  • Added line segmentation to Plot where MISS value breaks line into segments
  • Fixed bug in reading in transparent color in PngFile
  • Added copy, del, insert functions to Points
  • Fixed bug in locating center point within polygon in Points
  • Fixed wind chill computation in SfcDataTool
  • Added oa.init to SfcGrid
  • Added generic GridMath::process to SfcPlot
  • Added set, getDist functions to Spline
  • Added where function to StrLib
  • Fixed bug in finding sig digits in Tools::toString
  • Added simplify function to Unit to remove null units (kg/kg, s/s)
  • Added lcf and gvalue to VarData and VarSpec type determination
  • Fixed bug in VarList related to unit propogation
  • Added setInterval, setBase, setColorFill, setColorLine to VectPlot
  • Fixed bug in XWindow for callback list deletion when window closed

New in version 6.54 (October 2008)

  • Added maj/min print to BufrData
  • Added data codes (label strings for code tables) to BufrFile
  • Added code for short delayer repitition factor to BufrFile
  • Added decoding of time unit to ForeTime
  • Fixed bug in color table size of GifFile
  • Fixed bug in text plotting where upx/upy not being used in Graph
  • Added code to cache GRIB1 and GRIB2 parameter definitions.
  • Added GridSpec::isSet
  • Added setCutoff to Image
  • Added cutoff values to output Image file in ImgWxpFile
  • Added decoder for NALN data to LightFile
  • Fixed bug in overlay/underlay in MapPlot
  • Added code to create cutoff values, save to Image in NidsImage
  • Added setTextDirection to Plot
  • Added getCenter and renamed getCenter to getCentroid (mean of all points) in Points
  • Added RawFile::read( char *, Data )
  • Fixed bug in RawPlot where format was ignored
  • Added "if=" to param decoding in SatPlot, SfcPlot
  • Fixed bug in Spline where two points at same location caused problems
  • Added StrLib::valid( char *, char * ) for default in string not valid

New in version 6.053 (August 2008)

  • Fixed bug in BufrFile that overran codes array
  • Add Filename::exist
  • Changed Grids::getUnits to Grids::getSpecUnits
  • Added GridPiece::getDomain
  • Moved GribFile::read to GridTool::read in GridPlot
  • Added Grids::getValue(int, EarthPoint)
  • Added GridTool::read(char, char, Grids) for readinng in data in GridPlot and piecing grids together
  • Added ImageMath::compressColor
  • Added code in Lev2File for handling MSG31 data (hires radar)
  • Fixed bug in Lev2File for reading in uncompressed files
  • Added code in Lev2Plot to handle MSG31 data
  • Added code to MapPlot to display map segment info and color code lines
  • Added code to MetarTool to decode NSC and NCD as clear skies
  • Added code to PngFile to handle saving transparent images

New in version 6.052 (July 2008)

  • Added code to MetaFile to save message output and fix bugs
  • Fixed bug in PngFile where output comments weren't saving correctly
  • Added within to Points
  • Fixed MDRSITE plotting in RadPlot
  • Fixed bug in raw file decoding in RawFile
  • Changed sound parameters to parcel and wind parameters in ThermPlot
  • Moved calcParcel from UpaCalc to SoundParams::set
  • Added setElev to UpaData
  • Added getStation to UpaTool
  • Added extra print functions to UpaTool

New in version 6.047.1 (June 2007)

  • Fixed bug in RedbookPlot that was incorrectly plotting lines
  • Fixed bug in RedbookPlot for text sizing
  • Added ability in RedbookPlot to work with BS and VT in text data
  • Added match function to StrLib
  • Fixed class parameters (passed by reference) in Vect, Wind and WindPlot

New in version 6.047 (June 2007)

  • Fixed bug in Date::adjustHour
  • Added plot of small circle for calm on AVECT in DatumPlot
  • Fixed check for MERC in Domain::correctLine
  • Added offset for MOLL in Domain::correctLine
  • Added offset for MERC and MOLL in GridBox
  • Fixed num_file bug in Filename
  • Fixed computation of forecast time for GFS MOS GRIB2 data
  • Added code to Hurricane to process more data (nearing completion)
  • Added min,scale,mark parameters to LightPlot
  • Added basic strike plot (just location) to LightPlot
  • Fixed segmention problem in LritFile
  • Fixed underlay problem in MapPlot
  • Reworked lat/lon labels for SAT and MOLL projection in MapPlot
  • Added drawLine( EarthPoint, EarthPoint) and drawSpline( EarthPoints ) to Plot

New in version 6.046 (May 2007)

  • Moved Bufr to BufrFile.
  • Changed Calc::relHum to use t < 100 as C
  • Added first, nextKey and printData method to CityHash
  • Added copy constructor and operator = to Data class
  • Added new adjustMinute and adjustSecond to Date
  • Added new createLabel to DateTool that uses a string for model name
  • Fixed 2 bugs in satellite projection in Domain
  • Added correctLine and offsetLine methods to Domain to adjust for earth wrap around
  • Fixed bug in DomainTool that improperly decoded id type domain (-pd=IIII,dx)
  • Added elevation parameter to EarthPoint
  • Added within method to EarthPoints to check to see if point within a polygon
  • Added drawing methods to Figure
  • Fixed a NULL pointer problem in File::isStdio
  • Added getModTime method to File
  • Changed Filename to retrieve type info from NameConv
  • Changed FrontPlot to plot FrontData seperately (FrontPlot::draw( Plot, FrontData)). 
    The FrontData class used to be local to FrontPlot.  Now FrontData can be set up external to FrontPlot and use FrontPlot to plot it.
  • Fixed bug in FrontPlot that only used every other point in front plotting
  • Added hardware font specification to Graph (hfont).
  • Added isLooping, getFrame, setFrame to Graph (for output to image file for loops)
  • Fixed bug that prevented output of multiline text in hardware fonts
  • Added metafile output to Graph
  • Added variable type specification for Variable.  This allows for ensemble type and probability specs within Variable.
  • Added toIndCode, toParamCode and decode to Variable
  • Changed Grid, GribFile, GridSpec and GribPDB to use new Variable type specification
  • Added table specification to GribParam::getVer1Param
  • Fixed bug in GribParam for GRIB1 variable specification
  • Added in support for GRIB2 data templates that support ensemble data.  Templates include 1, 2, 5, 9, 11 and 12.
  • Added support for thinned grids in GRIB2 format
  • Added gen_name parameter string to Grid so generation location can be specified when model number is not appropriate or known.
  • Moved WxpGridFile to GridWxpFile
  • Fixed bug where GridFile wasn't passing along use_header to GribFile
  • Added GridSound class for extraction of sounding from grid data
  • Added nextKey and printData to Hash
  • Changed size and offset from int to float for Device classes
  • Added merge and blank methods to Image
  • Moved WxpImgFile to ImgWxpFile
  • Added max eq pot temp and equilibrium levels to Level
  • Fixed bug with hybrid layers
  • Use correctLine and offsetLine in MapPlot
  • Moved WxpMdrFile to MdrWxpFile
  • Added new MetaFile output device
  • Moved RawSfcData to SfcRawData
  • Changed how ramp function is computed in NidsImage to allow for values not every 5 dBZ
  • Added getHeaderLoc to Parse
  • Changed Planet to use Date for date/time rather than julian date.  Changed method names to reflect change
  • Added saving loop images to file in Plot.  Used to only save for single frame plots.
  • Changed line and fill area methods in Plot to use correctLine and offsetLine to account for earth wrap around
  • Added drawSpline method to Plot
  • Added draw specification (setDrawing and isDrawing) in Plot to turn off particular parts of a plot (see draw resource in WXP5).
  • Fixed a bug in PngFile that didn't use the right parameters for image size
  • Moved WxpRcmFile to RcmWxpFile
  • Added Raw class, based on Data for output of raw point data from various plot classes
  • Fixed DataRange specification in RcmImage
  • Changed domain specification in RedbookFile and RedbookPlot
  • Changed RedbookVector to use Points class rather than x,y arrays
  • Changed plotting in RedbookPlot from using plot coordinates to using Domain transformations.
  • Added label plotting from redbook.lup to RedbookPlot
  • Moved RawSfcData to SfcWmoData
  • Moved UniSatfile to SatUniFile
  • Added ability to read from GIF and PNG files in SatFile
  • Added ability to plot GIF and PNG files in SatPlot that have navigation text embedded in file.
  • Added min_lon and max_lon specs in SatPlot to eliminate image outside of those ranges.  Used for overlaying images.
  • Fixed bug in SatPlot that assumed all images were indexed color.  True color images will now be displayed as is.
  • SfcRaw and UpaRaw now outputs Raw class instead of Data
  • Moved CdfSfcFile to SfcCdfFile
  • Moved UniSfcFile to SfcUniFile
  • Moved XmlSfcFile to SfcXmlFile
  • Moved RawSfcFile to SfcWmoFile
  • Moved UpaData to UpaRawinData
  • Moved UpaMergeData to UpaData
  • Moved ThermDiag::plotDiagram to draw
  • Finalized ThermPlot adding appropriate labels
  • Moved Tiff to TiffFile
  • Fixed Tools::toString(float, String) to account for limits in sig digits in single precision float
  • Moved merge method from UpaMergeData to UpaTool
  • Moved RawUpaData to UpaWmoData
  • Moved RawUpaFile to UpaWmoFile
  • Moved WxpUpaFile to UpaWxpFile
  • Moved Watch to WatchData
  • Fixed read in of watch replace advisory in WatchFile
  • Fixed check for replace and cancellation in WatchPlot
  • Added drop shadow to WatchPlot
  • Added use of "fixed" for hardware font in XWindow

New in version 6A37 (June 2006)

In an effort to continue to work on the new object oriented version of WXP.  About 70% of the WXP library is now rewritten in C++.  WXP6 will have a different look and feel in that monolithic programs like sfcwx, rad and grbcalc go away.  WXP6 eliminates the need for wxploop as plotting can be directly scripted.  But WXP6 programs can still plot to a wxploop window for backward compatibility. 

Plotting as objects

WXP6 uses a simple object for plotting, not a monolithic program.  Resources can still be set through a function interface or by using the old resource settings.  Objects are initialized using the WXP resource settings.

Plot and Figure objects

WXP6 has a Plot and Figure object.  Plot is used when a simple plot is needed.  This is ideal for outputing to GIF images.  The Figure object will cause the plot to act more like WXP5 with rescaling, zoom and query capabilities.

Perl and Python interfaces

WXP6 is scriptable using Perl and Python.  This will replace the need for complex scripts like we have today with WXP5.  Objects can be created in these scripting environments and reused.
Perl example
Python example
#! /usr/bin/perl

use WXP;

$domstr = "ne";

WXP::Prog::readResrcFile( "sfcmap", "/home/wxp/etc" );

$sat = WXP::SatPlot->new;
$sat->setNameConv( "sat_ir_nc" );
$sat->setColorTable( "sat.clr" );
$sat->setColorFill( "0-50" );

$rad = WXP::SatPlot->new;
$rad->setPath( "/mnt/penndot/wxp/data:/home/wxp/nwstg/mosaic" );
$rad->setInput( "imgz" );
$rad->setNameConv( "rad_wmos" );
$rad->setColorTable( "radar.clr" );
$rad->setColorFill( "wradmos1.cfl" );
$rad->setParam( "cutoff:1:15:25" );

$frt = WXP::FrontPlot->new;

$sfc = WXP::SfcPlot->new;

$data = WXP::Datum->new;
$dplot = WXP::DatumPlot->new;

$domain = WXP::Domain->new;

WXP::DomainTool::set( $domain, $domstr );
#  Set up map
$map = WXP::MapPlot->new;
$map->setMapFiles( "fi:cnty.mpl" );
#  Open new plot
$plot = WXP::Plot->new;
$plot->open( "de=d,ge=1024x768" );
$plot->setDomain( $domain );
$sat->draw( $plot );
$rad->draw( $plot );
$frt->draw( $plot );
$map->draw( $plot );
$sfc->draw( $plot );
$data->set( 40.05491, -75.51085, WXP::Datum::MARK, "+", "co=white" );
$dplot->draw( $plot, $data );
#! /usr/bin/python

import WXP

domstr = "ne"

WXP.Prog.readResrcFile( "sfcmap", "/home/wxp/etc" )

sat = WXP.SatPlot()
sat.setNameConv( "sat_ir_nc" )
sat.setColorTable( "sat.clr" )
sat.setColorFill( "0-50" )

rad = WXP.SatPlot()
rad.setPath( "/mnt/penndot/wxp/data:/home/wxp/nwstg/mosaic" )
rad.setInput( "imgz" )
rad.setNameConv( "rad_wmos" )
rad.setColorTable( "radar.clr" )
rad.setColorFill( "wradmos1.cfl" )
rad.setParam( "cutoff:1:15:25" )

frt = WXP.FrontPlot()

sfc = WXP.SfcPlot()

data = WXP.Datum()
dplot = WXP.DatumPlot()

domain = WXP.Domain()

WXP.DomainTool.decode( domain, domstr )
#  Set up map
map = WXP.MapPlot()
map.setMapFiles( "fi:cnty.mpl" )
#  Open new plot
plot = WXP.Plot()
plot.open( "de=d,ge=1024x768" )
plot.setDomain( domain )
sat.draw( plot )
rad.draw( plot )
frt.draw( plot )
map.draw( plot )
sfc.draw( plot )
data.set( 40.05491, -75.51085, WXP.Datum.MARK, "+", "co=white" )
dplot.draw( plot, data )

Low level programming

This will allow the user to access the WXP library and do more with the data. The hope here is to eliminate the problems associated with monolithic programs.  You can read in raw files and plot them how you want them rather than burying the plotting attributes in the raw file.  DatumPlot allows you to add annotation without having to create a raw file.  A new ImagePlot object will allow you to read in images with imbedded projection information and display them.  The MapPlot object will use "mdb" files to plot specific pieces of map data including filled in areas such as specific counties or zones. 

New in version 6.0A18 (February 2005)

GRIB2 additions

Added support for DRS templates 1,2 and 3 to handle NDFD grids.  Added support for DRS template 40 (same as 40000 for Jpeg2000 compression).  Changed the grid type specification for lat-lon grids to be more representative of the actual values.  Added support for Mercator grids.  Added support for "max" and "min" time ranges in GRIB2.

Added support for multiple grids in a single product.  CONDUIT grids put U and V wind in the same GRIB2 product.

Bug Fixes:

  • Fixed GDS lat-lon domain problems for GRIB2.  This allows the use of CONDUIT grids.
  • Fixed bug in forecast time determination for GRIB2.
  • Fixed several bugs in vertical level determination for GRIB2.
  • Fixed redbook file read for LDM data files.  The redbook program improperly read in the WMO header and got into infinite loop. Added check for bad redbook headers to notify user if not a redbook product.