WXP
History

Historical Background

The Weather Processor (WXP) is an integrated set of meteorological data analysis programs developed at Purdue University, Department of Earth and Atmospheric Sciences. These programs perform data ingest, decoding, analysis and display of various types of meteorological information all from a single menu driven shell called wxp.

WXP Version 1

Work began on WXP in 1984 as a set of student projects to handle the real-time plotting and analysis of data from the FAA 604 circuit. The software was used to reduce analysis time and improve objectivity. Normally these analyses would take hours to generate by hand. The first version of WXP was developed on one IBM PC/XT as a combination of several student projects from an Application of Microcomputers to Meteorology class. These simple programs were written in BASIC using the IBM Advanced BASIC interpreter provided with IBM MS-DOS. These routines were specifically targeted at the Midwestern United States and used the Color Graphics Adapter (CGA) for its graphics display. The complete package contained a weather plotting program, a radar summary program, a thermodynamic diagram plotting program along with simple ingest and decoding software.

WXP Version 2

This BASIC language version of WXP (Version 1.0) worked well only for limited hardware and software domains. The BASIC language was considered too slow and its graphics capabilities too limited for expanded computational programs to work efficiently. For subsequent versions of WXP, a decision was made to rewrite the code in the C language and use the Graphical Kernel System (GKS) as a graphical interface. The acquisition in 1986 of the IBM RT with AIX (IBM's version of Unix) aided this development. Other benefits of this language conversion were portability so that WXP could be run on a variety of hardware platforms on a variety of operating systems. The use of GKS allowed WXP to run on any number of graphics displays as well as output to a number of hardcopy devices such as printers and plotters.

The new C/GKS WXP code (version 2.0) for the IBM RT/PC was finalized in late 1987. This version added a great deal of functionality to the original software. It included a more powerful data ingestor along with a robust set of decoders. A number of display programs were added to handle surface data, upper air data and sounding plots. Ports of WXP were made to VMS and MS-DOS.

WXP Version 3

Work on a new version of WXP (Version 3.0) began in November 1987. The principle focus of this effort was to further extend WXP analysis routines and allow the storage of data on a central file server using NFS, WXP could run on IBM AIX, SunOS, MS-DOS and access the data over a network.

Another important aspect of the work done on version 3.0 was the adaptation necessary for incorporation of WXP with the Scientific Data Management (SDM) system. The Unidata Program developed the SDM to create a end to end system for ingesting data, decoding and manipulating data and visualizing data. Unidata provided the LDM (Local Data Manager) ingestor and WXP provided the decoder and visualization software. The LDM could ingest the NWS FOS (Family of Services) data feeds that were available via land line or satellite. A joint effort between Purdue and Unidata modified WXP to read LDM data using a Unidata naming convention. As part of the SDM package, WXP was distributed to over 40 universities and colleges and ported to run on Sun workstations under SunOS and Solaris, DEC workstations under VMS and Ultrix, HP workstations under HP/UX, Silicon Graphics workstations under IRIX and IBM workstations under AIX.

The major addition modifications for version 3.0, released in late 1988 included LDM support, surface and upper air gridding and contouring programs, MDR radar conversion programs as well as a set of data parsing programs. In order to provide WXP programs with a uniform user interface and to allow extra functionality without adding to shell menus and prompts, a command line interface was added to each program. All necessary pieces of information requested by the individual program could be passed to the program via a single command line. This allowed additional parameters to be added extending tailorability of WXP allowing each site/user to create their own localized methods of interaction to suit their operational interests or environment.

Version 3 was the first version to use an API call XGKS. This allowed WXP to use X Windows for graphics display. X Windows was an up and coming graphics environment being promoted by many Unix distributions.

WXP Version 3.5

Further modifications to WXP resulted in the release of version 3.5 in Fall of 1989. This version had the same applications as version 2 and 3; however, major changes were made in the lower level functions used by WXP to perform various calculations and produce graphics, as well as for data entry. These modifications were required to allow WXP programs to use more types of data and to support more operating systems. In addition, a defaults file was incorporated into each WXP program in order to allow more end-user customization of the WXP environment. Menu interfaces were modified to improve user productivity and enable program expansion. Finally, the command line interface was modified to eliminate case-sensitive parameters.

WXP Version 4.0

Access to several new data types were introduced for WXP version 4.0 released in the summer of 1990. Software development at the Unidata project office implemented a new data file type called netCDF for the network transparent Common Data Format. This is a self-describing data structure where variables have specified dimensions and attributes which describe them. The low level routines of WXP were modified to access this new data file type transparent to the user and also provided the capability of producing netCDF files as output from converters, decoders and gridding routines. New programs were developed to plot and contour Model Output Statistics (MOS). A NPS ingest program was developed and a program developed to contour the model grid-point data. Support for international data were added to WXP which included more complete city database files, synoptic surface data decoders and global map database and region specification. More command line and defaults file parameters further extended user tailor-ability of the WXP programs.

WXP Version 4.3

The work done in version 4.0 did not meet the functionality required for the SDM version 3 release planned by the UPC. Further work had to be done to implement a resource and command line interface known as UDRES or UniData RESource. This replaced the original defaults file interface developed for WXP 3.5. In making the changes to the underlying code, a WXP_init interface was written which emulated UDRES but provided backwards compatibility to the previous defaults files interface. The major difference of this resource interface was that the resource or defaults file used the X defaults standard. The command line implementation was also cleaned up and code to handle resources was greatly improved. All resources could now be specified either with the command line or in the resource file. Second, the netCDF structures were modified to allow easier access by netCDF operator programs to be developed by the UPC. Third, a new color interface was developed allowing all colors used by WXP to be modified or changed. This was implemented to provide support for monochrome and high resolution monitors. Colors could now be specified either by color index or by color name based on a color table file which could be modified by the user. This file interface allows up to 75 colors can be specified allowing for many different color combinations. Finally, a new surface conversion program "sacvt" was developed to replace "convert". The new conversion program used a new parsing interface which allowed more different types of data to be decoded including METARs. These modifications resulted in version 4.3 in late summer 1991 and was included in the SDM version 3 release by the UPC.

WXP Version 4.5

Many new programs were being developed along with the additions needed to satisfy the deliverables of SDM 3 but were not included into WXP 4.3 because of the time constraints placed on the SDM release. These programs were finished and debugged and added in the WXP 4.5 release during the winter of 1991-92. This release included an upper air cross-sectional contouring program, an animation, overlay and annotation program, X based satellite display program and programs to help in graphical overlays. The most of the work on WXP 4.5 concentrated on the X windows interface in an effort to realize the full potential of X to solve many of the deficiencies that resulted from using GKS as the main graphics layer. First, the XGKS layer was replaced by a more robust GKS to X interface "ansi2x11" which allowed programs to plot information on windows not opened by that program. If a base window is opened, any WXP program can plot data to it allowing for many overlay possibilities. Second, a program called "wxploop" was developed which will create this base window. Also, writing to several pix-maps instead of windows and animating the pix-maps sets up wxploop to animate plotted data. The major drawback in the past to the X windows implementations was the lack of high-resolution hard-copy capabilities. Once created, the window may be window-dumped and printed, but the results is limited to the resolution of the screen which is much lower than most hard-copy devices. Therefore, the ansi2x11 interface was fitted with a postscript back-end that allowed any WXP program to produce high quality laser printer output.

WXP Version 4.6

With the decision of Unidata to remove WXP from the core SDM package, WXP development could now occur without the necessity of another SDM release. During the spring and early summer of 1992, work continued on version 4.6 which included addition of satellite navigation so that data could be plotted correctly over satellite images and a grid mathematics package that allowed the end user to manipulate grid either produced by WXP or by other programs. This meant the inclusion of programs grdmath and vector. This was also the first version to use WXP programs as filters or pipes allowing data to be passed from program to program without intermediate files. This became a necessity with the grid math interface where several component grids would have to be passed from one program to the next. Using pipes greatly simplifies data transfer.

WXP Version 4.7

WXP version 4.7 became available in the fall of 1992 and included several new components. First, a raw data file component was added to each plotting program that allows each program to act as a filter from large converted/decoded data files which have a large number of parameters. The raw file interface allows each component to be dealt with individually. Also, a math package called rawmath was added for raw data manipulation. The program mapplt was modified to add raw data plotting and a program named grid was added to fit raw data to a grid. This addition increases the amount of data handled by WXP by including the capability to use non meteorological data. The second addition is a attributes package which allows line styles, widths, fill patterns and text types to be changed. Also, dither patterns were added to the satellite display program xsat. This is all in an effort to support monochrome displays as well as color. It turns out that most universities have invested greatly in monochrome systems for computer laboratories and this addition helps establish WXP for those sites. Third, additional support has been added to the code base to handle the generation of many of the standard DIFAX facsimile products. This is as a result of the proposed faze out of DIFAX type products in the near future.

WXP Version 4.8

When 4.7 was completed, work began to make WXP more compatible with a Graphical User Interface or GUI. Many subtle changes had to be made in order to allow the GUI to access and handle the communication of resources and program defaults between a variety of programs. Second, a strong push was made to increase the base set of analyses by setting up shell scripts called "wxpplt" and "wxptxt". These scripts use a combination of WXP programs with wxploop to create overlays and loops. Program capabilities were enhanced to allow for more complicated plot generation from within a script. This included the addition of an overlay capability to the DOS version of WXP. Third, WXP was included into the American Meteorological Society's Project Atmosphere as part of the DataStreme project. This meant a completely new ingestor had to be developed to handle the distribution of non-NWS data plus some modifications to upgrade the overall DOS support.

The High Resolution Data Service (HDS) also came online in the summer of 1993 which required another ingestor modification. The old GRIB based ingestor was replaced by a new ingest program that could handle all NWS circuits. In addition, the new version added satellite remapping to any projection, a new raw file interface, SHEF decoding, and support for new MOS and METAR data formats. This led to the release of WXP version 4.8 in the winter of 1993-94.

WXP Version 5

WXP 5.0 represented a conceptual change from previous versions of WXP. Earlier versions of WXP were written with a top down mentality. In other words, there was a set of analyses that needed to be produced and programs were developed to produce these analyses from the data types available. Version 5 inverts the data model. Basic data manipulation routines are written into the library and then each program converts the input data into one of the data models for plotting, contouring, etc. The basic data models are:

Common functionality such as date and projection/georeferencing were moved into the library. This allowed about 95% of the functionality of WXP to be put into the library as opposed to about 30% in WXP 4.

Version 5 also centralized resources. In prior versions, the resources were set up in the main program and then passed to the library. In WXP 5, the resources are queried in the library no longer forcing extensive code in the main program to handle resources. The main program just lists the resources the program needs and passes that list to the library.

Version 5 extended the use of configuration and database files. File name conventions have been moved to a file so that almost any name convention can be handled by WXP. Variable plotting files are used to tailor plotting, compute new parameters and setup overlays.

WXP 5 also added support for data types such as:

WXP Version 6

WXP 6 represents a complete rewrite of WXP. Version 5 attempted to encapsulate functionality into pseudo-objects but since it was written in C, a thorough conversion was difficult to achieve. Version 5 is about a third object oriented. Version 6 finishes the conversion. WXP 6 is written in C++ and adheres to object oriented concepts. In doing the rewrite, much of the WXP library was broken down by functionality. Instead of about 120 source code files, WXP 6 is over 300 separate objects. This delineated functionality and eliminated confusing function naming. It also clearly encapsulated all data into reusable objects thus eliminating side effects of global variables.

The aim of version 6 is as a set of toolkit programs and as an API. The toolkit is for quicker development of products and higher tailor-ability of data and plotting. So the menus and prompts of WXP 5 are gone. There is no WXP shell program as the intent of WXP 6 is to be used in scripts. Programs use internal defaults more making command lines simpler.

Version 6 continues to expand functionality including:

WXP 6 also has a published API. This is accessible from a C++ program but parts of the API are also available through Perl and Python modules. This allows for a higher level of customization and data manipulation that could ever be possible through the base set of programs.


Last updated October 2013