NASA Web WorldWind Multidimension Visualization Tool GSoC 2016

== Introduction ==
The idea behind this project is to create an application using Nasa Web World Wind to show metadata about environmental variables in more than three dimensions. The model I'd like to implement to present 3D data is a Voxel model. Each voxel has three dimensions that will be possible to customize with the interested metadata, but also more information can be shown thanks to Web World Wind capabilities. Coloring each Voxel might present another metadata and additionally creating an animation in time gives the opportunity to introduce a further variable. Users will be able to interact with the visualization, customizing the metadata on the Voxel and filtering data according to specific settings. As input data, I am considering telecommunication data from "Telecom Italia Big Data Challenge 2015". My idea is to create first the visualization environment and further import the data in a database to allow users to query the database for particular data. Moreover, depending on the time also would be interesting to allow users to import their data set in a specific format to share the view on a specific globe with other people.
== Schedule ==
Timeline 	TODO	Status
23 - 31 May 2016 	
* Voxel model implementation in Nasa WebWorldWind.	Done
1 – 10 June 2016 	
* Sample grid and data importing	Done
11 - 17 June 2016 	
* Sample visualization on voxel
* Multi dimensions on a single voxel	Done
18 – 25 June 2016 	
* Matching voxels with real data.
* Creating the first filtering functionalities	Done
26 June - 2 July 2016	
* Advanced filtering functionalities	Done
3 - 17 July 2016 	
* Time slider (4th dimension) implementation.	Done
18 – 31 July 2016 	
* Sample database implementation	Done
1 – 15 August 2016 	
* Importing of diverse datasets.	Done
16 – 23 August 2016 	
* User interface implementation
* Testing and documentation	Done
We will try to follow the schedule and report the status of the project each week.
== Weekly Reports ==
=== Week 1 ===
# What did you get done this week? This week I started working on the voxel model in NASA Web WorldWind and tried the best way to visualize the model. I set up also the coding environment, as well as the testing one I started also working on the grid importing.
# What do you plan on doing next week? Next week I will work on importing some data and on the visualization of them using the voxel model I created.
# Are you blocked on anything? Currently, I am not blocked on anything, although I had several difficulties on setting some environments, I solved that thanks to my tutor, Jakub, who helped me to solve my problems.
=== Week 2 ===
# What did you get done this week?This week I’ve been working on the implementation of the voxel model, visualizing it into a grid. I imported the grid from a dataset and associated the voxels to the grid entries. I managed to show many voxels in the same time and interact with them from the interface. 
# What do you plan on doing next week? Next Week I will work on the filtering functionalities to filter many voxels on the globe thanks to several options. 
# Are you blocked on anything? Currently I’m not blocked on anything, and my Tutor helped me to solve all my problems that I was facing. I had some issues about using the testing environment Karma, but I succeeded to implement it correctly.
=== Week 3 ===
# What did you get done this week?This week I created some filter functionalities based on the latitude and longitude to show only some portion of voxels. I also started working on the altitude filter to reduce the layers of visible doxels when visualizing more than one. 
# What do you plan on doing next week? Next Week I will continue working on the filtering for altitude and values. 
# Are you blocked on anything? I'm not blocked but I had several difficulties to let the filters work together and to obtain good performances when using them. Luckily I managed to solve all my problems during the week.
=== Week 4 ===
# What did you get done this week?This week I finished all the filters for the Voxels. I worked also on a first implementation of the slider to navigate through the time 
# What do you plan on doing next week? Next Week I will finish the time slider to let it work with all the filters. Maybe I will try to import other kinds of data in the application. 
# Are you blocked on anything? Right now I am not blocked on anything
=== Week 5 ===
# What did you get done this week?This week I worked on the time slider, which is a slider showing how a variable is evolving in time (or with respect to another variable, like the bands for multidimensional band files). I let this slider work with the filters I implemented in the previous week and test with some dataset. I managed to import few sample of telecommunication data from a dataset. 
# What do you plan on doing next week? Next Week I will allow the importing of different kind of data not following the grid model of the current dataset, especially point features data. In this way, I hope to show using the voxel model any possible dataset made by single georeference points. 
# Are you blocked on anything? Right now I am not blocked on anything
=== Week 6 ===
# What did you get done this week?This week I managed to import several datasets containing point features data, thus having: latitude, longitude, and some values. I generated a QuadTree from the dataset, so that the data could be displayed using the voxel model. I tried using several datasets with different configurations and all of them worked properly. I also improved the importing system so that users can specify the structure of the dataset they want to import. I started also documenting all the code, in this way the future user will be able to re-use it easily.
# What do you plan on doing next week? Next Week I will continue working on the documentation and I will try to allow users to show other variables using an extrusion of the voxels. 
# Are you blocked on anything? Right now I am not blocked on anything
=== Week 7 ===
# What did you get done this week?This Week I continued working on the documentation, which is almost done. I also finished the extrusion model, to show two variables of a dataset in the same time, one with the color and one thanks to the extrusion of the doxel. I also created a connection to an external Rasdaman database to query some data thanks to the WCPS.
# What do you plan on doing next week? Next Week I will finish the documentation and I will create some demos to show users how to interact with the application with some predefined settings. 
# Are you blocked on anything? Right now I am not blocked on anything
=== Week 8 ===
# What did you get done this week?This Week I worked more on documenting the code. Moreover, I created some demo with few sample datasets, in order to give the users the possibility to test easily the application.
# What do you plan on doing next week? Next Week I will work more on the performances of the importing and processing system, trying to optimize the code. If I will manage to do that I will also edit the importing interface to customize the importing of other datasets. 
# Are you blocked on anything? Right now I am not blocked on anything
=== Week 9 ===
# What did you get done this week?This Week I created some Web Workers to import the data, in order to not lock the user interface during the importing of the data. I tried working more on the performances for the importing system but still I didn't finish it.
# What do you plan on doing next week? Next Week I will continue working on some performances issues. 
# Are you blocked on anything? Right now I am not blocked on anything, but I'm trying to figure out the best way to solve this issue on the importing system.
=== Week 10 ===
# What did you get done this week?This Week I didn't have too much time, I did some researches to find the best approach to render multiple instances in the Web WorldWind globe. I also split some functionalities, using the Promises, in order to avoid blocking the user interface.
# What do you plan on doing next week? Next Week I will read more about the rendering engine in WebGL and I will provide more examples to run the application. 
# Are you blocked on anything? Right now I am not blocked on anything.
=== Week 11 ===
# What did you get done this week?This Week I created some more demo examples to run the application. I also started creating a web page to show the project and explain the functionalities. I included also some documentation for users approaching the application for the first time.
# What do you plan on doing next week? Next Week I will finish this simple web page and I will edit the user interface to be more user-friendly. 
# Are you blocked on anything? Right now I am not blocked on anything.
=== Week 12 ===
Brief description of the idea: My project consists in the development of a Web Application, using the NASA Web WorldWind framework, to create a tool capable of visualize multidimensional datasets in more than three dimensions.
The state of the project as it was BEFORE your GSoC: There was not a similar project before developed with NASA Web WorldWind. Thus, my project is an implementation of a new application using the mentioned framework.
The addition that your project brought to the software: Thanks to my project is now possible to visualize using different models, multidimensional datasets in a 3D environment. 
A link to all my commits is available here: GitHub. 
== State of the art before this project ==
Currently, there are no 4D visualization tools using voxel models relying on pure javascript application like Nasa Web World Wind, although some examples are available for other platforms.
== Additions that this project will bring to the software ==
With the application I will create, many users would be able to reuse the code adapting it to other projects for their needs. Since the application consists in many subparts, many demos can be created to be shown the usage of some tools on the Web World Wind Examples page in the website. 
== Public Repository & Testing==
The application is available in GitHub at MuViAS GitHub , it runs on every modern browser.
To try the application is necessary to:
# Download all the files
# Run a web server and open the index.html
# Now several options are available, to test some demo examples, select from the drop-down menu Demo Examples and select one
# Set all the settings required and press Start
It is also possible to test the online version browsing to MuViAS, opening the demo and following the instruction.
== Student's Biography ==
My name is Gabriele Prestifilippo, and I am currently a student in the M.Sc. in Computer Science and Engineering at Politecnico di Milano. I am interested in the Information Technology field applied to the geomatic and environmental one.
I am now working in the GSoC and my mentors are: from Patrick Hogan, project manager of the NASA World Wind project, and Jakub Balhar, software Engineer at Gisat.
Besides the GSoC, I am helping the team of NASA Web WorldWind, along with ESA and Thales to test and develop the Web WorldWind framework.
Category:Google Summer of Code