Major Report on

NSW Weather Data Visualisation


Report Written by Ian Young

 
Group Members:    Luke Macpherson (9821342)
                             Ian Young            (9823441)






Description of the data:


Own major project was to visualise weather data that is of the state of NSW.  The given data included many different types of data such as land & surface data, humidity levels, wind vectors, and temperature. The variables in the system, such as humidity and wind, varied over time and the data was taken over 1 whole day.  Each reading was taken at hourly intervals throughout the day, to end up with 24 sets of data.

Surface:
The surface that was given in the file 'xyz.dat' is a 2.5D surface of a 114*77 array of data points which made up the land and sea of NSW. All of this data was kept in the one file, as for each time step this data is constant.

Humidity:
The relative humdity levels were kept in the files 'rh.dat' and each file held a data array of size 114*77*7. This file held all of the humidity levels at all 7 levels for each hour. Each of the 7 levels of readings had the all data points in-line, just at a different z component. Although, the z compentents were not spread out evenly across the sky, as they took readings spread out in the lower atmosphere, and closer readings higher in the atmosphere. It turned out that the readings were taken as shown below:

Also the values at each point were a percentage, and therefore were values between 0 and 1.

Wind Vectors
The wind vectors were held in the 'vel.dat' file, which had an array of vectors of size 114*77*7. All the data for each time step was kept in the single file, and had a total of 7 levels of readings equally spaced apart. All the points on each level were common with all the other 7 layers. This gave the direction of the wind at each point and the magnitude of the wind.

For Each Point there were an x, y and z components, but the z component was constant for all vectors.
 
 

Temperature
The temperature at each point on the surface was held in the file 'temp.dat'. This file was similar to the rest, by all the data for each time step being held in the one file. The difference was that there was only one layer of data of size 114*77. This layer was directly related to the surface, and therefore for each point on the surface there was a corresponding temperature for each time step.
 
 
 


Original Field Files


The original files given to us included an OpenDX network which should have loaded the files in. After some testing with OpenDX it was found to be too difficult to attempt to continue using OpenDX, as it would take around a week just to get used to differences between OpenDX and AVS. Since time was shorter than anticipated we decided it would be more practical to load all the data files into AVS and visualise, as we already have a good understanding of AVS.

It became an obstacle to actually load the data files into AVS as we had little information on what structure of data file was, and how to load it in. The only information that was available was the field files used by OpenDX. Sadly the format used by OpenDX field files differs greatly to AVS field files. Here is a small exert from an OpenDX field file:

object 1 class array type float rank 1 shape 3 items     61446
binary data file xyz.dat,         4
attribute  "dep" string "positions"
#
object 2 class gridconnections counts   7  77 114
#
object 3 class array type float rank 0 items     61446
binary data file velx.dat,         2212132
attribute "dep" string "positions"
As you can see it is not obvious what each of the parameters mean. To convert the file, some documentation on OpenDX was required, and even then the differences between AVS and OpenDX emerged.

For each time step of the weather data, a separate field file had to be created, as you can only work with one time step at once. So A series of field files were created for the relative humidity, wind vectors, and also temperature. The surface only required the one field file since each time step used exactally the same surface data.

Eventually the relative humidity file had been loaded in correctly, as you could look at each of the values and they were between 0 and 1. This showed that it was reading in the values correctly and that the bit alignment was correct. When trying to visualise the data there were also slight offset errors which needed to be corrected. Once the relative humidity data had shown to be loaded in correctly, loading the rest of the files became fairly straight forward.
 
 



 

Creating a Visualisation in AVS:


Creating the Surface of NSW
The first thing to do would be create to the actual land of NSW by using all the coordinates read from 'xyz.dat'. These points plot a 114*77 2.5D contour of the land of NSW.

The initial surface was created by using the 'read field' to read all the coordinates, and then feeding the field into the 'field to mesh'.  This is the initial creation of the simple colourless land.  From here the mesh is fed into 'colourize geometry' which also takes in a colour method.  The way the surface was initially coloured was by height,  but was soon changed to temperature as describe below.
 

Colouring the Surface of NSW
The next thing to do was the colouring of the surface. This was initially done by using the height as the colour, and this seemed perfectly obvious that this meant height.  A problem arose when other people had seen a simple animation as they had automatically assumed that a red area on the surface meant a hot area, and blue areas meant cold.

The outcome of this problem was simply to keep with everyones in-built ideas of red being hot and blue meaning cold, by colouring by temperature.  This change was fairly simple but could have easily been overlooked, and created ambiguity in out visualisation.

To make to sureface coloured by temperature requires it to vary with each time frame.  As shown to the right, this required the use of an 'animate  filename' module which would change file with each time unit, and therefore temperature would vary slowly modify with each frame.  The temperature field is then fed into the 'colour range' and 'colourize' module, to finially apply the temperature to the surface.

The final thing to do would be to pipe the resultant image into the 'geometry viewer' which is just out of view in the given image.
 

Creating the Clouds
The next part was to add the clouds to the visualisation.  To create the clouds required the relative humidity data to work out where the humid areas were.  All the humidity levels at each point could be used to create a isosurface through the humidity space at a certain level.

Firstly, an 'animate filename' module was used to go through all the files which had each frame of humidity.  Each frame was then read by the 'read field' module, and then each point was multiplied by 1000 to make selecting the correct level for the isosurface easier and more accurate.  This created a blanket over the parts of NSW with the highest levels of humidity, in turn creating artificial clouds.

To make each frame look a little more realistic, a certain degree of transperancy to the clouds.  This was done by changing the transperancy setting in the 'geometry viewer'.

Creating the Wind Arrows
To create the arrows to represent the wind, require the use of the 'hedgehog' module.  This module takes in a field, and at each 3 dimensional data point , it places an arrow there using the vector data from the wind data files.  Again this data varies over time and therfore loads in a  new field file for each frame.

If we were to view absolutely every data vector for a single frame on the screen, You would not be able to see anything else apart from thousands of arrows.  To solve this, a 'downsize' was used, and therefore we had a total of 19*13*2 arrows on the screen.  The arrows no longer cluttered up the screen, and stopped distracting from all the other information in the visualisation.

The arrows are also coloured by the magnitude of the vector. Therefore the arrows actually use two methods to bring across the idea of wind stregth. This was done as the colourless arrows did not give the idea of strong current in different regions, and it only seemed to show the direction of the wind

The Resultant Network
Here is to final network all put together, and you can see how it all works together to create the visualisation.




The Final Visualisation:


*** Click here to watch the visualisation ***