Final Report
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.
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:
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 |
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. |
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.
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.
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.
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.
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