1. Cepicky: Python Web Processing Service
Python Web Processing Service: OGC WPS, Implementierung und
Anwendung
Jachym Čepický
OGC Web Processing Service erreichte im Sommer 2007 die Version 1.0.0. Es ist ein
Standard, der beschreibt, wie Geoprozesse im Netzwerk nur Verfügung gestellt werden
sollen. "Prozess" kann ein einfaches Algorithmus, aber auch komplexer Modell, sein.
Benutzer für den Prozess auf, er wird aber nicht auf dem Desktop-PC, sondern auf
dem Server ausgeführt. In dem Vortrag wird Implementation von WPS, Python Web
Processing Service (PyWPS), vorgestellt. Es wird gezeigt, wie es eingestellt werden
kann, um z.B. GRASS GIS Skripte über Netzwerk zur Verfügung stellen. Zusätzlich
werden einige Klientapplikationen gezeigt,die die Möglichkeit ausnutzen, jede GIS-Kal-
kulation auf einem entfernten Server laufen zu lassen.
Schlüsselwörter: GRASS GIS, OGC, PyWPS, Web Processing Service, WPS
PyWPS
Python Web Processing Service (PyWPS)1 existiert seit im Frühjahr 2006 als ein Pro-
jekt, der den OGC Web Processing Service Standard auf Seite des Servers in Python
Programmiersprache umsetzt. Vorteil des Projektes ist, dass man von Anfang an direkt
mit GRASS GIS als Hintergrund processing Werkzeug gezählt hat. Außer GRASS
können sowohl andere Kommandozeile orientiert Programme können auch angewen-
det werden (R, GDAL/OGR, ...), als auch Python Packete, die zur Geodatenverarbei-
tung dienen können (ArcGIS-Python Schnittstelle ist leider noch nicht getestet worden).
Web Processing Service unterscheidet (ähnlich wie andere OGC W*Se) drei Anfragstü-
pen: GetCapabilities, DescribeProcess und Execute. Mit GetCapabilities erfährt der Kli-
ent, was für Prozesse auf dem Server zur Verfügung gestellt sind, mit DescribeProcess
stellt man fest, was für Inputs konkrete Prozesse benötigen und was für Outputs der
Klient erwarten kann. Mit Execute werden alle benötige Parameter zu dem Prozess ge-
liefert und nach der Berechnung werden die Outputs zu dem Klient übergeben. Pro-
Bild 1: PyWPS als Mediator zwischen Netzwerk (Internet) und Geowerkzeug (z.B. GRASS)
1 http://pywps.wald.intevation.org
FOSSGIS 2008 Seite 1
2. zess kann auch im asynchronem Mode aufgerufen werden, so dass es im Hintergrund
lauft und Klient kann in regelmäßigen Intervallen kontrollieren, wie weit die Berechnung
ist. Die Kommunikation funktioniert auf Basis von XML Dateien oder via HTTP Get An-
frage, wo einzelne Inputparameter mit „&“ Zeichen separiert werden.
PyWPS ist ein CGI-Skript, der mit WPS-Klient kommuniziert und übersetzt seine Anfra-
gen so dass es GRASS verstehen kann und wenn alle benötige Berechnungen fertig
sind, formuliert als WPS Response XML Dokument mit Ergebnissen zurück.
Jeder Prozess ist in eine separate Datei gespeichert. Es handelt sich um Python Skript,
in dem Kommandos des Betriebssystems aufgerufen werden können. PyWPS bietet
eine Umgebung für Prozessprogrammierer, die die Prozessentwicklung einfacher ma-
chen sollen. Dazu soll vor allem die Klasse Prozess dienen, mit Methoden wie GetIn-
putValue(), SetOutputValue und SetStatus().
PyWPS Kümmert sich darum, dass alle Inputdaten auf dem Harddisk gespeichert wer-
den, bevor es zu eigener Berechnung kommt. Die Daten können nämlich auf einem an-
derem Server liegen und PyWPS muss sie mit WFS oder WCS erstmal downloaden.
Input Vektordaten können auch als Teil von input Execute XML (z.B. als GML-Datei)
werden. PyWPS speichert alle so genannte ComplexInputs (Vektor- und Rasterdaten)
in Datei und Prozessprogrammier arbeitet dann mit diesen Dateien.
Beispielanwendungen – (Py)WPS Clients
OpenLayers
OpenLayers ist eine freie JavaScript-Bibliothek zur Anzeige von dynamischen Karten
im Web-Browser. Dabei wird OpenLayers vor allem als Client für Web Map Services
eingesetzt. Mit OpenLayers.Control.WPS2 Klasse kann man auf WPS Prozesse zugrei-
fen und so web-basiertes GIS Viewer zu GIS zu machen.
Bild 2: OpenLayers WPS Control
2 http://dev.openlayers.org/sandbox/jachym/openlayers/lib/OpenLayers/Control/WPS.js
3
3. Cepicky: Python Web Processing Service
Überwachte Luftbilder Klassifizierung
Für tschechisches Forsteinrichtung Institut wurde web-basierte Applikation für Über-
wachte Luftbildklassifikation entwickelt. Mit Hilfe von OpenLayers kann der Benutzer
neue Trainingsflächen definiert oder alte modifiziert. Trainingsflächen werden dann als
Teil von WPS Execute XML Datei auf den Server geschickt, wo der Luftbild mit GRASS
Modulen i.gensigset und i.smap klassifiziert wird. Ergebnis wird als PNG Datei direkt in
OpenLayers Karte gezeigt mit dem Link zu Ergebnis GeoTIFF Datei. Postprocessing
des Ergebnisses ist auch möglich.
Ausblick
PyWPS unterstützt leider nur alten WPS Standard 0.4.0. Neue Version (3.0.x) sollte
WPS 1.0.0 als Ausgangsformat benutzen. Momentan wird der Quellcode komplett re-
strukturiert so dass die Entwickelung in der Zukunft einfacher wird. Output XML Datei-
en werden aus den Templates generiert (und nicht mit Hilfe von DOM in Python) und
PyWPS sollte also auch niedrigeren Serverbelastung verursachen.
Releaseplan: Sommer 2008. Patches graciously accepted!
Kontakt zum Autor:
Ing. Jáchym Čepický
Help Service – Remote Sensing s.r.o.
Černoleská 1600
+420 723 185 957
jachym@bnhelp.cz
FOSSGIS 2008 Seite 3