The goal of this Google Summer of Code project is to extend the 52°North WPS‘s functionality by adding Ilwis-Objects as a processing backend. The 52°North currently supports several different backends, such as R or GRASS. The introductory blog post can be found here.
The current status of the project can be seen in the following diagram.
The first goal was to implement a Java Bridge for Ilwis (left hand side). With this bridge, Ilwis-Objects are usable in Java.
The second goal is the Ilwis process repository (middle of the diagram), which allows a WPS to offer processing functionality to clients based on Ilwis-Objects through the Java Bridge.
Ilwis – Java Bridge
The base of the project is the PythonAPI of Ilwis, which contains a C++ interface, a SWIG binding and Python tests.
- A large part of the interface was reusable, however some Python specific parts needed to be rewritten and refactored with the Java equivalent.
- The SWIG binding was extended with the Java specific codes.
- The Python tests could be directly ported to Java, using JUnit. Since the Java Bridge should have mostly the PythonAPI’s features, these tests are suitable.
You can see all the tests, which very well demonstrate how a Java developer could work with Ilwis-Objects, in my GitHub repository. An example test that reads a GPX file as an Ilwis Catalog is as follows.
Status: The date-time datatypes and some raster tests not ready yet, but almost done. The next step is the Ilwis process repository.
ILWIS process repository
The ILWIS process repository will be similar to the GRASS and Sextante repositories. The following diagrams portray the communication between the WPS client, WPS and Ilwis-Objects.
The Ilwis-Objects’ operations list is retrieved by the WPS framework, and then inserted into the WPS Capabilities document along with the processes of other repositories. A configuration of the process repository must allow to publish and hide specific processes.
Ilwis stores detailed description of each operation, like parameters, outputs and description in words. This could automatically be converted into WPS Process descriptions.
WPS is capable of transferring input and output files for the backends. With this, users can carry out Ilwis operations remotely.
Next steps: I will start with the WPS process repository in the second half of the summer of code.
Leave a Reply