PyWPS – 4 project report

Jachym Cepicky
Thursday 15:00 - 15:25
Session 3, Track 6, Slot 1

PyWPS is one of the first implementations of OGC Web Processing Service (OGC WPS 1.0.0) on the server-side, using Python programming language. Since it’s beginning in 2006 it was offering support for running scripts of GRASS GIS and other popular libraries, such as R, GDAL, Proj4 and other. Users of PyWPS can write their server-side geo-scripts and interface them on the internet using standard WPS interface.

During last two years, PyWPS development team was discussing new features, users would like to see in this popular OGC WPS Server implementation. Users were missing for example proper support for multiple in- and outputs, advanced logging, more natural serializing, possibility to store big data to external services. PyWPS was never validating properly input data, as long as underlying libraries were able to read them.

Also new versions of nearly everything are at hand – Python 3, GRASS GIS 7 with proper Python support, Fiona, Shapely, no need to write custom code, when OWSLib is around. New formats are now used for sharing of raster and vector data, for example Geo- and TopoJSON. They can be even validated, using json-schema. Python became The geo-scripting language since 2006 (now being slowly replaced by JavaScript).

Current work on PyWPS 4 is split into several fields: New WSGI interface was written, using Werkzeug. PyWPS has now new core for in- and output data structures (LiteralData and ComplexData). New IOHandler base object can seamlessly switch between file-, stream-like- and in-memory objects.

PyWPS – 4 contains validators of input complex data, which uses four-level of validation (None, mime-type based, “can read GDAL”, schema validation) for XML-based format (like GML) but also for JSON-based formats (like GeoJSON). Literal data are validated on similar way.
We are going to support MapServer, Geoserver and QGIS MapServer in the future for output complex data management and serving. Data are going to be stored in storages (new abstract class defined), which currently is file system based by now, but can be extend to remote storage (such as FTP or e.g. Dropbox), or to database servers. Possibilities of WPS-T are discussed as well.

PyWPS – 4 will remain the old PyWPS, how our users do like it: small, fast to install and configure, fast to run. But with new features at hand, we will provide you with modern, safe, scalable tool, which you can use to interface the work of yours on the internet.