WPS

Aus Geoinformation HSR
Zur Navigation springen Zur Suche springen

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:

  • Web Map Service (WMS)
  • Web Feature Service (WFS)


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:

  1. Der Request GetCapabilities liefert als Response Metadaten in XML zurück.
  2. Der Request DescribeProcess liefert eine Beschreibung eines Prozesses in XML zurück, einschliesslich der Ein-und Ausgaben.
  3. 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

Frei zugaengliche WPS-Services

WPS an der HSR:

Suchen von WPS auf Suchmaschinen, Katalogen und Registries:

Liste von funktionierenden WPS-Services:

WPS-Services, die nicht funktionieren (QGIS WPS-Plugin gibt Error...):

WPS Server-Software

WPS Server-Software Open Source:

=> 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:

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

Weblinks