Skip to content
 
 

Repository files navigation

ZOO-Project

Docker Image CI DOI

Note

This is the Gouwe-Gozer interoperability fork of ZOO-Project. Its local Docker profile builds the patched ZOO loaders and a focused set of process providers from this checkout. For the upstream project, see ZOO-Project/ZOO-Project.

ZOO-Project ♥️ Open Geospatial Consortium (OGC) Standards

Summary

The ZOO-Project is an open source processing platform, released under MIT/X11 Licence. It provides the polyglot ZOO-Kernel, a server implementation of the Web Processing Service (WPS) (1.0.0 and 2.0.0) and the OGC API - Processes standards published by the OGC. It contains ZOO-Services, a minimal set of ready-to-use services that can be used as a base to create more usefull services. It provides the ZOO-API, initially only available from the JavaScript service implementation, which exposes ZOO-Kernel variables and functions to the language used to implement the service. It contains the ZOO-Client, a JavaScript API which can be used from a client application to interact with a WPS server.

ZOO-Kernel

The ZOO-Kernel is a powerful processing engine able to handle execution of service that can be implemented in various programming languages:

  • C/C++,
  • C#,
  • Fortran,
  • Java,
  • JavaScript,
  • Python,
  • PHP,
  • Perl,
  • Ruby,
  • R
  • Node.js

In addition, the ZOO-Kernel can also support handling existing applications from Geographic Information System (GIS) processing engine such as:

Also, the ZOO-Kernel can automatically publish data, resulting of a service execution, to MapServer, making the data available through Open Standards: Web Map Service (WMS), Web Feature Service (WFS) and, Web Coverage Service (WCS).

ZOO-Services

The ZOO-Services are composed of two distinct things. First, the metadata informations which can be stored in an adhoc ZCFG format, YAML or in a dedicated database. Then, the ServiceProvider is the executable version of your service. The metadata informations will define every input and output that the service will handle, their type, number and so on. The Service Provider will obviously vary in kind from one language to another. It may be, for instance, a shared library for C language or a simple JavaScript file.

To illustrate the ease of integration of existing code as a service, the first services provided was the commonly used Geospatial Data Abstraction Library (GDAL) tools like: ogr2ogr, gdal_wrap... Also, some trivial services were implemented using the Computational Geometry Algorithms Library (CGAL).

ZOO-API

The ZOO-API is mainly used from the JavaScript language, it gives the capability from a service to invoke other services execution implemented in other lnaguage or running from an existing GIS processing engine. The basic ZOO-API is available for every supported programming language.

ZOO-Client

The ZOO-Client is a JavaScript API that can be used on client side to interact with a WPS Server.

License

See License

Installation

Prerequisites

  • Docker with the docker compose plugin
  • curl
  • Port 80 available on the host

The image targets linux/amd64. Docker Desktop can emulate this platform on ARM hosts, but the first build will be slower.

Start the interoperability profile

Clone this fork, then use the repository-owned startup command:

git clone https://github.com/Gouwe-Gozer/ZOO-Project.git
cd ZOO-Project
./zoo.sh up

./zoo.sh up creates the writable runtime directory, builds the image from the checked-out source, recreates both patched ZOO services, waits for the API, and verifies that the complete process collection is valid JSON.

Open:

Check or stop the stack with:

./zoo.sh check
./zoo.sh status
./zoo.sh down

Do not use docker start for this stack. It neither rebuilds the checked-out source nor coordinates service startup. Run ./zoo.sh up again after pulling changes.

Manual equivalent

If the wrapper cannot be used, run:

mkdir -p docker/tmp
chmod 0777 docker/tmp
docker compose up -d --build --force-recreate --remove-orphans \
  zookernel zoofpm websocketd

An HTTP 503 can occur briefly while the worker starts. Confirm readiness and the large-response fix with:

curl -fsS http://localhost/ogc-api/processes \
  -o /tmp/zoo-processes.json
jq empty /tmp/zoo-processes.json
jq '{returned: (.processes | length), total: .numberTotal}' \
  /tmp/zoo-processes.json

Process availability

The API advertises 700+ process descriptions inherited from the compatible base image. A description being present does not guarantee that every optional runtime dependency for that process is installed. This fork builds selected GDAL, OGR, CGAL and example providers and verifies its compatible SAGA runtime modules. Other advertised processes may require additional packages or configuration.

See the local Docker profile for image pins, configuration, non-default ports and troubleshooting.

About

ZOO-Project fork used for interoperability testing and as a reference deployment for OGC API – Processes client development. Not an official ZOO-Project repository.

Resources

Code of conduct

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages