For
the
first
visualization
project
you
will be looking at earthquake hypocenter data.
If you took 491 (424) last term then you looked at this data in 2D.
Here we will look at it in 3D so the user will be able to see the
magnitude of the quakes and their location under the surface of the
Earth.
The data we will
use in this project comes from the US Geological Survey's Global
Earthquake Search site at
http://earthquake.usgs.gov/earthquakes/eqarchives/epic/epic_global.php
If you ask for
spreadsheet format data from the USGS/NEIC (PDE) from 1973 to present
you will get a 30 megabyte comma separated list of quakes that starts
with:
Year, Month,
Day, Time(hhmmss.mm) UTC, Latitude, Longitude, Magnitude, Depth
1973,01,01,034609.80, -9.21, 150.63,5.3, 41
1973,01,01,052229.80,-15.01,-173.96,5.0, 33
1973,01,01,092857.20,-22.16, -65.79,4.8,205
There are over
620,000 earthquakes in this file but some do not have a magnitude so
you should filter out all of the lines that are not complete. This
should leave you with about 500,000 lines of data.
You will use vtk
in connection with a user interface toolkit of your choice to implement
the project. You will need to be able to show this app in the classroom
so be sure you have it running on an appropriate machine.
The application
you develop should help the user investigate questions about
earthquakes so you shouldn't be thinking of the application as the end
product but as a means to get to the end product, which is knowledge,
so its important that ypour application be easy to use and produce
visualizations that are easy to understand. One of the requirements to
get an A is to use your tool to find some interesting things in the
dataset.
You can store
the data in any way you prefer that gives you sufficient performance
AND is sufficiently portable that andy can easily make your application
run on his hardware. Databases are fine, on line storage is fine, flat
files are fine.
You may want to
also look into some map conversion algorithms since you have data in
latitude and longitude.
For a C you should
- let the user conveniently choose from 10 'interesting' areas on
the planet and a magnitude and show the 3d position of the earthquakes
of that magnitude in that area
- show different magnitudes of earthquakes differently (size,
colour, etc) and have a legend that explains this to the user
- let the user show or hide the surface (shown as wireframe, or a
map, or a satellite view) to give context
- clearly label the depth range
- let the user quickly and easily rotate the 3d scene and zoom in
and out to get a better view of the data with their mouse (trackpad,
etc)
- create a responsive user interface and the visualization that are
not ugly
- pick an appropriate well labelled depth scale to show interesting
features in the data (ie you should be able to see the subduction zones)
For a B in addition you should
- inlude the entire planet as an 11th interesting area (this could
be a globe or a flat map)
- let the user play back the earthquakes over the given area
showing the current year and letting user alter the playback speed
- let the user pick a set of magnitudes to view
- let the user vary the depth scaling
For an A in addition you should
- let the user limit the range of playback a particular range of
years / dates
- let the user interactively shuffle back and forth through time
(as with a video playing app)
- show multiple quake regions at same time (either in same window
or spearate windows) which are linked for playback
- document several interesting things (which will very likely be
related to plate techtonics)
You might also want to investigate writing an application that runs in
3D (the easy way being to do a left and right stereo pair where you
duplicate the user interface but slightly offset the cameras in the two
3D views) as this data looks very nice that way.