For this project, we had to build a program to visualize data gathered during the ENDURANCE project
exploration of Lake Bonney, Antarctica, in winter 2008.
Source Data

The source data consisted in a comma-separated values file containing information about water temperature,
conductivity, turbidity and other 8 parameters. The data was measured throughout a section of
west Lake Bonney, on 65 different sites and at different depths. The sites were approximately placed on
a regular 100m x 100m grid. A lot of invalid datapoints were present in the original dataset, so It was
important to deal with this invalid data explicitly in order to come out with a consistent visualization.
Converting Data

The source data has been initially converted to an unstructured grid in the vtk legacy format, to simplify
its loading inside the application, and to be able to preview the data using ParaView. Through paraview, it was
possible to transform the different sets of data (the bathymetry, overlay and sonde dataset) to match their
position. The transformations could then be easily reapplied inside the application. ParaView has also been
used to generate a volumetric representation of data. This representation has been exported into a separate
unstructured grid.
The Visualization Pipeline

The visualization pipeline built for the application loads three basic data sources:
- The sonde data unstructured grid
- The sonde data volume unstructured grid
- The lake bathymetry datapoints
The sonde data and volumes are passed through a set of threshold filters, to eliminate invalid
datapoints (when present) and to allow the user to visualize only a specific mission or set of missions.
The filtered sonde data is also used to generate a color bar that explains the currently applied color mapping,
and a 2D plot agains depth of all the currently selected datapoints.
The Application

The visualization application has been written in C++ and makes use of Qt to implement the graphical user
interface. Most of the application space is initially reserved for the main data view. The application
offers two sidebar docks, one offering options to setup and modify the main view. A second sidebar dock
contains the 2D plot of the currently visualized datapoints. Interaction with the main window
visualization is based on the standard vtk terrain interactor:
- Left mouse click:
Rotates the view.
- middle mouse click:
Translates the view.
- right mouse click:
Pans the view.
A terrain interactor has been used instead of the standard one, since this dataset has a clear 'up vector'
represented by the depth coordinate. Using a terrain interactor instead of the standard one in scenarios like
this one extremely simplifies the manipulation of the model.
View Options

The View Options Sidebar is divided into three main areas:
- Bathymetry Options: this section allows to configure the overall depth scale of the
visualization, the opacity of the bathymetric model, and the opacity of the sonde data volumetric
model.
- Component Options: in this section it is possible to select which component of the
source dataset is currently visualized, and to select the color map used to represent the sonde data.
both the sonde points and the volumetric representation get updated using the color transfer function
defined here.
- Mission Options: this section allows the user to choose which mission or subset of missions
should be currently visualized.

When modifying the set of currently visualized missions, or changing the currently visualized data component,
the data plot gets automatically updated to show the corresponding selected information.
Volume Rendering


Through a separate dock it is possible to access volume rendering options. Volume rendering is performed
using software raycasting. It is possible to specify up to 10 transfer function ranges for volume
surface extraction, each one with its own color and opacity.
Slicing


The application aslo supports the visualization of a custom slice of data. Is is possible to manipulate
the slicing plane directly inside the render window, or the user can choose to slice along one of the three
main axes.
Docking
Using docking, it is also possible to customize the interface to allocate all of the available application
space to the visualization. The view options are still avaliable, selecting the corresponding tab on the
bottom of the application window.

Conclusion
Download the application source code, datafiled and Win32 executable
HERE.
Things to do
- Revise the interaction style used for the main visualization
(perhaps using a terrain-like interaction scheme).
- Add support for custom slice visualization. (Possibly using a best interaction style than
the default vtk one. ParaView offers much a much better interaction system to handle data slicing.
- Export sonde volume data as a structured grid. Delaunay3D generates tethraedral data.
This does not seem to be ok if we want to manipulate real volumetric data.
- Support the selection of single grid points to plot specific data.
- Support multiple plots, and plots against components other than depth.
- Support view snapshots and annotations.