WebGL Globe
Simon Zwick, Suido Valli, Levani Kokhreidze
Overview
This project is about visualizing worldwide geographical data by projecting it onto a 3D-Globe. The aim is to represent the given data so that it can be easily understood and processed by users. To achieve this the project makes use of WebGL, Three.js and the base code of the Google Data Arts Team.
Additionally the visualization comes with a few possibilities of interaction: Users are able to switch between different datasets, each having its own graphical representation. It is also possible to zoom in and out of the scene and to rotate the globe.
The current model represents the increase/decrease of the worldwide population from 1990 - 2000 and from 2000 - 2010 by using gridded datasets. However it is possible to visualize almost any data, as long as it is given as a JSON file that contains lines of latitude/longitude and corresponding magnitudes.
Repository
https://github.com/lkokhreidze/cg-project
Final Report
As mentioned above, the goal of our project was the visualization of geographical data to enable users to process the data more easily. Inspired by one of the Computer Graphic practice sessions where we had a 3D-Globe, we chose to use such a globe to represent some global geographical data. For the implementation of our code we used WebGL and Three.js, mainly changing and extending the code of a project of the Google Data Arts Team.
The program starts with setting up the layout, as specified in the appropriate .css file. After that mesh objects are generated to represent the globe, the atmosphere and the loaded data (or rather the points defined by that data). Then the data from the given JSON file is added and therefrom the actual points are created, represented as pillars on the globe. Their position, size and colour is calculated accordingly to the given coordinates and magnitude of each value.
When choosing what kind of geographical data to visualize we had to consider following things:
- The data had to be available all around the world (or at least for the better part).
- Apart from the data itself we needed information about the corresponding latitude and longitude.
- The topic should be related to a somehow interesting and up to date issue.
After some research we decided to show the change of the world population between the years 1990 - 2000 and 2000 - 2010, since the growth of the world population is a global and current topic. The first difficulty appeared when we had a dataset in GeoTIFF format where we needed to extract data from, what appeared to be a lot harder than expected. But doing some more research we eventually found gridded datasets in .asc format, which suited us far more.
The next challenge was using those datasets to produce the JSON file we needed for our visualization. For that purpose we wrote a python script, allowing us to calculate the wanted values with the given data and writing them to the JSON file. Here the problem was linking the magnitudes with the corresponding latitude and longitude, so the values would appear at the correct location on the globe.
Due to the mentioned difficulties, we actually had to spend more time on data mining than graphics programming, but now everything should work as intended.