[SoC] GSoC 2021 Final Report : Integrating 3D scene builder as WPS services within MapMint administration User Interface

Sandeep Saurav sandeep.saurav97 at gmail.com
Sun Aug 22 23:04:32 PDT 2021


Hello everyone,

As the GSoC 2021 period is about to end, I would like to present my Final
Report
<https://github.com/Sandeep10021/mapmint/wiki/Final-Report:-GSoC-2021>of
the work that I did during this GSoC 2021 period.
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
<https://www.ogc.org/standards/wcs> (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 <https://www.ogc.org/standards/wms> (Web Map Service).
Access to geographic data in vector format is via the WFS
<https://www.ogc.org/standards/wfs> (Web Feature Service) or access to
image data via WCS <https://www.ogc.org/standards/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
<https://github.com/Sandeep10021/mapmint/wiki/Final-Report:-GSoC-2021#motivation>
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.
<https://github.com/Sandeep10021/mapmint/wiki/Final-Report:-GSoC-2021#mapmint-before-gsoc-2021>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.
<https://github.com/Sandeep10021/mapmint/wiki/Final-Report:-GSoC-2021#updates-in-mapmint-during-gsoc-2021>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 the 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 the Structure
>From Motion
<https://github.com/Sandeep10021/mapmint/wiki/Structure%20From%20Motion>
 algorithm.

[image: UIView]

Overview of MapMint UI for 3D Point Cloud Generation
<https://github.com/Sandeep10021/mapmint/wiki/Final-Report:-GSoC-2021#future-opportunities>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.
<https://github.com/Sandeep10021/mapmint/wiki/Final-Report:-GSoC-2021#testing-3d-point-cloud-generation>Testing
3D Point Cloud Generation

   - As MapMint User Interface


   - Setup OSGeoLive 13.0 from here
   <https://github.com/Sandeep10021/mapmint/wiki/Setup-OSGeoLive-13.0>
   - Setup ZOO-Project and MapMint using Docker from here
   <https://github.com/Sandeep10021/mapmint/wiki/Setup-ZOO-Project-and-Mapmint-Using-Docker>
   - Copy-paste the folder PC_WPS from here
   <https://github.com/Sandeep10021/mapmint> to
   ZOO-Project/Zoo-project/zoo-services directory in order to create WPS
   services
   - Next, make a widget similar to others on the left-hand side of the
   MapMint UI by making changes in Skeleton_bs.tmpl
   <https://github.com/Sandeep10021/mapmint/blob/master/Skeleton_bs.tmpl>
    in ZOO-Project/mapmint/mapmint-ui/templates directory
   - Copy-paste the folder PC_Generation from here
   <https://github.com/Sandeep10021/mapmint> to
   ZOO-Project/mapmint/public_map/ directory
   - Now, finally, create the volume by copy-pasting the 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
   <https://github.com/Sandeep10021/mapmint/wiki/Setup-OSGeoLive-13.0>
   - Clone the PC_Generation repository from here
   <https://github.com/Sandeep10021/mapmint>
   - Install all modules to run this app by running the 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

<https://github.com/Sandeep10021/mapmint/wiki/Final-Report:-GSoC-2021#working-example>Working
Example

Demonstration video about how to use 3D Point Cloud service and UI (Demo)
<https://drive.google.com/file/d/1ZsurhJ2fp3_wR2_-Mol1I3446dRqIqZi/view?usp=sharing>
<https://github.com/Sandeep10021/mapmint/wiki/Final-Report:-GSoC-2021#related-links>Related
Links

   - Mapmint Repository: Mapmint <https://github.com/Sandeep10021/mapmint>
   - Zoo-Project Repository: ZOO-Project
   <https://github.com/Sandeep10021/ZOO-Project>
   - Project's Wiki Page: 3D Scene Builder as WPS Service
   <https://wiki.osgeo.org/wiki/GSoC%2721_Integrating_3D_scene_builder_as_WPS_services_within_MapMint_administration_User_Interface>



Participating in GSoC was a great learning experience for me.
Thank you, my mentors, all community members, and OSGeo Organization for
giving me this wonderful opportunity.

With Best Wishes & Regards
Sandeep Saurav
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/soc/attachments/20210823/010be549/attachment-0001.html>


More information about the SoC mailing list