WXP version 6 Release Notes
Latest Version 6.74.6
Feb 2023
Version 6.74.7 (May 2024)
- Added METAR decoding for 1 hr precip (var=prec1).
- Updated support for netCDF satellite imagery. It now handles files from ISATSS processing and those from the Amazon Cloud archive.
- Added support for ISO 8601 date format. So date can be specified as yyyy-mm-ddThh:mm:ssZ or yyyymmdd_hhmmss.
- Added support for default domain for GRIB files in imageplot. So imageplot doesn't need a plot_domain to display. It will use the domain of the GRIB data.
- Added support for points in shapefiles.
- Added support for Jasper ver 3.
- Fixed some bugs in the Buffer class.
- Fixed some issues in MacOS support.
Version 6.74.6 (Feb 2023)
- Added support for MacOS.
- Completed Python API for all OS.
- Added in ability to display GRIB data in ImagePlot.
- Added in floating point range threshold string parsing in NidsImage. e.g. -th=-0-10/.02.
- Increased number of thresholds in NidsImage from 200 to 256.
- Adding string range processing to FloatArray::set(str).
- Added name convention key "f" to specify forecast time. e.g. -if=grib_nam:f=24
- Added in date parsing as dd mmm yy and dd mm yyy for grids representing a day, not an hour.
- Added Grid::setDatim(str).
- Fixed buffer overrun with Buffer::dump.
- Fixed bug in Image where num_values didn't reflect actual valid number, led to spurious values in values array.
Version 6.74.5 (Apr 2022)
- Fixed issue with infinite loop on truncated NIDS file.
Version 6.74.4 (Mar 2022)
- Added in support for intermittent zlib compression in the new Nexrad products. This eliminates the need to ucnids the single site data on LDM.
- Added in support for a WXP front file that is more generic than the ASUS01 product.
Version 6.74.3 (Feb 2022)
- Fixed display of hi-res Nexrad products - black dots in image when zoomed.
- Updated nids2image to handle hi-res radar product 153.
- Fixed Lambert Conformal projection over southern hemisphere.
- Flipped wind barbs in the southern hemisphere.
Version 6.74.2 (Jan 2022)
- Added support for new hi-res Nexrad products 153 and 154.
Version 6.74.1 (Jun 2021)
- Added support for hi-res ASUS02 products to front plotting.
Version 6.74 (Apr 2021)
- Added MRMS radar support to imageplot.
- Added upa plotting to plot.
Version 6.73.6 (Feb 2021)
- Fixed bug in front plotting that resulted in infinite loop.
- Fixed bug in front plotting for reading in lines longer than 80 chars.
- Fixed issue in CityData parsing for priority, lat, lon, etc.
Version 6.73.5 (Jan 2021)
Coming soon...
Version 6.73.4 (Nov 2020)
Coming soon...
Version 6.73.3 (Jul 2020)
Coming soon...
Version 6.73.2 (May 2020)
Coming soon...
Version 6.73.1 (Apr 2020)
Coming soon...
Version 6.73 (Feb 2020)
Coming soon...
Version 6.72 (Nov 2017)
Coming soon...
Version 6.71 (Apr 2017)
Coming soon...
Version 6.70.3 (May 2016)
Coming soon...
Version 6.70.2 (Jan 2016)
Coming soon...
Version 6.70.1 (Apr 2015)
Coming soon...
Version 6.70 (Mar 2015)
Bugs
- Fixed PNG decompression in GribFile. MRMS radar data now works.
Version 6.69.2 (Nov 2014)
Features
- Added in PNG compression to GribFile to support MRMS radar images.
- Added in support for BUFR version 4. Reworked basic BUFR processing.
Bugs
- Fixed a bug in computing the day in Date::adjustHour.
- Fixed help output in a couple of programs.
- Changed the string length when saving plots to file. Long directory and filenames were causing a core dump.
- Fixed a bug in GribFile where memcpy was overwriting memory if the areas overlapped. Changed to using memmove which is safer.
- Fixed issue where "/////" was not being interpretted for missing clouds.
- Fixed a bug in NidsPlot where color_fill specification was not setting Plot colormap.
- Fixed a bug in AreaFile in the computation of the domain.
- Fixed integer truction in Lamb Conf projection.
- Changed the valid limits for precipitation when decoding METARs.
- Fixed bug in figure where frames not processed it forecast time specified.
- Fix issue with Domain::set where domain not computed correctly when UL and LR values switched.
Objects
- Removed interactive code. All of the interactivity was removed versions ago. This was legacy code that code be safely removed.
- Added a priority 6 level to the progressive data filtering.
- Added ContPlot::setBase( string ) to handle max and min contour parameters.
- Changed the default line width on FrontPlot to 2.
- Added in color_front, color_watch and vect_mag resources.
- Added header file output to gribfile program.
- Changed nids2image default domain to be a 8km image over CONUS.
- Changed the CityTool::toId to handle Czech Republic and Slovakia.
- Added Metafile plotting to MapPlot.
- Finalized the plotting code in MetaPlot. Added a WXPVECT file input.
- Added GridPoints class. Added in ability to do coordinate transforms over an array of grid points.
- Added a GridStats class to hold max, min, avg valus. Added a GridTool::getStats() function to compute stats.
- Added a GridTool::getCoverage function to return the number of gridpoints within a range of values.
- Added calibration file input into AreaFile conversion to image.
- Added "re" (rectilinear) as alias for LatLon projection. Added "st" as alias for stereographic projection.
- Added in GOES7 IR values to GINI water vapor images so temperature color fills can be used.
- Added latitude labels in the center of the plot on large stereographic plots (vert > 90). Added labels on longitude lines for larger displays.
- Added Date += operator to add seconds to date object.
- Added hour and time resource to GridCont filename determination.
- Added cloud bottom and top to levels in Level (GRIB2).
- Rework grid remap in gridmath with better error checking.
Version 6.69 (Oct 2013)
Features
- Added subgrid definitions to header file for GRIB data. Now byte offset can be appended with grid number within grid to select from a multi-grid product such as the U/V grid products from NCEP
Objects
- Fixed bug in GridPlot where specific file on command line not getting used in file setup. It defaulted to "la" and no parameter using a date sequence would work
- Fixed signal computation in LightFile NLDN data
- Updated MetarTool::decode and SfcWmoFile. Now checks for COR at beginning of METAR. Now properly checks for addition visibility groups such as 8000NE.
- SfcDecode now uses id/datetime to enter data into hash. This allows multiple reports for an hour to be saved using update option
- Fixed vector function output in SfcPlot, UpaPlot
- SfcWmoFile now recognizes WMO header such as SAAG with no 2 digit at end of first group
- SfcWmoFile now checks for TSNO at beginning of line to make sure it's not a valid METAR. Some lines starting with TSNO were being interpreted improperly
- Fixed a bug in UpaWxpFile where default lat/lon was not initialized. So a random number was getting returned.
- Added bar, nobar options to VectPlot. The vector bar was
not getting displayed properly
Version 6.68.5 (Aug 2013)
Features
- Added vector grid output to GridMath. Added isVectFunc method to check for functions that return vector grids
- Added vector grid processing to GridPlot. Updated VarList to handle vector grid output
Objects
- Changed how MapPlot draws lat/lon lines. Now does it as one continuous line for dash formatting works. For hi-res grids dash appeared as solid
- Added color_label to default formatting of border and color bar in Plot
- Fixed bulk shear computation in UpaCalc::bulkRichardson
- Added code to upatext program to output soundings from model
data
Version 6.68.4 (Jul 2013)
Objects
- Fixed small bug in valid date computation in LightPlot
Version 6.68.3 (Jul 2013)
Features
- Added weight parameter for setting width of lines in software
fonts and markers. This changes plotting parameter for font
width from wi= to we=. Added setTextWeight and setMarkWeight
methods.
Objects
- Added HurPlot class
- Added GridRead::read( Filename, Grids ). Changed default reading in GridPlot to use this function rather than read( char *, Grids )
- Fixed bug in LightFile where certain parameters weren't being read in properly on 64 bit systems.
- Fixed bug in WatchPlot where default text formatting not getting set from color_data resource
- Fixed bug in Date::adjustHour where month wrap not working properly.
- Added a check if new day > current day + 5, it assumes prior month
- Added vdate option to LightPlot
- Fixed bug in default panel settings in Plot
- Fixed bug in RcmPlot where pa and path options getting confused. Use path= to set path.
- Fixed bug in SaoTool::decode where visibilities set as 10+ not
getting decoded
Version 6.68.2 (Jun 2013)
Features
- Added panel option to Figure
- Added dateline wrap option to GribFile. Replicates first gridpoint on grid line to complete global plot. Use -pa=wrap
- Added ability to set forecast time in name convention "%f". GridPlot will now set filenames from fore_time resource
Objects
- Extracting seconds for init time in GRIB data
- Fixed bug in color bar text scaling
- Changed default search time in WarnPlot from 18 to 12 hours
- Fixed bug in font spec setting of hardware font sizing
- Moved some processing from HurStorm HurStorms
- Added NidsImage::setThres( FloatArray )
- Updated precip mask algorithm in RadMask
- Added priority 0 to station plotting
- Added hurdec program
- Added Date comparison operators (overloading < >)
- Added Figure::addPanel
- Cleaned up hurricane decoder code
- Added last/max level, wind and pressure output to HurStorm
- Added min parameter to WarnPlot to set date offset for loops
- Changed name of file for hurricane lists for the year from names to storms
Version 6.68.1 (Apr 2013)
Features
- Added default panel to Plot. Use -pa=panel:WxH+X+Y.
Objects
- Added Calc::stdAtmsPres function
- Fixed bug in forecast time label in GridPlot
- Updated decoder in HurFile
- Fixed bug in KmlFile where it didn't read 2D coordinates (Y,X)
- Fixed bug in MapPlot where images didn't plot correctly when no location given
- Fixed postscript output. Vertical coordinates upside down.
- Added Rect::setu to set unsorted X and Y
- Fixed bug in SfcWmoFile where id not parsed for old SA reports
- Fixed bug in UpaData::calcPres where no valid pressure levels cause core dump
- Added some checks for missing data to UpaDataTool::compute
- Changed WMO initialization in UpaTool::decode to 99999 from ""
- Added default pressure using Std Atms to UpaTool::merge
- Fixed bug in WatchPlot and WarnPlot where default domain wouldn't accept region parameters (wxp.reg)
- Added HurStorms and HurWxpFile classes
Version 6.68 (Feb 2013)
Features
- Changed internal weather codings from SAO codes to METAR codes
- Added METAR codes to wx.smb file
- Removed conditional maps. Default is wxp.map for everything
Objects
- Fixed bug in MapPlot where "bg" parameter wasn't getting processed when bg[color] was used
- Added code to allow "," and ":" to separate values in [] in MapPlot
- Bar labels have "_" converted to " "
- Added fhour to RcmDecode (RAP analysis missing data)
- Changed internal weather codings from SAO codes to METAR codes
- Updated MosData to output METAR weather codes
- Updated "wx" parameter in SfcPlot to show METAR codes
- Updated WxTool getMetarWeather -> getSAWeather, getWeather (returns METAR codes), getMetarWeatherText -> getTextFromWeather, getWmoWeather (returns METAR codes), getWmoAutoWeather (returns METAR codes), getWeatherWmo -> getWmoFromWeather (input now METAR codes), getWeatherWmo -> getWmoFromSAWeather, getWeatherText -> getTextFromSAWeather
- Fixed bug in METAR decoder where T1000#### not interpreted as -0 but as 100C
- Increased field size in SfcData::outString for new METAR wx codes
- Updated SYNOP decoder to output METAR codes
- Fixed a few small bugs in MeteoPlot relative to model meteogram
Version 6.67.2 (Jan 2013)
Objects
- Added earth_rad specification to param[2] in Domain
- Added default specifications for skewt projection so that "skewt,t,p can be used
- Change domain size selection to be <= so that exact numbers get included
- Fixed bug in winter mask of RcmImage so that lat,lon is used to locate in mask grid
- Add city_file resource specification to radmask
Version 6.67.2 (Dec 2012)
Features
- Added LIFR to flight rules in SfcDataTool::compute
- Added MOBIL land observation processing to SfcDecode, used to be processed like SHIP but header wasn't being decoded properly
- Added labels to color_fill specifications (la=XXX)
Objects
- Fixed a bug in AreaFile where truncated images could cause display issues
- Changed Strings to preallocate buffer and allow expansion
- Added Strings::add( str )
- Enable VTEC processing in WarnFile
- Added WarnPlot to figure and plot
- Added Domain::unadjustDir( dir, EarthPoint )
- Fix bug in LightPlot where specified marker not getting plotted
- Changed Symbol to internally use floating point points
- Fixed several bugs in buoy processing
- Added region and state output to CityPlot
- Changed HurAdv to HurPos
- Fixed deprecated jmpbuf in PngFile
- Fixed a bug in SfcRaw where city_file couldn't be specified
- Added generic warning plotting to WarnPlot
- Added HurData, HurFile, HurPos
- Fixed bug in Filename where wrong time offset used
- Added code to specify grid, label and data colors in MeteoPlot
- Fixed bug in MeteoPlot so that more than 25 hours could be plotted
- Added elevation code to SfcWxpFile
- Fix a bug in warning output where warning mask being ignored (warnings always output)
- Fix bug in GribFile::peek where domain not properly set
- Added more debug output to GribFile
- Changed RadMask output grid specification to use "grid_domain" resource
- Added text labels to hydro classification NIDS product
- Added in and if parameters to LightPlot
Programs
- Created warnplot program (alpha version)
Version 6.67.1 (May 2012)
Objects
- Added nobar option to ContPlot, ImagePlot, SatPlot and VectPlot
- Added wrap option to GribFile to wrap global grid (add gridpoint to end of each line to completely wrap earth
- Added VarName::get( Variable )
- Added date validity check to WatchFile
- Fixed bug in WatchPlot where pending watches were getting plotted
- Added test watch plotting in WatchPlot (defeult doesn't plot)
- Fixed pixel offset issue in AreaFile. lcor and ecor were off by one
- Added code to handle parameter scaling for RECT projection in AreaFile
- Added "%S" (source) output to Plot::formatLabel
- Increased comment length in SfcData to 99 chars
- Added first cut on Warning decoder: WarnFile and WarnData
Version 6.67 (Mar 2012)
Features
- Changed city database files to read 20 character city names. This also requires that there can't be spaces in the city name. Please use underscores or upgrade to the latest .cty files
- Added support in NidsFile for dual pole radar products (codes 159 to 177)
- Added a bunch of functions to GridMath::process: mod, sqrt, abs, log, log10, exp, pow, mrat, shum, theta, thetav, vtemp, thetae, spd, dir, ewdir, uwnd, uwndg, vwnd, vwndg, ugeos, vgeos, dx, dx, lapl, def1, def2. These functions are now available via gridmath or the variable parameter to programs like gridplot and upaplot.
- Added contour interval, base to DatumPlot to color data values
- Moved parameter specs in map file lists to [params] instead of :params. This mirrors use of [] in var files.
Objects
- Fixed a bug in BZlib where data could overflow buffer and result in core dump
- Added Buffer::seek
- Changed Calc::eqPotTemp to equivPotTemp
- Added CityData::printLine to print everything on one line. print function now is a more friendly data on each line with labels
- Fixed a bug in CityFile where older database files with "*" were not being read in
- Added plotting of priority and number to CityPlot. Added color fill specification to color data
- Raised limit of number of contour lines from 100 to 150
- Added plot type resource to DatumPlot
- Fixed a bug in DatumPlot where plot type getting overridden
- Added checks for buffer reading in File to make sure buffer doesn't overflow
- Fixed a bug in FileTool::addOutPath where path added for null filename
- Fixed a bug in Filenmame where setName function doesn't set the is_set parameter. This results in Filename trying to process filename as a name convention
- Fixed a bug in Graph::drawText where vertical alignment messed up on multiline strings
- Added extra checks for jpc_decode output to make sure corrupt JPEG2000 encoded GRIB2 data doesn't cause a core dump
- Added Grid::adjustDir, unadjustDir to levels grid domain to adjust wind directions
- Added Grid::getValid to return number of valid gridpoints
- Added WXP grid processing to all GridFile::read functions. It was missing in a few
- Added functions to GridMath: mod, sqrt, abs, inv, log, log10, exp, pow, max, min, adjustUV, locatePoint, windDir, windU, windV, relHum, wetBulb, heatIndex, virtTemp, virtPotTemp, equivPotTemp, geosU, geosV,
- Fixed several bugs in GridMath where output variable names not getting set properly
- Moved all data processing in Lev2File to use Buffer. This eliminates many problems with buffer overruns.
- Fixed 2 bugs in Lev2Image where winter mask not being processed properly. This brings Lev2Image up to NidsImage level (fixed earlier there).
- Added color bar to LightPlot
- Added NidsFile::float32 function. This is used in dual pole decoding
- Fixed a bug in NidsFile related to threshold computation for a couple of products
- Removed a domain print in PngFile that was causing inadvertant output
- Added code in RadMask to handle model and time resources
- Added default domain to RadMask
- Fixed a bug in RawPlot where parameters "[params]" not being decoded properly
- Fixed a bug in SatPlot where "off" color not being used as a transparent color
- Fixed a bug in SfcWxpFile where additional parameters in file not getting decoded (precip, pres tend) if there were spaces in the parameter (P1 -2).
- Fixed a bug in VarSpec::update(ForeTime,Level) where a missing time not set. This is in the case of -va=time:sfc:prec. Time is set but to no value.
- Added code to WindPlot to flip wind barbs for southern hemisphere plotting. Use size < 0.
- Added BADPARAM to possible exit values
Programs
- Updated gridmath program to add most functions from WXP 5 grdmath
- Fixed several bugs in gridmath
- Reset threshold values in nids2image when threshold parameter appears in input list file.
- Removed code in radmask to set default model to ruc4. This was causing problems with being able to set it in RadMask class. The default is now ruc.
- Added time resource to soundplot for forecast sounding plots.
Version 6.66 (Oct 2011)
Features
- Changed color resources to make them more intuitive:
color_cgrid -> color_fgrid (fill grid color):
color_clabel -> color_flabel (fill contour labels):
color_cmap -> color_fmap (fill map color):
color_front -> deprecated:
color_label -> color_clabel (line contour labels):
color_line -> color_latlon:
color_sound -> color_parcel:
color_text -> color_label (labels at top and bottom):
color_watch -> deprecated - Deprecated inter, front_path and watch_path resources
- Added inverse resource - This sets background to white. It used to only be in a plot_parameter.
- Added Albers equal area and radial projections to Domain
- Added NidsData class so that full radar product can be processed at once. This simplifies data plotting and mosaic generation. This also allows for query of radar values from window alt-v.
Objects
- Added functions to Buffer: read, read(Buffer), readLine, skipLine
- Changed wmo parameter in CityData, SfcData, UpaData from long to string
- Simplfied processing of Domains by separating setParams and setParam, the second processing a param and a value. This eliminated duplicate code and fixed a couple of bugs.
- Fixed a bug in Figure where sync parameter not being seen if first plot type not a loopable drawing
- Added simple http processing using curl. This works for some file types.
- Modified FileTool to handle filenames with http: prefix
- Added time range parameter to Filemame::setNumFiles to process a range of times. This replaces the decode_hour resource in WXP5.
- Added data color and front color to FrontPlot to separate color processing and allow different attributes for labels
- Fixed a bug in FrontPlot that prevented plotting of forecast fronts
- Added data/time to comments in GIF files (dt=).
- Fixed a bug in hardware font specifications where variable fonts X specification not getting set right. Use new StrLib::splice function
- Fixed issue of "miss_val" parameter in GribFile. Before it wasn't getting set.
- Added template 4.15 to GRIB PDS processing
- Fixed a bug in GridRead where filenames that exist with a + or # in the filename are processed and not treated as if they have grid specs.
- Added code to ImageFile to recognize TIFF files.
- Added functions to ImageMath: clip, scale
- Fixed a bug in ImagePlot where domain of image not determined for some file types.
- Fixed several bugs in KavradFile to use the new cutoff processing in Image. It wasn't processing winter mosaics properly as a result.
- Fixed a bug in Lev2File where memcpy was used instead of memmove. This corrupted input data
- Reset max file size parameter in Lev2File to handle larger dual pole files.
- Added wholel, cb_base, cb_top levels to Level
- Added Vaisala ASCII format to LightFile
- Fixed a bug in LightFile where escape codes in Vaisala binary format weren't getting processed correctly.
- Updated labels in LightPlot to show something other than NLDN and USPLN
- Moved shapefile processing out of MapFile and into ShapeFile.
- Added color line to MapPlot so that filled areas can be outlined
- Fixed a bug in MdrPlot where variable resource not getting initialized
- Added NidsFile::setInfo and setMisc to streamline processing
- Added NidsFile::readData to read all radial and rastor data into NidsData object.
- Updated NidsImage and NidsPlot to use NidsData
- Fixed a bug in NowradFile to set data values to proper value.
- Fixed Plot to save images from a loop
- Fixed RawPlot to parse filenames with [] parameters in them
- Fixed a bug in ResrcDBItem where link list not properly terminated
- Added "all" parameter to SfcDecode to force all observations to be decoded
- Updated SfcDecode to handle new num_hour processing
- Updated SfcWxpFile to read from web site
- Added ShapeFile and ShapeData classes to process and read shapefiles
- Fixed labeling in SoundPlot when data missing
- Added StrLib::splice, getInt, getFloat
- Fixed a bug in StrLib::match where pointer not incrementing
- Added Strings::occurs
- Added code to handle 24 bit TIFF files
- Added new parameters for mean, accumulation parameters to Variable
- Fixed a bug in WatchFile where watch data not properly read in from LDM ingested data files
- Added WatchPlot::setColorWatch to allow for coloring watch boxes after color_watch resource removed
- Fixed bug in Wxp::isDebug where message level not queried properly
- Reworked hardware font processing to better handle TrueType fonts. Now fonts are selected from the list of available fonts for scaling.
Programs
- Fixed file processing in wmoingest. Added in_file specification for input.
Version 6.65 (Mar 2011)
Features
- Changed how ForeTime processing time. Before -ft=24 or -ft=24hr would match any 24 hour grid whether it was an instantaneous, average or accumulation value. Now -ft=24hr only matches instantaneous grids. To match any grid -ft=24 has to be used.
- Changed ForeTime to handle a "time" placeholder and an offset value. When specifying forecast time in .var files, the actual forecast time is not known until the program runs. To show forecast time in functions, you can leave the value as "time" to show that this will get the time from the fore_time resource when the program runs. This is handy when specifying accumulation or average values which would be specified as "time-6acc" in the var file. If the function needs the grid from 6 hours prior, an offset can be specified as "time-6-6acc".
- Added functionality to process uncompressed KML files from Google Earth. When specified in the map_file resource, the coordinates will be plotted into a map with
- Added code to parse and display Shape Files in MapFile
- Plots plot have fixed window size by default. Figures will have resizeable windows by default.
- When loops are generating, the prior frame will be displayed when a new frame is created. Before the window was blank until the loop fully generated. Now the progress can be seen.
- Moved complex grid reading from GridTool to a new GridRead class. This was done because there was
no way to specify parameters to the GridFile class through a
static function.
Objects
- Fixed a bug in Buffer where moving overlapping memory region gave unpredictable results. Now use memmove rather than memcpy
- Added decoding of dates with day of week in them to DateTool::decode
- Fixed a bug in DatumPlot where co= parameter not being recognized
- Added EarthPoints::getRange
- Added EarthRange class to hold min/max latitudes and longitudes
- Removed some debug print statements in GiniFile
- Added Graph::setFixed.
- Added a display frame to Graph::newFrame
- Added Graph::tranPlotView that translates plot coordinates to NDC coordinates
- Added GribFile::setParam and GridFile::setParam
- Added GribFile::setMissValue so that masked areas from bit map block can assume a value. Before they were set to MISS but in some cases it's better to set these points to a value such as 0
- Fixed a bug in Grid::setUnits where there was no space between variable description and units
- Added Grid::getValidDate where valid date of forecast grid is returned
- Added GridMath::valid which looks at two grids and returns the first one if it has valid data, otherwise it returns the second
- Added Grids::getValue which will return a FloatArray of values from each grid given a EarthPoint
- Updated GridPlot, GridCont, GridVect and SatPlot to use GridRead rather than GridTool::read
- Fixed a bug in GridPlot where forecast time set in .var file not being set for output grid. If the output grid comes from a function, the output variable label came from constituent grids in function
- Updated GridSpec to handle absolute and generic forecast time
- Added GridTool::toImage so that grids can be converted to an image
- Added code to GridTool::updateSpec to manage missing time ("time" place holder) with offset and compute a proper time
- Updated GridTool::updateSpec to handle absolute and generci forecast time
- Renamed many functions in GTran to adhere to verb/name standard. Translation functions now start with tran. So windowPlotX is now tranWindowPlotX
- Added GTran::tranPlotNdcX and tranPlotNdcY
- Added Image::setValues(FloatArray)
- Added Image::getIndex which returns the index in a valued image
- Added Image::setValue to allow image pixels to be set based on value
- Added ImageTool::toGrid which converts an Image to a Grid
- Reworked XML tree process in KmlFile
- Added code to MapFile to determine map file type rather than guessing it
- Added code to MapFile to process KML files
- Added label parameter to MapFileHeader
- Added map_in option to MapPlot which disable map extent checking. Some map lines on small domains may not plot
- Added fill option to map files so that some maps will be filled
- Added bg:color option to MapPlot so that the backgroud of the plot will be filled
- Added code to MapPlot so that segments with 1 point treated as point data and label string plotted
- Fixed a bug in MetarTool::decode where extra visibility group not decoded for international METARs
- Fixed a bug in MosDataTool::compute where forecast time code was used instead of forecast hours so some parameters output as MISS
- Added code to NidsFile to handle NSSL radar mosaics
- Fixed a bug in NidsImage where base values for mix and snow not set
- Extended mix and snow arrays in NidsImage to prevent potential array overruns
- Added Panel::withinLimits which will return true is overall view coordinates are within panel
- Added Panel::getView to get viewport coordinates given overall view coordinates. Added getWindow to get the window coordinates
- Removed ParcelData, RawCont, SfcCont, VarData and XSection class
- Added Plot::tranPlotWindow which will return the window coordinates of the panel the cursor is pointing at. Before it did everything to the last panel drawn so location and values could not be queried except within the last panel drawn. This affect zooming as well
- Added datim option to SatPlot so that plot show datim string from image rather than time computed from image valid time
- Added SatPlot::setTimezone and tz= parameter
- Added "id" and "txtwx" parameters to SfcDataTool::compute
- Changed VectPlot so that default colors set from color_data resource and not color_cont
- Updated UpaXSectCont to use XSectionPlot rather than XSection
- Added code to VarSpec::update to manage missing time ("time" place holder) with offset and compute proper time
- Fixed a bug in VectPlot where vector bar not scaled for multipanel plots
- Updated WmoParse to output WmoProduct objects
- Fixed a bug in VectPlot where vector bar not plotted relative to right edge of plot. It used right edge of viewport
- Added WmoProduct class which holds an entire product with WMO header and data
- Changed message level processing in Wxp class to use a mask rather than a level. Now message output acts like it did in WXP 5
- Fixed a bug in XWindow::procCallback where procedure could still be executed when all windows destroyed
- Reworked XWindow::deleteCallbacks
to make sure linked list is properly deallocated
Programs
- Moved parameter setting in gribfile to GridFile and GridRead classes
- Added code to gridmath to use new GridRead class
- Fixed a bug in plot where parameter resource not being properly decoded
- Added several parameters to suncalc to output just sunrise/set times and to change the format of the time output
- Added code to sfctext to force output of text rather than numeric data
- Added code to wmoparse
to manage the "last" parameter which will display the last
occurrence of a product. Fixed a bug where last output didn't
display first line of product
Version 6.64 (Aug 2010)
Features
- Added code in NidsFile to handle NSSL mosaics
Objects
- Fixed Domain coding of Lambert Azimuthal projections
- Added Filename::getName(ind) and Filename::addOutPath(path) functions
- Fixed bug in FloatArray where it did not automatically expand arrays
- Changed ForeTime::getHour to getHours and getSecs to getSeconds
- Added code to ForeTime to handle forecasts in minutes
- Fixed a bug in GiniFile where zlib buffers not deallocated resulting in memory leak
- Moved grid number processing to GridSpec in GribFile::read
- Added code to GribFile to handle forecasts in minutes
- Changed GribFile::ibmFloatConv to convIBMFloat and scaleConv to convScale and ieeeFloatConv to convIEEEFloat
- Added GribFile::convIBMFloat to encode IEEE float (GRIB write)
- Changed grid size limit in GribFile to 10000 gridpoints in Y direction
- Finalized code to write GRIB1 files. Not all functionality there
- Fixed a bug in GribFile::read where peek might not catch EOF
- Made sure Grid::getValue returned MISS if all else failed
- Fixed a bug in GridCont where domain not set if grid from stdin
- Changed grid read in GridCont to GridTool::read to handle segmented grids
- Initialized model parameter in Grid class
- Fixed a bug in GridCont where grid type is ignored
- Fixed a bug in Grid::getValue where values off grid not returning MISS
- Added print of number of missing values to Grid::printStats
- Made sure GridFile could handle input from stdin
- Fixed a bug where it turned use of header files off by default
- Added GridMath::resetMiss(grid,val) to change all missing values to val
- Added flag to GridMath::adjustDir to that UVEW grids can be handled
- Fixed bug in GridMath::cutoff where higher cutoff type not working
- Added GridTool::read(filename,mspec,gspec,grid) to process grid and file specifications for gridmath
- Added code to GridVect to make it a drawing object
- Fixed a bug in GridWxpFile::readHdr where units not properly decoded
- Fixed a bug in GridWxpFile::readHdr and write where a parameter read incorrectly (64 bit issue)
- Fixed a bug in ImageMath::blank where blanking didn't work across international date line
- Added init function to ImagePiece
- Added toggle for pixel averaging to ImagePiece
- Added code to ImgWxpFile to close zlib buffers. Caused memory leak
- Added KmlData and KmlFile classes. Not fully
functional.
- Fixed bug in Level::decodeLev where level type is pressure if no units specified
- Fixed Level::toLevelCode where missing level types returned random number
- Fixed Level::toLabel where missing l2 caused spurious output
- Fixed buffer overflow in MapPlot where marker string was too small to handle input. Text now can be 40 characters
- Changed ModelSpec::valid to isValid
- Fixed bug in NetCdfFile where byte types not read in properly
- Added double processing to NetCdfFile::get
- Added NetCdfFile::getRow
- Changed NidsFile::getHeader to readHeader as well as getRastor to readRastor, to readRadial, to readRun, to readVector, to readText, to readWind
- Changed NidsFile::packet to readPacket
- Added code to toggle uvgrid and uvew processing of vectors
- Fixed a bug where the vector scale in VectPlot is derived from grid and not plot domain
- Fixed a bug in VectPlot where vectors were not being properly adjusted to some domains
- Fixed a bug in VectPlot where fill parameters not set on wind barbs
- Fixed a bug in VectPlot::drawStreamlines where streamlines not being properly remapped to new projection
- Added code to WindPlot::drawVect to handle size=0
- Added a clear to the points array in WindPlot::drawVect to eliminate strange vector plotting
- Added code to Zlib::finish
to deallocate buffers on decompress as well as compress
Programs
- Reworked gridmath to move grid reading and file processing to GridTool
Version 6.63 (Apr 2010)
Features
- Added code to NidsFile and NidsPlot to handle Digital VIL and Enh Echo Tops products.
- Reworked Domain setup so that all projections use clat and clon. It used to be that XY, thermo and pixel projects had clat,clon at a corner. Now there the centerpoint.
- Added Panel interface. Multipanel plots now have all their coordinates and domain information stored in a Panel object to eliminate confusion and allow better query of parameters in multipanel plots.
- The default name convention file is now name.cnv. The old name_conv will be used if the default is not available.
- Added /etc/wxp to search path for resource files.
- Added "B" name convention tag to handle months in upper case "JAN".
Changes
- Moved Contour to ContPlot
- Moved Cdf to NetCdfFile to avoid confusion and keep consistent with File classes.
- Added ProfData, ProfFile and ProfPlot to manage and plot profiler data
- Moved ThermPlot to SoundPlot
- Deprecated UpaXSectCont
- Changed Ingest to WmoIngest
- Added WmoParse
- Added XSectionPlot
Objects
- Fixed a bug in BZlib::decomp where buffers not cleaned up on stream end.
- Changed CityHash::set to setup.
- Fixed a bug in CityTool::toId and toWmo where old Yugoslavia not processed correctly.
- Moved drawing of color bar out of ColorBar class. Now it just holds parameters.
- Added to ColorFill a descructor and = operator.
- Added ColorFill:getInd(value)
- Fixed a bug in ColorFill where hyphenated colors might be interpreted as a color fill filename
- Fixed a bug in ContPlot where color_label and format parameters not getting initialized from resources.
- Fixed a bug in ContPlot where cola parameter set line color.
- Added ContPlot::setTextFormat
- Fixed a bug in ContPlot where color map was not getting queried if a local colormap was applied.
- Fixed a bug in ContPlot where default colors for labels were not queried from resources.
- Added DatumAttr::setFont, setSymbol, setFormat, setResrc
- Added code to DatumPlot to initialize parameters from resources.
- Removed default processing of parameters in DatumPlot::setParam. It used to pass anythin not recognized to PlotAttr::parse. Too many side effects.
- Added DatumPlot::setFormat.
- Fixed Tephigram projection.
- Removed string query for projection name in DomainTool. Now uses function in Domain.
- Removed proj,plon as a possibility in coding of domains in DomainTool. Plon must now be in the projection specifications proj:plat:plon:...
- Added EarthPoint contructors.
- Added elev to EarthPoint.
- Added copy constructors to Enhance. Added some error checking.
- Incorporated panels into Figure.
- Added current offset in days, minutes and hours to Figure.
- Added static ForeTime::toTimeLabel( hour, str ).
- Added map parameter to FrontPlot::setParam.
- Added support for GOES 14-16 in GiniFile.
- Removed bar option code from GridCont. Now in Plot.
- Removed bar option code from GridVect. Now in VectPlot.
- Added Image::setRGB which is same as setColor.
- Added ImageMath::toIndex
- Removed irbar option to ImagePlot
- Added test for bad message type in Lev2File.
- Added range specification (b-d/d) to Lev2Image.
- Fixed a bug in Lev2Image where rain/mix/snow not working quite right.
- Fixed a bug in Lev2Image where ramp clutter elimination not working right.
- Added Lev2Image::setup function to set image values.
- Added Lev2Plot::setId to use this id in name convention.
- Simplified Level processing by creating sub class for top and bottom levels.
- Added level processing for levels such as freezing, lcl, max wind, tropopause.
- Fixed several bugs in LightPlot. Added code to set many parameters.
- Changed the option to set latlon colors to coll= in MapPlot.
- Fixed several small bugs in MdrPlot
- Added MosFile::decodeNAM and decodeGFS which map to decodeETA and decodeAVN.
- Fixed a bug in MosPlot where vector plots weren't displaying.
- Added code to NameConv to handle offsets in days, hours and minutes.
- Added code to NameConv::set to specify convention params like min= and size= when specifying convention type.
- Added NidsFile::float16 to handle 16 bit float reference values.
- Fixed bug in NidsImage where rain/mix/snow thresholds might not be handled properly. Added code to warn if no matching values are given in mix and snow values.
- Added NidsImage::setup function to set up output image.
- Added box option to NidsImage to map all values from NIDS data into image as opposed to where pixels in image are obtained from nearest datapoint in NIDS data. Useful in coarse grids where pixel might contain several NIDS data points and best output is to take largest value in the pixel box
- Fixed several issues managing ramp clutter removal
- Changed ObjectAnal param for convergence factor from converge to conv
- Created Panel class to better handle parameters in multipanel display
- Added code to ParcelParams to handle user specified parcels. It was there in a basic form but not fully operational
- Set up Plot to handle Panels.
- Removed concept of global colormap in Plot
- Moved color bar drawing to Plot
- Reworked the code in RadMask to better handle missing data
- Set the default in RadMask to use 1hr forecast as opposed to analysis
- Added the ability in RadMask to use prior initial times and any forecast hour. RadMask will pick most appropriate forecast time based on initial time and current time
- Added code to accept compressed lev2 radar data in RadPlot
- Fixed a bug in RawFile where non-numeric data was getting set as a value. Now value is MISS for non-numeric data
- Removed f:r:n:c option from RawGrid and passes parameters to ObjectAnal for setting
- Removed color and format options in RawPlot. Redundant since already parsed and set in DatumPlot
- Fixed a bug in RcmWxpFile that wouldn't properly save winter RCM mosaics to file
- Added code to Rect to rearrange values if specified max, min rather than min,max
- Added code to RedbookPlot to set defaults from resources and added ct= and co= parameters
- Added code to RedbookPlot to get num_hour for processing loops
- Added code to RedbookPlot to draw maps like other plot objects
- Changed absolute resource environment variables to use "_" to make it more readable. For example wxp_sfcplot_color_data rather than wxpsfcplot.color_data. In some shells "." not allowed in environment variable name
- Fixed a bug in SaoTool where SAO 3/6 hr precip field not handled.
- Added code to SatPlot to make sure color index values in Enhancement object are set to the indices from current colormap. In some cases remapping colors in color table could corrupt colors in enhanced image
- Fixed several bugs in SfcCdfFile that prevented some parameters from being read in properly
- Added SfcData::getHour to get the reporting hour from the observation
- Added code to SfcDataTool to handle max and min temps based on the hour of observation
- Added a "time" output parameter in SfcDataTool
- Initialized grid_domain, variable and output from resources in SfcPlot
- Added map, map_line and map_fill options to SfcPlot::setParam
- Added SfcPlot::setPlotType, setTimezone, setGridDomain and setOutput
- Added ability to set city database cf= in SfcRaw
- Fixed a bug in SfcXmlFile where blank nodes were reports
- Added code to SoundPlot to set color, plot type and parcel parameters
- Added Tools::swap to swap two number
- Fixed a bug in UpaData::interp where potential temperature interpolation was not working
- Added UpaData::getTropPres and getMaxWndPres
- Added UpaDataTool::getLower and getUpper to compute a variety of new level types including pressure above ground, height above ground, sigma level, freezing level, tropopause and max wind
- Added UpaLevel::set(,ph,t,td,d,s)
- Added code to UpaPlot to initialize several parameters from resources
- Fixed map underlay and overlay in UpaPlot
- Added UpaPlot::setPlotType, setTimezone, setGridDomain
- Updated UpaXSectPlot to handle contouring and brought it up to the same level of functionality as other plot classes
- Added code to VectPlot to set colors
- Changed not valid to pending in WatchData. Also added ended status
- Added code to set colors in WatchPlot
- Added code to set hour and num_hour in WatchPlot
- Added {resource} path option to action ouput in WmoIngest
- Fixed bug in WxTool::setCloud where cover not being handled for synoptic data
- Removed color_cloud, color_hodo, color_hodtxt, color_therm, color_thrmtxt, color_wind and color_wx as valid resource names
Programs
- Moved bufrread to bufrfile
- Added sound, therm and xsect plotting to figure
- Moved ingest to wmoingest
- Added code to lev2image to handle compressed data
- Fixed several bugs in lev2image and added several parameters such as clutter radius to make it work more like nids2image
- Fixed a bug in meteoplot where plotting region not set properly
- Added ability to specify clutter radius and ramp function in input list file in nids2image
- Added setting of file time in days, months and hours to plot
- Added profplot, proftext, radmask, sfctext and wmoparse
- Fixed a bug in upaplot where not all color resources available
- Cleaned up upxplot
- Added ability to process several files in wmoingest
- Moved code to do winter mask out of make_prec_mask to RadMask class
Version 6.62 (Dec 2009)
Features
- Added forecast time parsing for range (beg-end/dt). For example:
-ft=0-48/6
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
- 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
Objects
- 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
Programs
- 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
Version 6.61.2 (Oct 2009)
Features
- 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
Objects
- 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
Programs
- 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
Version 6.61 (Sep 2009)
Features
- 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
Objects
- 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
Includes
- Added inline GridCont::setMapFile
Programs
- 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
Version 6.60 (Aug 2009)
Features
- 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.
Objects
- 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
Includes
- Added inline functions to Plot
to set data type, time sync, date for labeling
Version 6.59 (Jun 2009)
Note:6.58 was an internal release
Features
- 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.
Objects
- 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)
Programs
- 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
Version 6.57 (Mar 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
Version 6.56 (Dec 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
Version 6.55 (Nov 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
Version 6.54 (Oct 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
Version 6.53 (Aug 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
Version 6.52 (Jul 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
Version 6.47.1 (Jun 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
Version 6.47 (Jun 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
Version 6.46 (May 2007 - first operational release)
- 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
Version 6A37 (Jun 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; $sfc->setVariable("all"); $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 ); $plot->drawBorder(); $plot->drawLabels(); $plot->manage(); |
#! /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() sfc.setVariable("all") 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 ) plot.drawBorder() plot.drawLabels() plot.manage() |
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.
Version 6.A18 (Feb 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.