Skip to content

Final Report

Sandeepan Dhoundiyal edited this page Sep 11, 2022 · 10 revisions

Integrating ZOO-services with QGIS

1. Abstract

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.

2. State of the art Before GSoC:

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.

These services are:

2.1 Based on GDAL

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

Table 1: GDAL based ZOO-services 

Service Description
Gdal_Contour Builds vector contour lines from a raster elevation model
Gdal_Grid Creates regular raster grid front the scattered data read from an OGR data source
Gdal_Dem Tools for the analysis of raster elevation models
Gdal_Ndvi Calculates Normalized Difference Vegetation Index on a raster file.
Gdal_profile Fetches the elevation profile of a raster DEM in the form of XYZ values along a straight line
Gdal_translate Converts raster data between different formats
Gdal_Warp Mosaics, reprojects or warps raster images
Ogr2Ogr Converts vector data between different formats
Base-vect-ops Tools for spatial analysis of single and multiple vector geometries

2.2 Based on CGAL

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.

Table 2: CGAL based ZOO-services 

Service Description
Cgal_Delaunay Computes edges of Delaunay triangulation given a set of data points. Documentation for the CGAL implementation can be found here.
Cgal_Voronoi Computes edges of a Voronoi Polygon given a set of data points. Documentation for the CGAL implementation can be found here.

2.3 Based on GRASS GIS

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

2.4 Based on Orfeo Toolbox

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

3. Additions made to the ZOO-Project during GSOC

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.

Additional services were partially implemented

3.1. Kernel density estimation.

3.2. Sampling Points inside polygons.

3.3. Random selection of features.

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.

4. Work still to be done

Two tasks were undertaken but could not be completed during this time period. These are:

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

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

5. Further details

Further details on how to setup the environment and a guide to the code written during the GSOC can be found at this wiki page