Project 2

I'd like to be ... under the sea


This project will deal with visualizing some real data that was collected in December in Antarctica for a NASA funded research project *.


For information on the project that is collecting this data please see: the ENDURANCE Project

An abridged version of the collected data is available to you in the file endurance.csv. It includes:

3 columns giving the location of the measurement. X and Y form a grid on the surface of the lake - multiply each by 100 to get the actual scale in meters. Depth is in meters.
The next 8 are values that were measured at each location.
The next 3 give information about the scanning process.


One feature that is commonly found is real datasets is missing values. There are a number of missing values that have been given the null value -999. There are some values where the date and time of collection are also invalid. These have been marked with 0/0/0 and 0:00:00 respectively. You can modify the file to change the end-of-line character if you wish but otherwise your code needs to be able to read in a file of this form.

Whenever the user interacts with the visualization the screen should update reasonably quickly. This application is meant to be usable. You can use whatever user interface widget library you prefer (wxwidgets, fltk, etc.) Keyboard shortcuts are acceptable as additions but there has to be a nice user interface with a gui control for each feature.

You should start by installing vtk, which can take some time depending on your platform. Then I would suggest the next thing you try is to install paraview from www.paraview.org. This application, built on top of vtk, allows you to interactively try out a bunch of the filters vtk makes available. Its a quick way to figure out an appropriate pipeline.

All of the data files are available via the blackboard site for the class since that adds a bit more security for the data. Please do not distribute the data. It is still very much raw data that needs to be evaluated and corrected before it will be released.


For a C

Your program should be able to load in all the data that was collected and correctly deal with ignoring the null values. The user should be able to give the program a similar datafile with a different number of rows and have it load in automatically.

The user should be able to rotate the visualization quickly in 3D using the mouse. This may mean using a low-rez version while the user is moving the mouse, and then switching to the high-rez version when the user stops. The user should be able to zoom in and out of the dataset (or scale the dataset if you prefer.) The user should be able to dynamically change the depth scale - the lake is very shallow compared to its length and width so it can be very helpful to independently scale the depth to see features more clearly.

There should be a GUI that allows the user to control various visualization parameters. The graphics should automatically update when the user changes the parameters on the GUI and not require the user to click a button to force the redraw.

The user should be able to choose which dataset to visualize from the GUI. The user should be able to alter the colour transfer function from the GUI, but the system should give the user a good starting colour transfer function (ie seeing the entire dataset as a giant blue blob is not good.) As with our talk on tables and graphs, dont just accept the defaults the computer gives you, pick appropriate defaults for what you are visualizing

Minimally your visualizations should include an appropriately sized coloured box at each data collection point.

The user should be able to display or hide a length, width, depth scale showing the size of the region


For a B

All of the above plus:

The user should be able to add and manipulate a slice to see a cross-section of the data

The user should be able to view the progress of the mapping mission as a 9th dataset.

For the currently selected dataset the user should be able to display up to 4 isosurfaces each one with a user selectable value (from the min to the max of that particular dataset), colour, and transparency.

To put the data into context, the user should be able to show or hide a correctly aligned plane at the surface of the lake showing a satellite photograph taken during the mission from the file Bonney-12-6-08.jpg **. To help you do this an annoted version of this photo shows the data collection locations as 12_18_08progress.jpg


For an A

All of the above plus:

To put the data even further into context the user should be able to turn on or off the assumed bathymetry of the site before the mission, given as a set of 8-bit greyscale depth values in west-1262by584.raw which is oddly enough of size 1262 by 584 where white is minimum depth and black is maximum depth.

The user should be able to show multiple visualizations of the 9 datasets at the same time through the GUI.

The user should be able to use the GUI to turn on volume rendering to display each of the datasets, and have control through the GUI over a colour transfer function that can set independent colours for up to 10 values.

Additional extras are welcome here - eg the ability to view the dataset and interface in side-by-side or quad-buffered stereo, can you interact with it on the multi-touch table, etc. As you play with different filters, which ones do think would be valuable here?



Once you have this working, take a look at the data with your own application. Do you see anything interesting? Are there any patterns that show up? Given that you have this visualization too, what interesting things can you find in the data using your tool? What features show up better with different types of visualization?



To submit your project you should create a web page containing a series of images showing all of these various features in action. These snapshots should have captions that explain clearly what is shown in each. The web page should also have links to all of the various source files that you used to complete the project (.tcl, .cxx, whatever.) This html file also works as your 'readme' file so be sure that it tells me everthing you think I need to know about your project. You can then email me the address of this webpage. Highlight interesting features you find in the datasets. Highlight comparisons of seeing the same thing in different ways using the different techniques. These web project pages also work really well as part of a portfolio when you are start looking for a job so a little extra effort on them now can help later on.

Remember to also send me a 320 x 240 jpg snapshot for the web. This should be named p2.<your name>.jpg

Each student will give a short demonstration of their program to the rest of the class. This allows everyone to see a variety of solutions to the problem, and a variety of implementations.



* This mission was funded by NASA Space Sciences grant NNX07AM88G

** This image was taken by the satellite Quickbird on December 6th.  The color resolution of the image is 2.4 and 60cm in the panchromatic (grayscale) band.  The image was processed by Paul Morin of the Antarctic Geospatial Information Center by pansharpening it or adding the color bands to the higher resolution grayscale band.


last revision 2/8/09