Project 3, CS 526: Allan Spale (aspale@evl.uic.edu)

 

Background

This program was written using Python 2.1, VTK 4.2, and Tkinter (a Python module that supports GUI widgets) and allows a user to visualize predefined datasets of the Visible Woman.  The files for the project are simply project3.py in addition to having a data named directory with the appropriately named text files and a maps directory with the appropriately named files.  These directories should be at the same level as project3.py.  To run the program, type the following: python project3.py.  Since Python is an interpreted language, there is no need to compile; although there is an ability to compile a Python script to decrease the startup time.  The program meets most of the basic requirements for displaying the requested visualizations.  Some additional functionality was provided which will be described in the next section.

 

 

Sources

The sources of information used to create this code include the following:

·        Python in a Nutshell, ISBN 0596001886 (used source as guideline to construct GUI classes)

·        VTK Book, ISBN 1930934076

·        Websites

o       An Introduction to Tkinter

o       VTK Docs

o       Python Docs

·        VTK Tk/Tcl example code

·        Recommendations and suggestions of other classmates

 

 

Usage

The default data that appears is air temperature data for 11/1/2003.  All of the files are hard-coded and need to be found in specified directories (namely data for the weather data files and maps for the map data files).  To change the visualization, simply choose from the menu named Data.  There are five types of data: Air Temperature, 4” Soil Temperature, Humidity, Precipitation, and Wind (includes direction and speed).  Dates can be changed within the range of November using the Date Picker dialog box.  Because it was not as straightforward as it seemed to make a fully functional modal dialog window and to keep the data persistent, the dialog windows appear as soon as the program begins.  This dialog is accessible via the menu or the task bar, but it may not be closed at any time lest that dialog box not appear again.  Unlike the previous assignment, any menu selection or date change will result in the rendering window being updated immediately.  The downside to this is that the changeover between data visualizations is slow.

 

Some problems include the following.  An attempt was made to try to get the cities to appear as text actors with the appropriate data for a visualization.  Unfortunately, only one city worked, but it gives an idea how this would appear if all cities worked.  Additionally, there may be a clipping problem that occurs after some combination of visualizations (although I am not sure at this time how to reproduce this error).  I recommend zooming into the map initially so that this problem may go away (this seems to work…not sure why).  If switching between data visualizations does cause clipping to occur, zoom out and rotate around the y-axis until the map reappears.

 

Maps used in this assignment were adapted from the following sources:

County map: http://www.censusfinder.com/mapil.htm

State border map: http://www.sws.uiuc.edu/warm/icnstationmap.asp

Road map: http://www.mrcusa.com/page4.htm

 

The menus are used in the following manner:

·        File --> Exit: Since the file is “hard coded”, the only option here is to quit the program.  To quit the program, either close the “main window” (i.e. the one with the menu) or select Exit.

 

·        Data --> 4” Soil Temperature: This is a colormap that displays the data for the average 4” soil temperature for a particular date.  The color for the lowest temperature is purple, and the hottest temperature is red.The data was normalized according to the date’s min and max values.

 

·        Data --> Air Temperature: This is a colormap that displays the data for the average air temperature for a particular date.  The color for the lowest temperature is purple, and the hottest temperature is red.  The data was normalized according to the date’s min and max values.

 

·        Data --> Humidity: This visualization displays spherical glyphs that represent the data for the average relative humidity for a particular date.  The glyphs are evenly spaced.  The spheres were chosen so as to create the effect of a cloud.  The sphere is smaller and more opaque at lower humidities and larger and more transparent at higher humidities.  They are all the same color regardless of value.  The data was normalized according to the date’s min and max values.

 

·        Data --> Precipitation: This visualization displays “cube” glyphs that represent the data for the total precipitation for a particular date.  The glyphs are evenly spaced.  The cubes were chosen so as to create the effect of an elevation map.  The cube is smaller and closer to magenta at lower precipitation totals and taller and more green at higher precipitation totals.  The opaqueness of each glyph is the same regardless of value.  The data was normalized according to the date’s min and max values.

 

·        Data --> Wind: This is a colormap and glyph visualization that displays the data for the average wind direction and speed for a particular date.  The colormap represents the speed of the wind, while the glyphs represent the speed of the wind.  The direction of the wind is assumed to be from the S at 0 degrees.  This idea was directly mapped to the HSV color wheel on page 39 of the VTK text.  As a result, S is red, north is cyan, west is bluish magenta, and east is yellowish green.  The sphere glyphs represent speed.  The dark, opaque, small glyphs are low wind speed, while the large, less opaque, large glyphs are higher wind speeds.  The data was normalized only according to the date’s min and max wind speed while the directional data was not.

 

Design

There is a class that takes care of all of the rendering.  In the constructor part of this class, all of the visualization pipeline parts are created.  Objects mapped to the renderer are usually done in a way appropriate for the visualization.  Below is the contruction of the pipelines:

 

City Labels

vtkVectorText -> vtkPolyDataMapper -> vtkFollower

 

Maps

vtkJPEGReader -> vtkDatasetMapper -> vtkActor

 

Data

vtkPoints, vtkFloatArray -> vtkPolyData -> vtkShepardMethod

 

Colormap

vtkCubeSource OR vtkSphereSource -> vtkGlyph3D

<data pipeline> -> vtkMaskPoints (used value of 40) -> vtkGlyph3D

vtkGlyph3D, vtkLookupTable -> vtkPolyDataMapper -> vtkActor

 

 

Images (not to scale)

Opening screenshot

 

Date picker dialog

Air temperature for 11/1/2003 using counties map

 

4” soil temperature for 11/1/2003 using counties map

 

Humidity for 11/1/2003 using counties map

 

Precipitation for 11/1/2003 using counties map

 

Wind speed and direction for 11/1/2003 using counties map

 

Air temperature for 11/1/2003 using state border map

 

Air temperature for 11/1/2003 using road map