Skip to content

GSoC 2021: Final Report

Aryan Kenchappagol edited this page Aug 22, 2021 · 2 revisions

Implement 3D Scene Visualization Support using Potree and Integrate with MapMint

Google Summer of Code 2021

  • Student
    • Aryan Kenchappagol
  • Mentors
    • Sittichai Choosumrong
    • Fenoy Gerald
    • Venkatesh Raghavan
    • Rajat Shinde
    • Samuel Souk aloun
  • Organization
    • OSGeo
  • Developer Community
    • ZOO-Project

Abstract:

MapMint is a web-based Geographic Information System (GIS), which is designed to facilitate Spatial Data Infrastructure (SDI) deployment. In order to make use of the spatial information in an efficient and flexible way, the Spatial Data Infrastructure (SDI), geographic data, metadata, tools and the users are connected through a framework in an interactive manner. Users can build their own maps and web-applications as MapMint combines various different softwares in a complete and coherent web mapping platform. These web-services are built on top of the ZOO-Project.

The ZOO-project is a Web Processing Service (WPS) whose implementation is done using C, Python and JavaScript. The ZOO Project allows individuals and groups to create new and innovative web services and applications. It is very flexible in terms of data input and output so as to process any kind of data stored locally or accessed from databases and remote servers. Most importantly this excels in processing of data and integrates new or existing spatial data infrastructures as it communicates with web servers and can integrate web mapping clients. Speaking about MapMint, it allows various tasks related to the implementation of SDI from a modular and user friendly administration interface. Thus users can -

  • Import/Store and raster the GIS data
  • Compose and save maps in the form of projects
  • Configure and run a cartographic portal

Changes throughout the Project

  • MapMint Installation with Ansible Scripts: Created Pull Request on MapMint Ansible Roles to adapt change in the r-cran.yml file needed and which is necessary to access the MapMint instance. This PR is in accordance with the ever updating proxy versions of r-cran packages on this site: https://cran.r-project.org/src/contrib/. Earlier the python script update_r-cran_version.py ensured the automation of the newer version of e[0-9].tar.gz and classInt.tar.gz files.

  • Tested the installation on OSGeo Live 13 and Ubuntu 20.04 Operating Systems and created a documentation for the same. Link to setting up instance step by step with information on Prerequisites and commands to be followed.

  • Visualization of Models - imagery, terrain, 3D Buildings , point clouds, photogrammetry datatypes considered as assets, is done with Generalized Cesium API script with iON Dashboard. The supportive formats include but not limited to 3DTiles, glTF, IMAGERY, quantized-mesh, CZML datasets, KML, KMZ, GeoJSON and so on.

  • A much easier way with which MapMint instance can be accessed/setup on your machine is by pulling the official Docker Image from Docker Hub. This documentation enables users to follow the steps needed to achieve the same, including - setting up environment, pulling images from Docker Hub, cloning Repositories followed by Building the images pulled. This provides an easy mechanism for accessing the instance on the working OS relatively as compared to ansible scripts.

  • Switched to ThreeJS to implement Featured Demos presently which has four different dynamically loaded models. Locally these files don't load because of their dynamic content so a Live Server suits best for this purpose. These models are completely built on ThreeJS considering its efficiency in rendering 3D models of various types namely - glTF, obj along with mtl format for adding mesh and texture on these models to realistic view purposes. Here's the link to the source code to refer to. The video for the corresponding output can be accessed from here.

  • The What, How, Why for all the Featured Demos present; can be accessed from this documentation. The Related Link to be followed where the entire setting up of ThreeJS on which the models are developed can be found right from setting up the environment, importing modules, creating scene along with different parameters involved in the schema, etc.

  • Integrating with MapMint: Implemented a switcher tab after some tweaks inside the codebase and integrated the above necessary changes. This includes making changes to the Skeleton Files present inside templates directory. The skeleton files can be accessed from here.

  • Appended the necessary volumes under docker-compose.yml to store the above changes made inside the codebase. The visualize_bs.tmpl based on cheetah templating system and ZOO-Services includes the script for the same.

  • During the entire GSoC, I encountered multiple unexpected errors while setting up different development environments and writing code. Although stackoverflow and mentor discussion helped overcome the same I kept a track of resolved errors and their corresponding links in a google sheet of whose link can be accessed here.

MapMint before GSoC 2021

  • Capable of processing georeferenced imagery data. Its key highlights corresponding to this project includes the support to rendering GIS data with OpenLayersMap two dimensionally.

Future Opportunity:

  • What I see from The Template is that it needs to access the fetched data with a new volume created inside the docker-compose.yml file. The file should be integrated within the /var/www/html location.

Related Links:

Mailing List Reports