Final Report GSoC 2021 - AniketDGiri/mapmint GitHub Wiki
Implement 3D scene visualization support using Cesium and integrate with MapMint
Google Summer of Code 2021
- Author - Aniket Giri
- Mentor 1 - Gérald Fenoy
- Mentor 2 - Rajat Shinde
- Mentor 3 - Venkatesh Raghavan
- Mentor 4 - Sittichai choosumrong
- Mentor 5 - Samuel Souk aloun
- Organization - OSGeo, MapMint
- Developer Community - The ZOO Project
Abstract
MapMint is a geographic information system (GIS) software on the Internet that facilitates spatial data infrastructures (SDI) deployment. 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. SDI comprises the geographic data, metadata, tools (MapMint web software), and data (in the form of images, location) recorded by the users. All these components are connected interactively to use spatial data efficiently and flexibly. MapMint integrates multiple software in a complete and consistent web mapping platform, thus supporting users to build their maps and web applications. These web services are built on top of the ZOO-Project. Different functionality provided by the application based on user rights are :
- Importing and storing vector and raster GIS data: Vector data are a representation of real-world data using points, lines, and polygons. This representation makes it easier to query and create a topographic relationship between objects in the image. Raster data consist of a matrix of cells (or pixels) where each cell value represents information.
- Support for querying and publishing geographic data using WFS, WMS, and WMTS standards: The Open Geospatial Consortium (OGC) Web Feature Service (WFS) interface standard provides an interface allowing a request for geospatial features across the web using platform-independent calls. Web Map Service (WMS) is also a standard protocol developed by OGC for serving georeferenced maps over the internet. Web Map Tile Service (WMTS) shows pre-rendered or run-time computed georeferenced map tiles over the internet example google maps
- Support for composing and storing maps: The application allows the user to compose and store maps as the project (map files), configure and generate mapping applications, and run the cartographic portal along with viewing and sharing maps
Motivation:
The project focuses on Implement 3D scene visualization support using Potree and integrate with MapMint. The motivation for the project was to allow viewing data in three dimensions that give users a new perspective. since 3D viewing can provide insights that would not be readily possible from the same data's georeferenced map. For example, instead of inferring a valley's presence from the configuration of contour lines, users can see the valley and perceive the difference in height between the valley floor and a ridge.
MapMint before GSoC 2021:
MapMint is a complete web mapping platform and has support for several features. ZOO-Project is an open WPS platform that supports MapMint to run applications by acting as SDI for MapMint. MapMint also makes use of MapServer to add capabilities to an application like Web Map Service (WMS) for visualization of map tiles, Web Feature Service (WFS) to generate vector data and make it platform-independent, and Web Coverage Service (WCS) for accessing image data.
An overview of the architecture of MapMint is presented below
Updates in MapMint during GSoC 2021:
-
Ways to setup MapMint, locally on the system: Created documentation (with changes) that provides installation and configuration steps required to set up MapMint on the system. It will be helpful for future contributors who want to contribute to the MapMint application and helping them set up the environment.
-
MapMint-Cheetah-templates-How-To: Created documentation from the understanding of the code.see here
-
Integrating with MapMint: Implemented a tab in the existing MapMint UI, allowing end-users to visualize the 3D Data. Also, Documented the changes required to add a tab to the existing MapMint UI Template file for Tab feature
-
Created UI Page: Designed and developed UI page for visualizing the 3D data by creating a template file visualize_bs using Cheetah Templating system, HTML, CSS, JS.
-
Changes in default.conf file: Earlier apache server was not configured for running the python files, made necessary changes in the apache configuration file (default. conf) present in the docker folder and added it as a volume to reflect the changes in the apache configuration file. see here
-
Upload File Service: Created a python service for uploading the 3D data that will get triggered from the UI design.
-
Visualization script: Created a visualization script using an open-source Javascript engine called CesiumJS API, providing a CesiumJS client for visualizing the 3D data on the web.
-
Added volumes to the Docker container: Appended the required volumes to the zookernel container present in the docker-compose.yml file Volumes added
-
Repository created: I have added the changes to the forked repository created for below:
Future Opportunities:
There are endless possibilities for what we can do with visualizing the 3D data. Adding more support based on the requirements can improve the task of user interaction with the 3D Data. Presently, I have implemented the visualization support, but functionalities such as styling and Filtering 3D Tiles will allow users to highlight essential features from their dataset, provide a better perspective, and understand the data better.
Working and Example:
A tutorial on the working of the Visualizing 3D data
Link to official Repository:
Wiki-Page Link
Link to Project's OSGeo Wiki-page:Repositories worked on:
ZOO-Project Repository MapMint Repository