SlideShare una empresa de Scribd logo
1 de 3
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
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
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

Más contenido relacionado

Destacado (20)

BGOGELA
BGOGELABGOGELA
BGOGELA
 
Pilates aulas com foto
Pilates aulas com fotoPilates aulas com foto
Pilates aulas com foto
 
LOMCE
LOMCELOMCE
LOMCE
 
Nuevo paradigma-de-la-adolescencia
Nuevo paradigma-de-la-adolescenciaNuevo paradigma-de-la-adolescencia
Nuevo paradigma-de-la-adolescencia
 
Med Term Presentation #3
Med Term Presentation #3Med Term Presentation #3
Med Term Presentation #3
 
Formação CEFAS - 15º Dia
Formação CEFAS - 15º DiaFormação CEFAS - 15º Dia
Formação CEFAS - 15º Dia
 
Fremont Assisted Living
Fremont Assisted LivingFremont Assisted Living
Fremont Assisted Living
 
infosystemron8zo
infosystemron8zoinfosystemron8zo
infosystemron8zo
 
Guia biblioteca2
Guia biblioteca2Guia biblioteca2
Guia biblioteca2
 
Final Project
Final ProjectFinal Project
Final Project
 
Técnicas de estudio 6
Técnicas de estudio 6Técnicas de estudio 6
Técnicas de estudio 6
 
Unternehmenspräsentation Anne Breitner
Unternehmenspräsentation Anne BreitnerUnternehmenspräsentation Anne Breitner
Unternehmenspräsentation Anne Breitner
 
Star Chart
Star ChartStar Chart
Star Chart
 
Download
DownloadDownload
Download
 
Lomce bach
Lomce bachLomce bach
Lomce bach
 
Presentacion Tbichile
Presentacion TbichilePresentacion Tbichile
Presentacion Tbichile
 
Presentatie wet- en regeldag Kamer van Koophandel 1 december 2009
Presentatie wet- en regeldag Kamer van Koophandel 1 december 2009Presentatie wet- en regeldag Kamer van Koophandel 1 december 2009
Presentatie wet- en regeldag Kamer van Koophandel 1 december 2009
 
Plec Redacció Projectes Barri Sant Agustí I Adoberies
Plec Redacció Projectes Barri Sant Agustí I AdoberiesPlec Redacció Projectes Barri Sant Agustí I Adoberies
Plec Redacció Projectes Barri Sant Agustí I Adoberies
 
1to1 - computing Schule Guttannen BE (Schweiz)
1to1 - computing Schule Guttannen BE (Schweiz)1to1 - computing Schule Guttannen BE (Schweiz)
1to1 - computing Schule Guttannen BE (Schweiz)
 
My halloween project
My halloween projectMy halloween project
My halloween project
 

Similar a Cepicky pywps

Python in der Luft- und Raumfahrt
Python in der Luft- und RaumfahrtPython in der Luft- und Raumfahrt
Python in der Luft- und RaumfahrtAndreas Schreiber
 
Geoinformatik-Kolloquium Juni 2012: High Performance Computing Cluster GIS
Geoinformatik-Kolloquium Juni 2012: High Performance Computing Cluster GISGeoinformatik-Kolloquium Juni 2012: High Performance Computing Cluster GIS
Geoinformatik-Kolloquium Juni 2012: High Performance Computing Cluster GISPeter Löwe
 
Config as Code: Der Weg zu Configuration as Code
Config as Code: Der Weg zu Configuration as CodeConfig as Code: Der Weg zu Configuration as Code
Config as Code: Der Weg zu Configuration as CodeDevOps Meetup Bern
 
3d mit Python (PythonCamp)
3d mit Python (PythonCamp)3d mit Python (PythonCamp)
3d mit Python (PythonCamp)Martin Christen
 
Java magazin9 2012_wls 12c_das_dutzend_ist_voll
Java magazin9 2012_wls 12c_das_dutzend_ist_vollJava magazin9 2012_wls 12c_das_dutzend_ist_voll
Java magazin9 2012_wls 12c_das_dutzend_ist_vollWolfgang Weigend
 
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer InfrastrukturContinuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer InfrastrukturQAware GmbH
 
