As a student employee at the National Climatic Data Center, most of my time has been spent extending the Climate Visualization (CLIMVIS) system. CLIMVIS is a system that allows world wide web users to dynamically create data plots of various kinds of weather data (drought, precipitation, temperature, snowfall, etc.) My contribution consisted of two CGI programs that made available temperature and precipitation data collected by the Global Historical Climatological Network (GHCN), a network of weather stations participating in the collection and archiving of weather data from different locations around the globe.
Although both of the CGIs I wrote are working well, they each have limitations. First of all the user has to visit separate pages to access them. Secondly, the user interface consists of the user making selections and calling the CGI repeatedly to generate pages with new selections before the GIF image of the data plot can be created. This causes extra processes on the server and makes the interface inflexible and inefficient. Most of all, the data the images are created from consists of a series of very small ASCII files stored in an intricate directory structure. This does not pose a problem for the precipitation CGI, but it is a major difficulty for the temperature CGI because it will eventually require regular updates a most daunting task under the current scheme.
My approach for a new solution to these problems consisted of three parts:
- Creating data tables within an Oracle RDMS that would contain the temperature data and the station meta-data for both CGIs about 75 Mbytes total.
- Modifying the temperature CGI to read all of its data from the Oracle RDBMS.
- Creating a Java interface for both CGIs that allows the users to access either CGI from a single entry point (an applet).
- The new system has provided several advantages over the old:
- An easier query and update procedure for the data. (No text files to parse.)
- Decreased load on the web server. (CGIs run only once to create the image rather than repeatedly to create a user interface.)
- A framework that can be easily extended to add support for more CGIs (any CGI for that matter.)
- A multi-tiered, distributed system that allows the database, CGIs, and the applet to work together seamlessly from different hosts without the users knowledge.
- Simplified, shorter, more standardized programming within the CGI (i.e. The CGI uses the Oracle C API instead of a proprietary system for parsing the data.)
- Extends the life of aging CGI technology while new technology is under development.