Former BODC visualisation programs
The following is a technical summary of the functionality and development of our former in-house visualisation programs. It assumes some knowledge of programming techniques.
These programs formed the mainstay of BODC's visualisation capabilites from 1989 to 2005. They were used 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.
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).
|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|
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.
|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|
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.
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.
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.
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 were never updated. All edits, including data edits such as time shifting and interpolation, were performed on the data held in the dump file.
In 2003 BODC embarked on a major 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.