Difference between revisions of "GSoC'21 Integrating 3D scene builder as WPS services within MapMint administration User Interface"

From OSGeo
Jump to navigation Jump to search
Line 1: Line 1:
 
== Introduction ==
 
== Introduction ==
 
=== Introduction ===
 
=== 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.
+
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 several 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:
 
The user can use MapMint, according to his rights:
 
* Import and store vector and raster GIS data
 
* Import and store vector and raster GIS data
 
* Query database server and WMS / WFS external
 
* Query database server and WMS / WFS external
* Publish geographic data in the form of WMS, WFS and WMTS
+
* Publish geographic data in the form of WMS, WFS, and WMTS
* Treat, edit and Data Sources style
+
* Treat, edit, and Data Sources style
 
* Compose and save maps in the form of projects (map files)
 
* Compose and save maps in the form of projects (map files)
 
* Configure and generate mapping applications
 
* Configure and generate mapping applications
Line 16: Line 16:
  
 
=== Abstract ===
 
=== 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.  
+
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 a user interface as a 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 by either simply capturing via camera or importing drone-captured images. Further, I am planning to integrate the various functions 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.
 
If time permits the various additional functionality such as enhancement, smoothing, sharpening, brightness control will also be implemented.
  
Line 22: Line 22:
  
 
== Timeline ==
 
== Timeline ==
 
 
  
 
=== 17th May - 7th June ===
 
=== 17th May - 7th June ===
 
'''Community bonding period''':
 
'''Community bonding period''':
 
'''What I have done during this period?'''
 
'''What I have done during this period?'''
* Introduced myself over the channel and shared my proposal over mailing list for suggestions  
+
* Introduced myself over the channel and shared my proposal over the 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
 
* 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
+
* Mentors set up initial video call for primary discussion and explained to 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"  
 
