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.
- Conductivity
(S/m)
- Temperature
(C )
- CDOM (ru)
- Chl-a (ru)
- REDOX (meV)
- PAR
(umol/m^2*s^1)
- pH
- Turbidity
(ru)
The next 3 give
information about the scanning process.
- Scan number
- mm/dd/yyyy
- hh:mm:ss
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