TYPO3 CMS 7.2 - Die Neuerungen - pluswerk
TYPO3 CMS 7.2 - Die Neuerungen - pluswerkTYPO3 CMS 7.2 - Die Neuerungen - pluswerk
TYPO3 CMS 7.2 - Die Neuerungen - pluswerkdie.agilen GmbH
 
node.js - Eine kurze Einführung
node.js - Eine kurze Einführungnode.js - Eine kurze Einführung
node.js - Eine kurze Einführungnodeio
 
OSMC 2012 | Performance graphing mit inGraph by Eric Lippmann
OSMC 2012 | Performance graphing mit inGraph by Eric LippmannOSMC 2012 | Performance graphing mit inGraph by Eric Lippmann
OSMC 2012 | Performance graphing mit inGraph by Eric LippmannNETWAYS
 
Abläufe mit PHP und Phing automatisieren
Abläufe mit PHP und Phing automatisierenAbläufe mit PHP und Phing automatisieren
Abläufe mit PHP und Phing automatisierenChristian Münch
 
Lotus Notes SAP Integration Wünsch AG
Lotus Notes SAP Integration Wünsch AGLotus Notes SAP Integration Wünsch AG
Lotus Notes SAP Integration Wünsch AGWünsch AG
 
Jalimo Slides Linuxtag2007
Jalimo Slides Linuxtag2007Jalimo Slides Linuxtag2007
Jalimo Slides Linuxtag2007smancke
 
Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)
Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)
Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)nwilbert
 
Ajax in domino web-anwendungen - der nächste schritt
Ajax in domino web-anwendungen - der nächste schrittAjax in domino web-anwendungen - der nächste schritt
Ajax in domino web-anwendungen - der nächste schrittdominion
 
Textanalyse mit UIMA und Hadoop
Textanalyse mit UIMA und HadoopTextanalyse mit UIMA und Hadoop
Textanalyse mit UIMA und Hadoopinovex GmbH
 
Migration einer Oracle Forms Anwendung - Rhenus Freight Network GmbH
Migration einer Oracle Forms Anwendung - Rhenus Freight Network GmbHMigration einer Oracle Forms Anwendung - Rhenus Freight Network GmbH
Migration einer Oracle Forms Anwendung - Rhenus Freight Network GmbHitemis AG
 

Similar a Cepicky pywps (20)

Openshift
OpenshiftOpenshift
Openshift
 
Python in der Luft- und Raumfahrt
Python in der Luft- und RaumfahrtPython in der Luft- und Raumfahrt
Python in der Luft- und Raumfahrt
 
Geoinformatik-Kolloquium Juni 2012: High Performance Computing Cluster GIS
Geoinformatik-Kolloquium Juni 2012: High Performance Computing Cluster GISGeoinformatik-Kolloquium Juni 2012: High Performance Computing Cluster GIS
Geoinformatik-Kolloquium Juni 2012: High Performance Computing Cluster GIS
 
Config as Code: Der Weg zu Configuration as Code
Config as Code: Der Weg zu Configuration as CodeConfig as Code: Der Weg zu Configuration as Code
Config as Code: Der Weg zu Configuration as Code
 
3d mit Python (PythonCamp)
3d mit Python (PythonCamp)3d mit Python (PythonCamp)
3d mit Python (PythonCamp)
 
Java magazin9 2012_wls 12c_das_dutzend_ist_voll
Java magazin9 2012_wls 12c_das_dutzend_ist_vollJava magazin9 2012_wls 12c_das_dutzend_ist_voll
Java magazin9 2012_wls 12c_das_dutzend_ist_voll
 
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer InfrastrukturContinuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
 
Node.js Security
Node.js SecurityNode.js Security
Node.js Security
 
