<div dir="ltr"><h2>1. Title and software community:<span style="font-weight:normal"></span></h2><h2><font size="2"><span style="font-weight:normal">Title: Integrating ZOO-Services with QGIS.<br>Software Community: OSGeo Foundation Incubation Project - ZOO-Project</span></font><u><br></u></h2><h2></h2><h2>2. Abstract</h2>
<p>The ZOO-Project is an open-source implementation of the OGC's (Open
Geospatial Consortium) Web Processing Service (WPS) standard. It
provides ready-to-use services implemented in C and Python. These
services are based on open source libraries and are compliant with OGC
standards, with minor modifications in their source code. Before GSoC,
the available services were those based on Geospatial Data Abstraction
Library (GDAL), Computational Geometry Algorithms Library (CGAL), the
Orfeo Toolbox and GRASS GIS. This GSoC focused on expanding the
services available in the ZOO-project by incorporating tools from QGIS
as first-citizen services of the ZOO-project. This goal was achieved by
developing a bridge connecting the QGIS processing toolbox to the
ZOO-project. Three processing tools: affine transforms, estimating
centroids of geometries, and topological colouring were incorporated as
services. Comprehensive descriptions and python implementations of other
tools were also created, which can be incorporated as ZOO-services.
Finally, the bridge implemented during this GSoC can be used to
incorporate any of the over 300 tools of the QGIS processing toolbox as
native services of the ZOO-Project.</p>
<h2>
<a id="gmail-user-content-2-state-of-the-art-before-gsoc" class="gmail-anchor" href="https://github.com/sdhoundiyal/GSoC_ZOO-Project/wiki/Final-Report#2-state-of-the-art-before-gsoc" aria-hidden="true"></a></h2><h2>3. State of the art Before GSoC:</h2>
<p>The ZOO-Project provides ready-to-use services implemented in C and
Python. These services are based on open source libraries and are
compliant with OGC standards, with minor modifications in their source
code.</p>
<p>These services are:</p>
<h3>
<a id="gmail-user-content-21-based-on-gdal" class="gmail-anchor" href="https://github.com/sdhoundiyal/GSoC_ZOO-Project/wiki/Final-Report#21-based-on-gdal" aria-hidden="true"></a></h3><h3>3.1 Based on GDAL</h3>
<p>GDAL (Geospatial Data Abstraction Library) is an open-source library
for handling basic raster and vector geospatial data formats,
translating between them, and performing basic geospatial processing.
Documentation for the GDAL implementation of these services and other
methods can be found <a href="https://gdal.org/programs/index.html" rel="nofollow">here</a>.</p>
<p dir="ltr"><span>Table 1: GDAL based ZOO-services </span></p><div dir="ltr" align="left">
<table role="table">
<thead>
<tr>
<th>Service</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>Gdal_Contour</td>
<td>Builds vector contour lines from a raster elevation model</td>
</tr>
<tr>
<td>Gdal_Grid</td>
<td>Creates regular raster grid front the scattered data read from an OGR data source</td>
</tr>
<tr>
<td>Gdal_Dem</td>
<td>Tools for the analysis of raster elevation models</td>
</tr>
<tr>
<td>Gdal_Ndvi</td>
<td>Calculates Normalized Difference Vegetation Index on a raster file.</td>
</tr>
<tr>
<td>Gdal_profile</td>
<td>Fetches the elevation profile of a raster DEM in the form of XYZ values along a straight line</td>
</tr>
<tr>
<td>Gdal_translate</td>
<td>Converts raster data between different formats</td>
</tr>
<tr>
<td>Gdal_Warp</td>
<td>Mosaics, reprojects or warps raster images</td>
</tr>
<tr>
<td>Ogr2Ogr</td>
<td>Converts vector data between different formats</td>
</tr>
<tr>
<td>Base-vect-ops</td>
<td>Tools for spatial analysis of single and multiple vector geometries</td>
</tr>
</tbody>
</table>
</div>
<h3>
<a id="gmail-user-content-22-based-on-cgal" class="gmail-anchor" href="https://github.com/sdhoundiyal/GSoC_ZOO-Project/wiki/Final-Report#22-based-on-cgal" aria-hidden="true"></a></h3><h3>3.2 Based on CGAL</h3>
<p>CGAL (Computational Geometry Algorithms Library) is a C++
implementation of a collection of geometric algorithms, addressing needs
in areas such as GIS (Geographic Information Systems), CAD
(Computer-Aided Design), molecular biology, medical imaging, computer
graphics, and robotics.</p>
<p dir="ltr"><span>Table 2: CGAL based ZOO-services </span></p><div dir="ltr" align="left">
<table role="table">
<thead>
<tr>
<th>Service</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>Cgal_Delaunay</td>
<td>Computes edges of Delaunay triangulation given a set of data points. Documentation for the CGAL implementation can be found <a href="https://doc.cgal.org/latest/Manual/packages.html#PartTriangulationsAndDelaunayTriangulations" rel="nofollow">here</a>.</td>
</tr>
<tr>
<td>Cgal_Voronoi</td>
<td>Computes edges of a Voronoi Polygon given a set of data points. Documentation for the CGAL implementation can be found <a href="https://doc.cgal.org/latest/Manual/packages.html#PartVoronoiDiagrams" rel="nofollow">here</a>.</td>
</tr>
</tbody>
</table>
</div>
<h3>
<a id="gmail-user-content-23-based-on-grass-gis" class="gmail-anchor" href="https://github.com/sdhoundiyal/GSoC_ZOO-Project/wiki/Final-Report#23-based-on-grass-gis" aria-hidden="true"></a></h3><h3>3.3 Based on GRASS GIS</h3>
<p>GRASS(Geographic Resources Analysis Support System) GIS is a C++
based platform for processing, modelling, visualizing and managing
geospatial data. In the past the wps-grass-bridge library of the
ZOO-Project allowed GRASS GIS 7 modules to be used as ZOO-Services.
However, programmes introduced in subsequent releases of GRASS GIS are
not supported as ZOO-Services. Documentation for GRASS 8 can be found <a href="https://grass.osgeo.org/grass80/manuals/index.html" rel="nofollow">here</a>.</p>
<h3>
<a id="gmail-user-content-24-based-on-orfeo-toolbox" class="gmail-anchor" href="https://github.com/sdhoundiyal/GSoC_ZOO-Project/wiki/Final-Report#24-based-on-orfeo-toolbox" aria-hidden="true"></a></h3><h3>3.4 Based on Orfeo Toolbox</h3>
<p>The OrfeoToolbox is a collection of tools for processing remote
sensing data. Use-cases include ortho-rectification, pan-sharpening,
classification, SAR processing. Similar to GRASS GIS, Orfeo Toolbox
Applications can be used as ZOO-Services without any modification using
the Orfeo Toolbox support. Documentation for the Orfeo Toolbox
applications can be found <a href="https://www.orfeo-toolbox.org/CookBook/Applications.html" rel="nofollow">here</a>.</p>
<p align="center">
<img src="https://github.com/sdhoundiyal/GSoC_ZOO-Project/wiki/images/ZOO-Project%20before%20GSoC.png" style="margin-right: 0px;" width="751" height="337"></p><p align="center">Fig. 3.1: The overview of the ZOO-project before GSoC, Natively supported services are shown in green. Deprecated services (GRASS GIS-based) are shown in red.
</p>
<h2>
<a id="gmail-user-content-3-additions-made-to-the-zoo-project-during-gsoc" class="gmail-anchor" href="https://github.com/sdhoundiyal/GSoC_ZOO-Project/wiki/Final-Report#3-additions-made-to-the-zoo-project-during-gsoc" aria-hidden="true"></a></h2><h2>4. Additions made to the ZOO-Project during GSOC</h2>
<p>During this GSoC, the ZOO-services were expanded to include those
based on QGIS. This was done by developing a bridge connecting the QGIS
processing toolbox to the ZOO-Project. Three services: affine
transforms, estimating centroids of geometries, and topological
colouring, were added to the ZOO-Services.</p>
<p>Additional services were partially implemented</p>
<p>4.1. Kernel density estimation.</p>
<p>4.2. Sampling Points inside polygons.</p>
<p>4.3. Random selection of features.</p>
<p align="center">
<br>
</p><br>
<h2>
<a id="gmail-user-content-4-work-still-to-be-done" class="gmail-anchor" href="https://github.com/sdhoundiyal/GSoC_ZOO-Project/wiki/Final-Report#4-work-still-to-be-done" aria-hidden="true"></a></h2><h2>5. Work still to be done</h2>
<p>Two tasks were undertaken but could not be completed during this time period. These are:</p>
<p>5.1 An example web page for the services added during the GSoC:- Each
of the existing set of Zoo-services has a sample web page containing
examples of the ZOO-services. One of the goals of this GSoC was to
implement a similar example for QGIS-based services. However, this could
not be finished in time.</p>
<p>5.2 Removing the need for manual intervention during setup:-
Currently, connecting the QGIS processing toolbox to the ZOO-project
requires the user to execute a script in the QGIS python console. This
process could not be automated during the summer.</p>
<h2>
<a id="gmail-user-content-5-further-details" class="gmail-anchor" href="https://github.com/sdhoundiyal/GSoC_ZOO-Project/wiki/Final-Report#5-further-details" aria-hidden="true"></a></h2><h2>6. Permanent links</h2><div>The code is hosted in <a href="https://github.com/sdhoundiyal/GSoC_ZOO-Project/tree/gsoc22">this repository</a>.</div><div><br></div><div>The Slide stack presented at FOSS4G is <a href="https://docs.google.com/presentation/d/1jAQBz7KqZCa8EGSjXJSQmPRobsVU_4nm-J4Jm8SmjbQ/edit?usp=sharing">linked here</a>.<br></div>
<p>Further details on how to setup the environment and a guide to the code written during the GSOC can be found at <a href="https://github.com/sdhoundiyal/GSoC_ZOO-Project/wiki/Guide-to-the-added-Code">this wiki page</a></p><p><br></p><p></p>
<h2>
<a id="gmail-user-content-5-further-details" class="gmail-anchor" href="https://github.com/sdhoundiyal/GSoC_ZOO-Project/wiki/Final-Report#5-further-details" aria-hidden="true"></a></h2><h2>7. Graphical abstract<br></h2><p align="center">
<img src="https://github.com/sdhoundiyal/GSoC_ZOO-Project/wiki/images/ZOO-Project%20after%20GSoC.png" style="margin-right: 25px;" width="496" height="216">
</p><div style="text-align:center">Fig. 7.1: The overview of the ZOO-project after the GSoC, The QGIS-based services (shown in blue) were added to the ZOO-services.</div><div style="text-align:center"><br></div><div style="text-align:center"><img src="https://github.com/sdhoundiyal/GSoC_ZOO-Project/wiki/images/outputs.png"></div><div style="text-align:center"><p>Fig. 7.2: Outputs of three implemented services for the Indian state of Uttar
Pradesh. The input (green), centroids of the districts (black circles
with dots), affine transformed boundaries (red), and topologically
colouring (below) are shown in the following figure.</p>
<p align="center">
</p></div><div style="text-align:left">Regards,<br></div><div style="text-align:left">Sandeepan Dhoundiyal.<br></div><p></p></div>