Introduction
In this year’s Google Summer of Code program, I developed a module called terrainTools. This project is based on the 52°North Triturus library, which is extremely powerful and provides a lot of functionalities in the field of 3D geovisualization.
Most terrain based visualization applications in today’s world have different file formats that are difficult to export. In order to solve that problem, we have created terrainTools. Here, all visualization algorithms can be accessed from a web browser and can be shared seamlessly using Google’s services. This project is one of the few cloud based solutions to visualize terrain datasets with a three-dimensional viewpoint.
In this project, I demonstrate how Triturus can be used in day to day terrain applications. Using terrainTools, we can create elevation grids, visualize flooding applications, generate cross-section for a terrain and even calculate difference models!
Let’s get started!
Implementation
Google API
As I mentioned, in my earlier blog post, one of the most important features of our project is the deep integration with Google’s API. I have used two API’s in the context of our project – Google Drive API and Google Picker API.
Authentication
Remembering different application passwords is always a pain. So from the start, I wanted a seamless and a simple way to login. We chose Google OAuth to solve the problem. Users should have a Google account to access terrainTools’ algorithms.
Google Drive API
Direct access to files created using the 52°North terrainTools application is possible via Google Drive accounts. A folder titled ‘52n-terraintools’ provides the Project Directories, Elevation Grids, Point Sets, and Flooding Descriptions.
Google Picker API
The Google Picker API provides the same Google Drive User Experience. Files created earlier can also be accessed right from the application itself!
Server Management
Heroku enables worldwide access our cloud-based application https://terraintools.herokuapp.com. Please note that only https works currently. The website has been created with Bootstrap to conform with modern design requirements.
Installation/Deployment Hints
Since terrainTools is a Maven repository, simply download the sources and execute `mvn clean install`. We recommend running terrainTools with Apache Tomcat 8 and Java 8. All algorithms can be accessed from index.html. However, if you plan on extending the API, the service specification can be found here. Also, take a look at our WIKI page for further details.
Features and Usecases
X3DOM is an open source framework and runtime for 3D graphics on the Web. As a result of my experience from last year’s WorldViz project, I knew that X3DOM was the way to go.
Flooding
Once a user has signed in and uploaded a pointset, the visualizations can be accessed from the Google Drive.
Here is an example of a visualization that I’ve created using the Triturus framework. A pointset represented by its XYZ coordinates has been processed through Gridding Algorithms and has been visualized.
If you look at the the image closely, there is a yellow sphere. A user is able to pick a point and specify a relative/absolute flooding situation on the visualized terrain. For example, if I picked (19,20) on the terrain above using the yellow sphere, and specified a relative flooding situation of 5 meters, then flooding can be visualized as below.
Here is another example, with a different grid picked and flooding situation.
Cross-Section Generation
Let’s say a user would like to generate the horizontal cross-section for few of the points on a visualized terrain surface. How does he go about it? No need to worry! The terrainTools module has included it! Red coloured spheres appear on the surface, by double-clicking the terrain. Here is an example, below.
Once executed, the cross-section visualization should look like this!
Pretty cool, huh? 😀
Difference Calculation
With the Triturus module, it is also possible to calculate the difference between terrains. For example, the difference between the flooded terrain and the normal terrain can be visualized as below.
What’s left?
During the summer, we wanted to perform Inclination Analysis. Soon we will have a solution! Another interesting topic is the support of Triangulated Irregular Networks.
So, what is Adhitya going to do now?
He is going to continue working on this project. Who doesn’t want to do such interesting stuff? A research paper on this topic is also is the pipeline.
Remarks
I had lots of fun working on this project and the learning curve has been excellent. I’ve been extremely lucky to have worked with two excellent mentors. Both of them are really responsive and give appropriate solutions. That’s two years now!
Leave a Reply