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