TYPO3 CMS 7.2 - Die Neuerungen - pluswerk
TYPO3 CMS 7.2 - Die Neuerungen - pluswerkTYPO3 CMS 7.2 - Die Neuerungen - pluswerk
TYPO3 CMS 7.2 - Die Neuerungen - pluswerk
 
node.js - Eine kurze Einführung
node.js - Eine kurze Einführungnode.js - Eine kurze Einführung
node.js - Eine kurze Einführung
 
OSMC 2012 | Performance graphing mit inGraph by Eric Lippmann
OSMC 2012 | Performance graphing mit inGraph by Eric LippmannOSMC 2012 | Performance graphing mit inGraph by Eric Lippmann
OSMC 2012 | Performance graphing mit inGraph by Eric Lippmann
 
Abläufe mit PHP und Phing automatisieren
Abläufe mit PHP und Phing automatisierenAbläufe mit PHP und Phing automatisieren
Abläufe mit PHP und Phing automatisieren
 
Lotus Notes SAP Integration Wünsch AG
Lotus Notes SAP Integration Wünsch AGLotus Notes SAP Integration Wünsch AG
Lotus Notes SAP Integration Wünsch AG
 
Was ist neu in .NET 4.5?
Was ist neu in .NET 4.5?Was ist neu in .NET 4.5?
Was ist neu in .NET 4.5?
 
Jalimo Slides Linuxtag2007
Jalimo Slides Linuxtag2007Jalimo Slides Linuxtag2007
Jalimo Slides Linuxtag2007
 
Automatisierung mit grunt
Automatisierung mit gruntAutomatisierung mit grunt
Automatisierung mit grunt
 
Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)
Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)
Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)
 
Ajax in domino web-anwendungen - der nächste schritt
Ajax in domino web-anwendungen - der nächste schrittAjax in domino web-anwendungen - der nächste schritt
Ajax in domino web-anwendungen - der nächste schritt
 
Textanalyse mit UIMA und Hadoop
Textanalyse mit UIMA und HadoopTextanalyse mit UIMA und Hadoop
Textanalyse mit UIMA und Hadoop
 
Migration einer Oracle Forms Anwendung - Rhenus Freight Network GmbH
Migration einer Oracle Forms Anwendung - Rhenus Freight Network GmbHMigration einer Oracle Forms Anwendung - Rhenus Freight Network GmbH
Migration einer Oracle Forms Anwendung - Rhenus Freight Network GmbH
 

Más de Jachym Cepicky

Python testing-frameworks overview
Python testing-frameworks overviewPython testing-frameworks overview
Python testing-frameworks overviewJachym Cepicky
 
What is the price of open source
What is the price of open sourceWhat is the price of open source
What is the price of open sourceJachym Cepicky
 
Testing web application with Python
Testing web application with PythonTesting web application with Python
Testing web application with PythonJachym Cepicky
 
Danube hack 2015 - Open (-data, -communities)
Danube hack 2015 - Open (-data, -communities)Danube hack 2015 - Open (-data, -communities)
Danube hack 2015 - Open (-data, -communities)Jachym Cepicky
 
Push it through the wire
Push it through the wirePush it through the wire
Push it through the wireJachym Cepicky
 
How Prague is opening data
How Prague is opening dataHow Prague is opening data
How Prague is opening dataJachym Cepicky
 
Webgis, Cloud computing, OGC OWS
Webgis, Cloud computing, OGC OWSWebgis, Cloud computing, OGC OWS
Webgis, Cloud computing, OGC OWSJachym Cepicky
 
Co může udělat vaše firma pro open source
Co může udělat vaše firma pro open sourceCo může udělat vaše firma pro open source
Co může udělat vaše firma pro open sourceJachym Cepicky
 
Otevřené standardy, Otevřená data, Otevřený software, Otevření lidé
Otevřené standardy, Otevřená data, Otevřený software, Otevření lidéOtevřené standardy, Otevřená data, Otevřený software, Otevření lidé
Otevřené standardy, Otevřená data, Otevřený software, Otevření lidéJachym Cepicky
 
