Software engineering
Former BODC visualisation programs
The following is a technical summary of the functionality and development of our former in-house visualisation programs. It assumes you have some knowledge of programming techniques.
These programs formed the mainstay of BODC's visualisation capabilites from 1989 to 2005. They were used by BODC's data scientists to quality control marine data, and were an essential part of our data processing procedures. They have since been superseded by Edserplo but are described here for historical completeness.
Contents
- Background
- Functionality
- Code
- Graphics interface
- Formats
- General operation
- The future of visualisation at BODC
1. Background
BODC have always relied on visualisation to screen marine data.
Up until 1989, our data scientists used paper and microfiche to perform this task. However, the requirement to edit flags and look at data using different scales meant that the hardcopy method had to be replaced at the earliest opportunity.
In 1987 we acquired our first graphics workstation, a Silicon Graphics, Inc (SGI) 2400T. The graphics workstation replaced both paper and microfiche, and led to substantial productivity increases of between two and three orders of magnitude. BODC has since developed and maintained its own visualisation software suite (see Table 1).
Table 1 — BODC's SGI-based visualisation programs
| Name | Data type | Languages | Year deployed |
|---|---|---|---|
| Serplo | Time/depth series | Fortran 77, Fortran 90 | 1989 |
| Edteva | Tide gauge data | Fortran 77, Fortran 90, SQL | 1993 |
| Waview | Spectral wave data | C++, Fortran 77 | 1996 |
| Xerplo | 2D time series data | C++, Fortran 77 | 1997 |
2. Functionality
Skilled data scientists (who have a sound knowledge of marine processes) used the programs in Table 1 to screen and flag oceanographic data. Flagging is a mechanism where suspect data are highlighted but the actual data values are not changed. This is an essential part of quality control procedures carried out by BODC.
Table 2 summarises the functions of each presentation page for each program. Each page provided the user with the ability to perform a specific data screening function. Each page was displayed on the screen in its own window.
All programs support Pages 0, 1 and 3 as described below. The Serplo program also supports Page 2.
- Page 0. Introductory Page summarised program function.
- Page 1. Series and channel selection. Scale and offset adjustment.
- Page 2. Auxiliary header information, like position and depth.
- Page 3. Colour creation and adjustment.
Table 2 — Functionality of presentation pages
| Program name | Page name | Function |
|---|---|---|
| Serplo | Time series | Plots against time axis |
| Serplo | Depth series | Plots against depth/pressure |
| Serplo | Velocity scatter plot | Plots each vector as a dot |
| Serplo | X-Y Scatter plot | Plots any two parameters |
| Serplo | Year's tidal plot | Stacked monthly time series |
| Serplo | Wave histogram plot | Plots Hs v. Tz |
| Serplo | World Map | Shows rig positions |
| Serplo | Inset Track Map | Displays cruise track |
| Serplo | Series Selection Map | Plots series positions |
| Xerplo | 2D time series | Plots bins against time axis |
| Xerplo | Thermistor/ADCP Plot | Plots data cycles as profiles |
| Xerplo | World map | Inset track map adjustment |
| Xerplo | Inset track map | Displays cruise track |
| Xerplo | HF radar synoptic page | Plots velocity vector at each cell |
| Edteva | Time series plot | Plots port data series |
| Edteva | Output page | Controls and initiates output |
| Edteva | Analysis page | Display and contrast analyses |
| Waview | Time series plot | Plots data series |
| Waview | Histogram plot | Plots Hs v. Tz |
| Waview | Spectral data plot | Plots spectra |
3. Code
Some 60,000 lines of code were written using both Fortran and C++. The C++ code utilises Fortran elements initially coded for Serplo.
Dynamic array management was provided by Serplo and Edteva's Fortran 90 mainline code, but this left many arrays as fixed in extent.
C++ was introduced to marshal the increased complexity associated with the introduction of two dimensional (2D) data. C++ was also more appropriate than Fortran for interfacing with graphical Application Programming Interfaces (APIs) such as the OpenGL API.
4. Graphics interface
All visualisation was done through the SGI Iris GL (a proprietary software library). SGI, in collaboration with other companies and organisations, pioneered its replacement (OpenGL) - but this was only used to a limited extent.
Iris GL had the advantages and disadvantages of marrying window and event management with graphical rendering. It was simple to learn and easy to use - but it was tied to SGI hardware. SGI's OpenGL in contrast is purely a rendering API - event and window management must be provided by other APIs but programs can be ported to other hardware.
5. Formats
The programs analysed data files to discover their formats, including our QXF (a netCDF) format. Edteva could also read a large number of formats peculiar to BODC's operations. Serplo could read the National Oceanography Centre, Southampton (NOCS) PSTAR data format.
6. General operation
The user invoked each program with a file of file names (the driver file). The files were read in and the banner page displayed. After defining an appropriate selection and settings on Page 1 the user would branch to a display page.
On the display page the user would normally switch between displaying all series and one series and, where appropriate, all channels and one channel. The user could zoom in and out, pan left and right, and up and down.
The details of Edteva's invocation were slightly different. Edteva added data from the driver file to a dump file, or simply opened the dump file if the driver file was absent. Files in the driver file are never updated. All edits including data edits such as time shifting and interpolation, were performed on the data held in the dump file.
7. The future
In 2003 BODC embarked on a major software re-engineering project for visualisation software.
Between July 2003 and the end of January 2004 a Java prototype was developed. This demonstrated that Java provided the facilities and performance to support our visualisation operations.
The replacement software, Edserplo, became operational in 2005.
Related BODC pages
| Software engineering at BODC | The BODC series model | |
| Edserplo — BODC's current visualisation and tidal processing tool | The BODC Transfer system | |
| Edteva — our former tidal processing program | BODC's Underway Data Processing System (BUDS) | |
| Visualisation developments — a Java prototype | Code and format definitions |