-
Notifications
You must be signed in to change notification settings - Fork 117
GeoPython conference 2016
PyWPS is an open source, light-weight, Python based, implementation of the Web Processing Service (WPS) standard. It provides users with a relatively seamless environment where to code geo-spatial functions and models that are readily exposed to the public through the WWW.
Coding was started in 2006 by Jachym Cepicky as part of a project to connect GRASS with UMN MapServer, initially funded with a scholarship from GDF-Hannover. PyWPS was first presented at the 2006 FOSS4G conference as a means to expose GRASS to the web. Soon after Intevation GmbH hosted the initial project website, code repository and mailing lists, seeding a full fledged open source development process. Version 1 was released in November of 2006.
Version 2 was released in late 2007, implementing further features of the WPS standard and introducing the Process class, greatling improving object-oriented process development. An year later was released PyWPS 3.0, featuring a new code structure and implementing the WPS 1.0 standard almost entirely; by this time stability had also greatly improved.
Discussions on a new version of PyWPS started in 2013, with a draft code sturcture developed still that year. In 2014 the Luxembourg Institute of Science and Technology (LIST) held a workshop on the WPS standard where the new code concept was further advanced. Throughout 2015 LIST hosted an intership during which much of the PyWPS-4 core was developed.
PyWPS-4 is complete re-write of the core code, taking advantage of the state-of-the-art Python infrastructure in order to provide new useful features. The recent publication of WPS version 2.0 - which brings forth important new functionalities - is also prompting this re-structuring of the code.
PyWPS-4 is a WSGI application, independent from the server implementation; an abstract Server class is provided, serving as a bridge with the WSGI server. The PyWPS core code structure is now completely unbundled core functionality from services and processes. Among the Python libraries used are lxml - for XML parsing - and Multiprocessing - for asynchronous execution.
At this moment PyWPS-4 is already able to parse POST and GET request against the WPS schema, offers storage mechanisms for process inputs and outputs and spawns processes to the background for asynchronous execution requests. It introduces safe validation of data inputs, based on common libraries and XML schemas. [What else does it do now?]
PyWPS offers a in the increasingly popular Python language. Easy to learn, but versatily enough to support object-oriented paradigms, Python is as appropriate for users lacking formal training in programming as for professional programmers. Python also offers easy access to a vast array of code libraries, in particular those for geo-spatial data manipulation, e.g. GRASS, GDAL/OGR, Shapely, but also statistics (e.g. rpy2 for R statistics).
The Python language also facilitates the extension/adaptation of PyWPS to user specific or projects specficic requirements.