Matthew Maxwell and Dr. Ken Rodham, Computer Science
In the Western United States and other arid regions of the world, careful water management is crucial. As part of this process, data must be collected, analyzed, and manipulated before it is used to support real-time water management decisions. To facilitate this complex data dissemination, I developed computer software that automates the process by which real-time hydrological and weather data is collected, analyzed, and distributed. This software is available as the open-source package entitled OpenBasin.
OpenBasin was developed using a number of popular technologies. To perform data collection, a number of programs were written using the Perl programming language. Since the data collected from remote stations is generally stored in plain text files, these files must be processed and stored into a database. The Perl programming language is known for its powerful text processing, so I chose it to handle data collection. The database I used to store the collected data is the PostgreSQL database. This database has many advanced features which help ensure data integrity and simplify data storage. Another popular technology, the PHP programming language, was used to create a framework that provides easy access to OpenBasin information via Internet pages. The combination of these three technologies creates a system by which real-time data can be collected, manipulated, and displayed on the Internet with ease.
These three programs, Perl, PostgreSQL, and PHP, are distributed as open-source software. This means that users have the ability to view their source code and customize them as needed. Additionally, these three programs are free. Since OpenBasin is created with these three technologies, OpenBasin is also able to be distributed as open-source software free of charge. This allows OpenBasin to be used for water management applications with little or no budget. Also, the open-source nature of OpenBasin allows for continued development of the OpenBasin software through the collective effort of OpenBasin users
However, the wide range of data collected for water management purposes complicates the automation process. Data measurements collected at remote stations include such information as water flow, water height, air temperature, solar radiation, wind speed, and relative humidity. Each of these types of data must be treated differently and used in different calculations. Additionally, in certain contexts, this data must be further modified to discover additional information. For example, the current water height of a reservoir must be used to calculate the water storage of the reservoir. The solution I created to solve this problem consisted of two independent parts: an elaborate meta-data system and an object-oriented design approach.
Meta-data is information stored within the database which describes the data itself. Some examples of meta-data stored in the OpenBasin database include a list of measurements recorded at each of the stations and the units, the precision, and a description of these measurements. Furthermore, measurements have additional information that allows data to be grouped in categories and referred to by keywords. This additional meta-data allows users of the software to easily access all of the data available in the database.
The object-oriented nature of the program allows for a high degree of customization. For example, some instrumentation that measures precipitation records the running total of all precipitation and other instrumentation records only the precipitation within a given amount of time. To resolve this conflict, a custom object was used for each type of measurement. These independent objects function to coerce the different measurements into the same type of data. Thus the amount of precipitation within a given timespan can be retrieved from OpenBasin automatically, even if this data is not immediately recorded by a given sensor.
After these core features of OpenBasin were implemented, additional features were added to the software to make the data more accessible. Some examples of these features include methods to display tabular data in chronological order, graphing applications to visually display results, and diagnostic scripts which help ensure that radio communications are working and that data is being collected properly. Additionally, administration features were added which simplify the task of configuring OpenBasin. Another useful feature added to the software allows access to real-time data via web-enabled cell phones and PDAs.
The feasibility of using OpenBasin to monitor real-time water resources is demonstrated by current implementations of the software. It is already being used in various water districts across Colorado, Idaho, and Utah. Current plans include implementing OpenBasin on two additional water districts in Utah and expanding the use of OpenBasin within currently-monitored water basins. Furthermore, the ease of implementing OpenBasin was illustrated by a successful implementation of OpenBasin for the Bear River Water Users Association in two days.
Although the OpenBasin software is already robust enough to monitor real-time water basin activities, there are still many areas that could be further developed. One possible addition to the OpenBasin software package would be the creation of a query language which would utilize the meta-data stored within the database. Currently, accessing data requires a multi-step process of querying the database to retrieve meta-data and then querying the database again to retrieve the actual data. Although a custom query language would not reduce the actual number of database queries performed, it would compact the process of requesting data into one succinct query.
Through this research experience, I gained additional insight into the software development process. Furthermore, I experienced the process by which computer science skills can be beneficially applied to other fields. In the future, I plan on integrating OpenBasin with other water modeling applications to provide additional access to related data.