WPS
Die OGC Web Processing Service (WPS) Spezifikation von OGC und ISO 19100 bietet einen Zugriff auf räumliche Methoden übers Internet. Es ist eine Maschine-Maschine-Service-Schnittstelle, um Prozesse zu veröffentlichen, zu finden und zu binden und zwar in einer standardisierten Art. WPS is einer der wichtigen Standards für Geoprocessing.
Siehe auch:
Beschreibung
WPS unterstützt GET, POST und kann auch mit dem SOAP-Standard genutzt werden. Obwohl WPS speziell für die Arbeit mit räumlich referenzierten Daten konzipiert wurde, ist die Spezifikation geeignet für jede Art von Daten.
WPS definiert drei Operationen:
- Der Request GetCapabilities liefert als Response Metadaten in XML zurück.
- Der Request DescribeProcess liefert eine Beschreibung eines Prozesses in XML zurück, einschliesslich der Ein-und Ausgaben.
- Der Request Execute löst den Prozess aus, dessen angekündigten Response .
WPS lässt sich beispielsweise mit den Open Source-Projekten PyWPS (Python) und GRASS recht einfach realisieren.
Hier eine sehr informative Webseite zu WPS: geoprocessing.info.
Beispiele
- kappasys.ch
Frei zugaengliche WPS-Services
WPS an der HSR:
- isochrone.ch - Erreichbarkeit mit dem öffentlichen Verkehr. Instruktions-Video.
Suchen von WPS auf Suchmaschinen, Katalogen und Registries:
- G*-Suche:
- http://www.google.ch/search?q=%2BGetCapabilities+%2Bwps+%2B"SERVICE%3DWPS"
- oder: allinurl:service "request=getcapabilities" WPS
- openregistry.info
Liste von funktionierenden WPS-Services:
- Kappasys (CH): http://www.kappasys.ch/pywps/pywps.cgi (ausser Overlay und Buffer)
- 52north (DE): http://geoprocessing.demo.52north.org:8080/wps/
- brgm.fr (FR): http://swing.brgm.fr:8080/wps_1_0/WebProcessingService (mit 52north-SW)
- interessant: http://ows7.lat-lon.de/d3WPS_JTS/services
- interessant: http://maps.dwd.de/geoserver/ows
- interessant: http://zoo-project.org/cgi-bin-new/zoo_loader.cgi
- http://deegree3-demo.deegree.org/deegree-wps-demo/services
- http://www.geotests.net/cgi-bin/wps
- http://giv-wfs.uni-muenster.de:8080/52n-wps-webapp-2.0-RC6-SNAPSHOT/WebProcessingService
- http://geoportal.dlsi.uji.es/sextantewps100/WebProcessingService
- http://sedac.ciesin.columbia.edu/wps/WebProcessingService
- http://giv-uw.uni-muenster.de:8080/intamap/WebProcessingService
- http://dev.bnhelp.cz/cgi-bin/inspirewps
- http://apps.esdi-humboldt.cz/cgi-bin/pywps_3_0, http://apps.esdi-humboldt.cz/pywps/
- http://ccip.lat-lon.de/ccip-wps/services
WPS-Services, die nicht funktionieren (QGIS WPS-Plugin gibt Error...):
- SO!GIS (CH):
http://www.sogis1.so.ch/wps - deegree (DE): http://demo.deegree.org/deegree-wps
- Agriculture and Agri-Food Canada:
http://ngistc1.agr.gc.ca/geoproc2/servlet/SpatialOperation - http://geoprocessing.demo.52north.org:8080/wps_grass/WebProcessingService
- http://watzmann.geog.uni-heidelberg.de:8080/deegree/all/
- http://demo.deegree.org/deegree-wps/
- http://www.intamap.org/wps.py
- http://demo.deegree.org/deegree-wps/services?REQUEST=GetCapabilities&version=0.4.0&service=WPS
WPS Server-Software
WPS Server-Software Open Source:
- PyWPS (Python): http://pywps.wald.intevation.org/ (mailing list pywps-devel)
- Blog zu 'Geoprocessing with OGR and PyWPS'
- WPS Tutorial von Jachym Cepicky an der FOSSGIS 09.
- WPServer (Python): http://code.google.com/p/webprocessingserver/ , http://crschmidt.net/mapping/wpserverdemo/
- ZOO (C): http://www.zoo-project.org/
- Deegree (Java): http://demo.deegree.org/deegree-wps
- 52°North (Java): http://swing.brgm.fr:8080/wps_1_0/WebProcessingService
- (im alpha-Stadium/verlassen? http://plwps.sourceforge.net/ )
=> Siehe auch OGC's Compliance Testing Results 2010
Bemerkung SK: Es sollte mit nicht allzu grossem Aufwand möglich sein, eine Server-Software-Komponente für PostGIS für PyWPS oder ZOO zu schreiben (als 'Service Provider').
WPS Client-Software
WPS Client-Software Open Source:
- QGIS Client Plugin (Python): Siehe QGIS WPS Client
- WPSint (Java) - includes a generic client: http://wpsint.tigris.org/ (Version 0.4.0)
- 52 North WPS udig client plug-in (Java) for generic WPS processing: http://incubator.52north.org/twiki/bin/view/Processing/52nUdigWPSClient
- Legato WPS Client: lightweight web mapping client (JavaScript, OpenLayers). http://www.legato.net
Notizen zu PyWPS
PyWPS implementiert OGC WPS 1.0.0 in Python
- standardisiert die Beschreibung und Ausführung von entfernten Prozessen mit Fokus auf räumlichen Daten/Operationen
- Hat native GRASS-Schnittstelle
Hier zwei Beispiel-Prozesse
- Export: QGIS => Geo-DB
- Import: Geo-DB => QGIS
Beispiel (aus Christian Schwartze, PGDay.eu 2010):
class Process(WPSProcess): def __init__(self): WPSProcess.__init__(self, identifier = "import_img", title= "Grid Calculation", version = "0.1", statusSupported = True) self.img = self.addComplexInput(identifier = "img", title = "Raster image", abstract = „Raster file for import", maxmegabites = "500", formats=[{"mimeType":"image/tiff"}]) self.pyramids = self.addLiteralInput(identifier = "pyramids", title = "Number of pyramid levels", type = types.IntType) self.gridsize = self.addLiteralInput(identifier = "gridsize", title = "Block size in cells", type = types.IntType) […] self.debugOut = self.addLiteralOutput(identifier = "debug", title = "Debug Output", type = types.StringType) def execute(self): self.cmd("r.in.gdal input=%s output=img location=newloc" %(self.img.value)) self.cmd("g.gisenv set=LOCATION_NAME=newloc") […] self.cmd("r.to.vect input=img_mask output=img_mask_v feature=area") […] self.cmd("db.execute ‘ALTER TABLE ObereGera ADD COLUMN ax DOUBLE PRECISION’”) […] self.cmd(“awk ...”) […] self.debugOut.setValue("INFO: " + self.cmd("g.gisenv LOCATION_NAME")) return