* 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 [[https://wiki.osgeo.org/wiki/User:SandeepSaurav Link]]
 
* Updated wiki User page and added my personal information [[https://wiki.osgeo.org/wiki/User:SandeepSaurav Link]]
Line 36: Line 34:
 
* Discussed with the mentors their expectations over the GSoC 2021 project period
 
* Discussed with the mentors their expectations over the GSoC 2021 project period
 
* Setting up MapMint Developing Environment on my personal system
 
* Setting up MapMint Developing Environment on my personal system
* Gone through documentation for MapMint web application
+
* Gone through the documentation for MapMint web application
 
* Gone through the working of the application user interface and code
 
* Gone through the working of the application user interface and code
 
* Analyzed structure of MapMint web application and understand it thoroughly
 
* Analyzed structure of MapMint web application and understand it thoroughly
  
=== 7th June - 12th July ===
+
''' 7th June - 12th July '''
'''Coding Phase-1 :'''
+
=== Coding Phase-1 ===
  
''' Week 1 : 7th June - 13th June '''
+
==== Week 1 (7th June - 13th June) ====
 
* Discussed with mentors regarding WPS UI and how to set it up on the MapMint web application.
 
* 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.
+
* Designed a user interface for loading images from a folder and also capturing images via camera with several other functionalities.
 
* Read several publications regarding Structure From Motion.
 
* Read several publications regarding Structure From Motion.
 
* Wrote code for feature extraction from multiple images and matching them.
 
* Wrote code for feature extraction from multiple images and matching them.
  
''' Week 2 : 14th June - 20th June '''
+
==== Week 2 (14th June - 20th June) ====
 
* Wrote code to generate 3D point cloud using a set of images.
 
* Wrote code to generate 3D point cloud using a set of images.
 
* Applied Multiple Filters to filter out outliers.
 
* 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.
 
* 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 '''
+
==== Week 3 (21st June - 27th June) ====
* Integrated the generation and visualization of multiple format 3D point cloud file in the UI.
+
* Integrated the generation and visualization of multiple format 3D point cloud files in the UI.
 
* Applied some more advanced algorithm to remove noise from the generated 3D point clouds
 
* 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
 
* Integrated camera setup for taking live images and videos and convert them into point clouds
  
''' Week 4 : 28th June - 4th July '''
+
==== Week 4 (28th June - 4th July) ====
 
* Wrote code to convert point cloud (.ply) to mesh (.stl) file and visualize using o3d.
 
* 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 OGC standards for WPS services and their basic requests and response.
 
* Read workshop 2017 post for creating zoo-services.
 
* Read workshop 2017 post for creating zoo-services.
* Started creating simple web service based UI for setting up various WPS services.
+
* Started creating simple web service-based UI for setting up various WPS services.
  
''' Week 5 : 5th July - 11th July '''
+
==== Week 5 (5th July - 11th July) ====
* Created a web service based UI using Flask and added some functionality to it.
+
* 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.
 
* Added Point cloud generation and visualization(using Three.js) to the UI.
 
* Initiated setting up Potree Visualization in the UI.
 
* Initiated setting up Potree Visualization in the UI.
  
''' Week 6 : 12th July - 18th July '''
+
==== Week 6 (12th July - 18th July) ====
 
* Resolved some existing errors in the UI.
 
* Resolved some existing errors in the UI.
 
* Completed Potree visualization setup.
 
* Completed Potree visualization setup.
* Working on setup instructed by mentors during meeting.
+
* Working on setup instructed by mentors during the meeting.
 
* Working on ZOO-Project configuration needed to create zoo-services.
 
* Working on ZOO-Project configuration needed to create zoo-services.
  
''' Week 7 : 19th July - 25th July '''
+
==== Week 7 (19th July - 25th July) ====
 
* Created Sample getCapapbilities and describeService request using python modules for WPS services  
 
* Created Sample getCapapbilities and describeService request using python modules for WPS services  
 
* Exploring more about Cheetah Template and their syntax  
 
* Exploring more about Cheetah Template and their syntax  
 
* Creating a sample template to redirect to 3D point cloud UI or load UI
 
* Creating a sample template to redirect to 3D point cloud UI or load UI
  
''' Week 8 : 26th July - 1st August '''
+
==== Week 8 (26th July - 1st August) ====
 
* Created a template for UI and added the volume to the mapmint container
 
* 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
+
* Exploring and understanding the mapmint-UI code to create a widget on the main UI
  
''' Week 9 : 2nd August - 8th August '''
+
==== Week 9 (2nd August - 8th August) ====
* Created WPS service to run all the python script for Point Cloud Generation
+
* Created WPS service to run all the python scripts for Point Cloud Generation
* Working on storing the input and output data in database
+
* Working on storing the input and output data in the database
  
''' Week 10 : 9th August - 15th August '''
+
==== Week 10 (9th August - 15th August) ====
 
* Added 3D Point Cloud scene builder as a widget to the Mapmint Dashboard
 
* Added 3D Point Cloud scene builder as a widget to the Mapmint Dashboard
 
* Cleaned up the code and added comments in the code
 
* 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
+
* Working on Documenting the work that I have completed till now and its future aspects
  
 
== Student's Biography ==
 
== 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.
+
My name is Sandeep Saurav. I am an Electronics and Communication Engineering graduate from Maharaja Agrasen Institute of Technology, Delhi with a 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: [[https://wiki.osgeo.org/wiki/User:SandeepSaurav Link]]
 
Some more information about me can be obtained by following the link: [[https://wiki.osgeo.org/wiki/User:SandeepSaurav Link]]
  

Revision as of 05:37, 21 August 2021

Introduction

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 several 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 a user interface as a 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 by either simply capturing via camera or importing drone-captured images. Further, I am planning to integrate the various functions 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]

Timeline

17th May - 7th June

Community bonding period: What I have done during this period?

  • Introduced myself over the channel and shared my proposal over the 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 set up initial video call for primary discussion and explained to 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 the 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 a user interface for loading images from a folder and also capturing images via camera with several other functionalities.
  • 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 (21st June - 27th June)

  • Integrated the generation and visualization of multiple format 3D point cloud files 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 the 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 the main UI

Week 9 (2nd August - 8th August)

  • Created WPS service to run all the python scripts for Point Cloud Generation
  • Working on storing the input and output data in the 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 its future aspects

Student's Biography

My name is Sandeep Saurav. I am an Electronics and Communication Engineering graduate from Maharaja Agrasen Institute of Technology, Delhi with a 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