Submit your data

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).

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


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


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.

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.


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.

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 were never updated. All edits, including data edits such as time shifting and interpolation, were performed on the data held in the dump file.

The future

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.