Úvod do otevřená geoinfrastruktury
Úvod do otevřená geoinfrastrukturyÚvod do otevřená geoinfrastruktury
Úvod do otevřená geoinfrastrukturyJachym Cepicky
 
Sdílené intelektuální spoluvlastnictví
Sdílené intelektuální spoluvlastnictvíSdílené intelektuální spoluvlastnictví
Sdílené intelektuální spoluvlastnictvíJachym Cepicky
 
Co brání většímu rozšíření open source nástrojů
Co brání většímu rozšíření open source nástrojůCo brání většímu rozšíření open source nástrojů
Co brání většímu rozšíření open source nástrojůJachym Cepicky
 
Open Source JavaScript Mapping Framework
Open Source JavaScript Mapping FrameworkOpen Source JavaScript Mapping Framework
Open Source JavaScript Mapping FrameworkJachym Cepicky
 
PyWPS at COST WPS Workshop
PyWPS at COST WPS WorkshopPyWPS at COST WPS Workshop
PyWPS at COST WPS WorkshopJachym Cepicky
 

Más de Jachym Cepicky (20)

Switch from shapefile
Switch from shapefileSwitch from shapefile
Switch from shapefile
 
Python testing-frameworks overview
Python testing-frameworks overviewPython testing-frameworks overview
Python testing-frameworks overview
 
What is the price of open source
What is the price of open sourceWhat is the price of open source
What is the price of open source
 
PyWPS-4.0.0
PyWPS-4.0.0PyWPS-4.0.0
PyWPS-4.0.0
 
Testing web application with Python
Testing web application with PythonTesting web application with Python
Testing web application with Python
 
Danube hack 2015 - Open (-data, -communities)
Danube hack 2015 - Open (-data, -communities)Danube hack 2015 - Open (-data, -communities)
Danube hack 2015 - Open (-data, -communities)
 
Push it through the wire
Push it through the wirePush it through the wire
Push it through the wire
 
How Prague is opening data
How Prague is opening dataHow Prague is opening data
How Prague is opening data
 
Webgis, Cloud computing, OGC OWS
Webgis, Cloud computing, OGC OWSWebgis, Cloud computing, OGC OWS
Webgis, Cloud computing, OGC OWS
 
Co může udělat vaše firma pro open source
Co může udělat vaše firma pro open sourceCo může udělat vaše firma pro open source
Co může udělat vaše firma pro open source
 
Otevřené standardy, Otevřená data, Otevřený software, Otevření lidé
Otevřené standardy, Otevřená data, Otevřený software, Otevření lidéOtevřené standardy, Otevřená data, Otevřený software, Otevření lidé
Otevřené standardy, Otevřená data, Otevřený software, Otevření lidé
 
Úvod do otevřená geoinfrastruktury
Úvod do otevřená geoinfrastrukturyÚvod do otevřená geoinfrastruktury
Úvod do otevřená geoinfrastruktury
 
PyWPS Status report
PyWPS Status reportPyWPS Status report
PyWPS Status report
 
Geosense Geoportal
Geosense GeoportalGeosense Geoportal
Geosense Geoportal
 
Cepicky pywps4
Cepicky pywps4Cepicky pywps4
Cepicky pywps4
 
Sdílené intelektuální spoluvlastnictví
Sdílené intelektuální spoluvlastnictvíSdílené intelektuální spoluvlastnictví
Sdílené intelektuální spoluvlastnictví
 
Co brání většímu rozšíření open source nástrojů
Co brání většímu rozšíření open source nástrojůCo brání většímu rozšíření open source nástrojů
Co brání většímu rozšíření open source nástrojů
 
Open Source JavaScript Mapping Framework
Open Source JavaScript Mapping FrameworkOpen Source JavaScript Mapping Framework
Open Source JavaScript Mapping Framework
 
PyWPS at COST WPS Workshop
PyWPS at COST WPS WorkshopPyWPS at COST WPS Workshop
PyWPS at COST WPS Workshop
 
Cepicky osgeocz
Cepicky osgeoczCepicky osgeocz
Cepicky osgeocz
 

Cepicky pywps

  • 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