A3-YutaMorimoto
From CS294-10 Visualization Fa08
Earth Quake Locator
Contents |
Background
Comparing with other people, I have been accustomed to Earthquakes many times. Since, I had lived in Japan for 25 years. Japan sits on four tectonic plates and is well prepared against its frequent Earthquakes. Everyone lives in Japan needs to get into them. One of the largest them I had experienced recently occurred in June 2008. [1] I had experience everything around me rattling and some of them falling to the ground. As a result, some of them would be broken.
But, it was not the my first experience. As far as I can remember, I went through such danger earth quakes more than 5.0 magnitude(on the Richter Scale) over ten times. Of course, I can not count small Earthquakes occurring thousands of times.
Actually, I do not like Earthquake and hope it never happens. However, I know in California Earthquakes are occurring sometimes. So, I had better know about them, before they surprise and annoy me.
What I want to do
To clarify what I want to do, I placed questions at first.
- How many did Earthquakes occur for a specific period?
- Where & Where many did serious or danger Earthquakes occur?
- How much the Earthquake cause damage in the area?
To answer questions, I need a data base of Earthquake which includes information of Earthquake as follows
- Location : names of places, longitude and latitude
- Date : mm/dd/yyyy
- Magnitude : 1-9
- Damage : injuries, deaths etc
Now, I need to dataset including above features.
Dataset
To obtain a database of earth quake, I choose the two database
- Earthquake catalogs for Northern California[2] produced by the USGS and the Berkeley Seismological Lab.
- Global earthquake catalog[3] produced from contributions from ANSS/CNSS participants is also available.
First one is detail Earthquake database in Northern California. which includes a lot of information in California and second is in World. Unfortunately, during implementation I recognized that there are too many small Earthquakes occurred in anywhere. Including small Earthquakes causes so many plots on the map that I have to exclude small ones. However, the dataset just composed of large Earthquakes is too sparse, especially in California. As a result, I use the dataset of Earthquakes all over the world.
Design
To realize the motivation, I would like to implement the following features
- Map showing geographic distribution of Earthquake
- Filtering of Earthquakes by Date, Location or Area and Magnitude.
- Tooltip providing the Earthquake detail(Location, Date, Magnitude etc)
- Search the epicenter by text
Fortunately, The Northern California Earthquake Data Center already provides a selection of output maps, along with an Earthquake events. [4]
Earthquake catalog search and map
In the application, We can plot the Earthquakes on one of several different maps and receive a list of the events by selecting a map and defining the geographical extent of the search.
However, the web page needs text based query to make a map and has less interaction.
So, I would like to make more interactive and useful visualization.
Choice of Development environment
To do this assignment I decided to use Prefuse. The reason why I chose Prefuse was that I attended the flare tutorial in class and found that the visualization effects such as animation were well supported and useful for this assignment. Also, I found that Prefuse has a built in, SQL-like expression language for queries to data and creating derived data fields. Moreover, Prefuse allows me to use some widgets. So I believed that Prefuse allowed me to make a various visualizations I needed.
Moreover,I had no experience of using such toolkit in Java, much more had no experience of Java. So, this was a good chance to familiar with the language I did not know.
Implementation
At first, I did not understand the visualization process of Prefuse. However, as comparing demos in Prefuse, I figured it out what I should do was just tracing the process written in Prefuse introduction. [5] These processes are very straightforward after I understood. So, I was just doing the following process: making the datatable mapping into visualization, modeling visual properties such as shape,color etc in visualization and creating interactions with the visualization through mouse.
First,As I said,I needed to obtain datatable from source like SQL. Unfortunately, I fully did not understand ExpressionParser to write queries to prefuse data structures. So I used other data parser using regular expression.
Next, I created user interface controls like radiobox, checkbox and slider to specify filters. I think radio box giving user a choice between two things, so it is appropriate for choosing maps.
For a while I tried to apply slider to specify filter for Magnitude. Although, it were seemed useful function, it did not. Because, I needed to spend the time to specify detail Magnitude including decimal. Slider is needed to specify data by subtle change the position of slider , so I could not satisfy such time consuming interface.
Considering reflection of above, I thought slider was useful for discrete features in fixed range such as Date. So I used slider to specify Date. An outcome is live up to my expectation. Three sliders defining filter are more useful than I thought. I can find the Date of an Earthquake which I do not know by using slider.
Thus, This feature is useful to search the date of Earthquake I did not know. If I want to know certain date of an Earthquake, I just move slider casually so that the Earthquake can disappear or not. Then, I maintain the appearance of the circle and keep moving slider. This will gives me intuitive search for the date of Earthquake.
Moreover, I was just adding the filter for Magnitude as checkboxes so that I can limit the scale of Earthquakes. This function is useful remove certain scale Earthquakes we do not want to know.
Finally, I put radio button to change world map with axis. This feature eases user to know rough location of the Earthquakes.
Results
Initial window
Searching Earthquakes you want to know. If you want to know the Date of an Earthquake, then sliding slider casually and maintaining the appearance of the circle
As a result, you will find the Date very intuitive filtering. The following is an example of search result, which is 2004 Indian Ocean earthquake that occurred at 00:58:53 UTC on December 26. [6]
Description
Earthquake locator is an Java program using Prefuse toolkit. When it is opened, the user is greeted with a world map with many colorful and various size circles. Each circle represents a Earthquake and the center of the circle is epic center of the Earthquake.
Color and size of each circle represent Magnitude of the Earthquake. They represents the same thing so they are redundant. However, they allow us to facilitate in reading and distinguish other circles.
Detail information of the Earthquake is shown when the mouse cursor is passing over the circle. Then, tool tip displayed for Location and Magnitude.
The placement of the check boxes reflects the Magnitude. If a check box is checked, corresponding Earthquakes which are lesser than the labels will appear.
The application has radio button to realize the axis for map. If user want to know rough Latitude and Longitude, it will be helpful.
The dynamic controls for searching the date of Earthquake are on the bottom side of the window. There are three slider which represent the range of year, month or day respectively. Also, the values of the left and right side of each slider represents limit of the values corresponding slider respectively.
Commentary
I need to spend developing this application about four days. As I mentioned, I almost did not know about Java much more Prefuse. I needed to know about Java and its IDE Eclipse so that I had passed about 2 days to know the JAVA comparing other language. After learning Java roughly, I tried to develop the application with Prefuse.
I also spent a long time studying demos and learning the Prefuse Toolkit. However, once I understood the process of visualization for Prefuse. I found it was straightforward and the demos were very helpful to find out how to do similar things. Prefuse has data structures to store the data. It allows the me to interact with the data through widgets very implicityly. So, I try to take advantage of Prefuse's other interaction interfaces along with documentation. But I am not familiar with Java, so I was hard to read Java doc style manual. Finally I did not fulfill the implementation of other visual interaction that I wanted to implemented.
Understanding Java and adjusting visual feature and technique for the application took the most time.
In fact, I consumed time to learning Java. But I also noticed that I should have taken care of my initial questions and planed more detail interactive interfaces.
During implementation, I thought of why this interfaces is appropriate for answering the initial questions many times.
As a result, I needed to evolve interfaces over time and check whether the new ones were well or not.
This was so tedious work than I expected.
Next time, I had better make detail proposal before commit to code.
Download
Source files as zip[7]
Executable Jar as a zip[8] Executable Jar file which includes all of the library files I used along with our own code in the source code zip.
- Download the latest Java Runtime Environment(JRE) from: http://www.java.com/en/download/manual.jsp[9]
- Unzip the filelink title into a location of your choice
- Double-click Jar file to run)

