Final Report: GSoC 2021 - Sandeep10021/mapmint GitHub Wiki

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

Google Summer of Code 2021

Abstract

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 their 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

MapMint includes several free software in a complete and coherent web mapping platform, whose operation is based on the use of open standards geomatics and the internet. At the heart of MapMint, we have the ZOO-Project, an application to simply and efficiently deploy WPS (Web Processing Service) data processing. A set of web services is available MapMint, from simple display of a web page in the application to complex geographical treatments. Other types of web services are implemented, including visualization and querying spatial data, WMS (Web Map Service). Access to geographic data in vector format is via the WFS (Web Feature Service) or access to image data via WCS (Web Coverage Service). All these web services are provided by MapServer. The various files necessary for the functioning of MapServer and dynamic mapping applications are managed by MapMint services which provide a friendly interface for interacting with these web services. ZOO-Project and MapServer applications based on an Apache webserver to access the application via HTTP and HTTPS communication protocols. In the Windows environment, IIS can be used instead of Apache.

Overview of Mapmint Architecture

Motivation

The project aims to Integrate 3D scene builder as WPS services within MapMint administration User Interface. At present, the user can only visualize the 2D maps and can even generate one of them. So, my major motivation for this project is to create a user interface as a WPS service within MapMint such that the user cannot only visualize the 3D GIS maps but can also build the same. Similar to 2D maps, 3D GIS maps depict objects in greater detail by adding another dimension (z). 3D technology in GIS maps is an explanatory illustration that represents the scale of real-world objects. 3D models assist appearance, a survey in a large number of different domains. For instance, 3D maps can show the height of a hotel or a mountain and not just its location. The 3D tools have to be used along with 2D GIS and then imagined in a 3D setting.

Over the years, GIS has significantly impacted creating mapping as an essential tool to solve problems. Conventionally, GIS information was based on a two-dimensional recording, which apparently limited its usage in most applications. Incorporating 3D technology in GIS will customize the whole experience, make it more personal and enable detailed visualization.

MapMint before GSoC 2021

With the current state of MapMint Software the user can import and store vector and raster GIS data, visualize, share maps, query database server, and WMS / WFS external, publish geographic data in the form of WMS, WFS, and WMTS, treat and edit data source style, compose and save maps in the form of projects. The interoperability of MapMint is provided by the standards used and implemented. It is thus possible to interact with data and services. MapMint application is not only accessible from a web browser but also as a desktop client.

Updates in MapMint during GSoC 2021

Integrated 3D scene builder as WPS services within MapMint administration User Interface.

  • Created a widget on Mapmint administration UI for users to easily access 3D Point Cloud Generation service
  • Created WPS services to run 3D Point Generation using zoo-service
  • Created some volume to run services and Point Cloud generation smoothly
  • Designed the 3D Point Cloud Generation UI from where the user can directly load the images and run the service
  • Users can visualize the generated 3D Point Cloud using the functionality available on UI
  • Users can also download the 3D Point Cloud file and can store it locally to visualize using some other software

Now the user can easily create a 3D Point Cloud scene using multiple sets of images from the same scene. 3D Point Cloud generation was done using Structure From Motion algorithm.

UIView

Overview of MapMint UI for 3D Point Cloud Generation

Future Opportunities

With the increase in applications of 3D scenes, huge opportunities are coming along with it. One can convert this Point Cloud model into a Mesh model and can even color them for presentation. There are various functions that can be added to process the model such as Sharpening, Masking, Smoothing, etc. Further one can even extend this 3D scene generation support for raster data as well that can be used in various applications.

Testing 3D Point Cloud Generation

  • As MapMint User Interface
  • Setup OSGeoLive 13.0 from here
  • Setup ZOO-Project and MapMint using Docker from here
  • Copy paste the folder PC_WPS from here to ZOO-Project/Zoo-project/zoo-services directory in order to create WPS services
  • Next, make an widget similar to others on left hand side of the MapMint UI by making changes in Skeleton_bs.tmpl in ZOO-Project/mapmint/mapmint-ui/templates directory
  • Copy paste the folder PC_Generation from here to ZOO-Project/mapmint/public_map/ directory
  • Now, finally create the volumne by copy-pasting following code to docker-compose.yml file
  zookernel:
    build: .
    image: geolabs/mapmint
    ports:
      - "80:80"
    volumes:
      - ./mapmint/mapmint-ui/templates/generation_bs.tmpl:/mapmint/mapmint-ui/templates/generation_bs.tmpl
      - ./zoo-project/zoo-services/PC_WPS/cgi-env/generation.py:/usr/lib/cgi-bin/generation.py  
      - ./zoo-project/zoo-services/PC_WPS/cgi-env/PointCloud.zcfg:/usr/lib/cgi-bin/PointCloud.zcfg   
      - ./mapmint/public_map/PC_Generation:/var/www/html/PC_Generation
      - ./mapmint/public_map/PC_Generation/upload.py:/usr/lib/cgi-bin/upload.py 
      - ./mapmint:/mapmint
  • Now you are ready to go !!
  • Test if the WPS service for Point Cloud generation is running properly by running the following URL
GetCapabilities: http://localhost/cgi-bin/zoo_loader.cgi?request=GetCapabilities&service=WPS
DescribeProcess: http://localhost/cgi-bin/zoo_loader.cgi?request=DescribeProcess&service=WPS&version=1.0.0&Identifier=PointCloud
  • Now, finally open the MapMint dashboard and enjoy the service!
  • As Flask Web Application
  • Setup OSGeoLive 13.0 from here
  • Clone the PC_Generation repository from here
  • Install all modules to run this app by running following command
pip install -r requirements.text
  • Run app.py file using the following command
python app.py
  • Go to https://localhost:5000 from any browser and now you can see Point Cloud Generation UI
  • Select at least 10 sets of images to generate 3D Point Cloud and Click Submit
  • Wait for some time until you receive a message Your Point Cloud has been generated successfully!
  • Now your 3D Point Cloud is ready
  • Now you can download your 3D Point Cloud file by clicking on Download Point Cloud button
  • Also, you can visualize it by clicking on Visualize button
  • Alternatively you can also download the 3D Point Cloud file and visualize it in Meshlab by running the meshlab command in the terminal and selecting downloaded merged.ply file

Working Example

Demonstration video about how to use 3D Point Cloud service and UI (Demo)

Related Links

⚠️ **GitHub.com Fallback** ⚠️