GSoC'21 Integrating 3D scene builder as WPS services within MapMint administration User Interface

Introduction
MapMint is a geographic information system (GIS) software on the Internet designed to facilitate the deployment of spatial data infrastructures (SDI). MapMint is for individuals and organizations wishing to manage and optimize SDI establishment and deployment of dynamic mapping applications. The application centralizes and simplifies a number of GIS and WebGIS functionality. The different levels of user rights divide tasks according to the public (system administrators, GIS specialists, GIS technicians, cartographers, webmasters etc). The SDI comprises users, tools (MapMint web software and MapMint4ME Android app) and the data (currently, images and location ) recorded by the users. MapMint4ME is an Android app for MapMint web-service which is built on top of the ZOO-Project. The ZOO-Project is an SDI manager which gives the users the capability of building their own map and web applications using Mapserver as the  Open Geospatial Consortium (OGC) services engine. MapMint allows multiple tasks relating to the implementation of an SDI from a modular and user-friendly administration interface. The user can use MapMint, according to his rights:
 * Import and store vector and raster GIS data
 * Query database server and WMS / WFS external
 * Publish geographic data in the form of WMS, WFS and WMTS
 * Treat, edit and Data Sources style
 * Compose and save maps in the form of projects (map files)
 * Configure and generate mapping applications
 * Configure and run a cartographic portal
 * Visualize and share maps

Project proposal
My proposal for GSoC 2021 can be found at: [Proposal].

Abstract
At present the user can only visualize the 2D datasets and can even generate one of them. So, my major approach in this project would be to create an user interface as WPS service within MapMint such that the user cannot only visualize the 3D dataset but can also build the same. This can be done either through either simply capturing via camera or importing drone captured images. Further I am planning to integrate the various functionality as a toolbox to process the 3D datasets and 2D datasets as well. If time permits the various additional functionality such as enhancement, smoothing, sharpening, brightness control will also be implemented.

Link to Github repository: [Link]

17th May - 7th June
Community bonding period: What I have done during this period?
 * Introduced myself over the channel and shared my proposal over mailing list for suggestions
 * Joined MapMint Slack Workspace created by mentors which we will be used as a mode of communication over the GSoC 2021 period
 * Mentors setup initial video call for primary discussion and explained me about my tasks during Community Bonding Period
 * Created a wiki page for the project "Integrating 3D scene builder as WPS services within MapMint administration User Interface"
 * Updated wiki User page and added my personal information [Link]
 * Updated links on the wiki Google_Summer_of_Code_2021_Accepted page [Link]
 * Discussed with the mentors their expectations over the GSoC 2021 project period
 * Setting up MapMint Developing Environment on my personal system
 * Gone through documentation for MapMint web application
 * Gone through the working of the application user interface and code
 * Analyzed structure of MapMint web application and understand it thoroughly

7th June - 12th July
Coding Phase-1 :

 Week 1 : 7th June - 13th June 
 * Discussed with mentors regarding WPS UI and how to set it up on the MapMint web application.
 * Designed an user interface for loading images from folder and also capturing images via camera with several other functionality.
 * Read several publications regarding Structure From Motion.
 * Wrote code for feature extraction from multiple images and matching them.

 Week 2 : 14th June - 20th June 
 * Wrote code to generate 3D point cloud using a set of images.
 * Applied Multiple Filters to filter out outliers.
 * Extracted the 3D point cloud generated file(sample.ply) from 85 sets of images and visualized it using meshlab.

 Week 3 : 21th June - 27th June 
 * Integrated the generation and visualization of multiple format 3D point cloud file in the UI.
 * Applied some more advanced algorithm to remove noise from the generated 3D point clouds
 * Integrated camera setup for taking live images and videos and convert them into point clouds

 Week 4 : 28th June - 4th July 
 * Wrote code to convert point cloud (.ply) to mesh (.stl) file and visualize using o3d.
 * Read OGC standards for WPS services and their basic requests and response.
 * Read workshop 2017 post for creating zoo-services.
 * Started creating simple web service based UI for setting up various WPS services.

 Week 5 : 5th July - 11th July 
 * Created a web service based UI using Flask and added some functionality to it.
 * Added Point cloud generation and visualization(using Three.js) to the UI.
 * Initiated setting up Potree Visualization in the UI.

 Week 6 : 12th July - 18th July 
 * Resolved some existing errors in the UI.
 * Completed Potree visualization setup.
 * Working on setup instructed by mentors during meeting.
 * Working on ZOO-Project configuration needed to create zoo-services.

 Week 7 : 19th July - 25th July 
 * Created Sample getCapapbilities and describeService request using python modules for WPS services
 * Exploring more about Cheetah Template and their syntax
 * Creating a sample template to redirect to 3D point cloud UI or load UI

 Week 8 : 26th July - 1st August 
 * Created a template for UI and added the volume to the mapmint container
 * Exploring and understanding the mapmint-ui code to create a widget on main UI

 Week 9 : 2nd August - 8th August 
 * Created WPS service to run all the python script for Point Cloud Generation
 * Working on storing the input and output data in database

 Week 10 : 9th August - 15th August 
 * Added 3D Point Cloud scene builder as a widget to the Mapmint Dashboard
 * Cleaned up the code and added comments in the code
 * Working on Documenting the work that i have completed till now and it's future aspects

Student's Biography
My name is Sandeep Saurav. I am a Electronics and Communication Engineering graduate from Maharaja Agrasen Institute of Technology, Delhi with CPI of 8.68, pursuing my Master's degree in Geoinformatics and Natural Resources Engineering under Centre of Studies in Resources Engineering, Indian Institute of Technology Bombay, Mumbai, India. Some more information about me can be obtained by following the link: [Link]

Mentors

 * Fenoy Gerald Fenoy Gerald
 * Venkatesh Raghavan Venkatesh Raghavan
 * Rajat Shinde Rajat Shinde
 * Sittichai Choosumrong Sittichai Choosumrong
 * Samuel Souk Aoun