WPS: Unterschied zwischen den Versionen

Aus Geoinformation HSR
Wechseln zu: Navigation, Suche
(Die Seite wurde neu angelegt: Der OGC Web Processing Service (WPS) bieten einen vereinheitlichten Zugriff auf GIS-Berechnungen (d.h. eine räumliche Datenverarbeitung) über eine Maschine-Maschine-S...)
 
K (Frei zugaengliche WPS-Services)
 
(41 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
Der OGC Web Processing Service (WPS) bieten einen vereinheitlichten Zugriff auf GIS-Berechnungen (d.h. eine räumliche Datenverarbeitung) über eine Maschine-Maschine-Service-Schnittstelle sein mit allen seinen Ein-und Ausgaben. WPS macht es möglich, Prozesse zu veröffentlichen, zu finden und zu binden und zwar in einer standardisierten und damit interoperablen Art.  
+
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]].
  
WPS unterstützt GET, POST und SOAP. Obwohl WPS speziell für die Arbeit mit räumlich referenzierten Daten konzipiert wurde, ist die Spezifikation geeignet für jede Art von Daten.
+
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:
 
WPS definiert drei Operationen:
# GetCapabilities liefert Service-Level-Metadaten
+
# Der Request ''GetCapabilities'' liefert als Response Metadaten in XML zurück.
# DescribeProcess liefert eine Beschreibung eines Prozesses, einschliesslich der Ein-und Ausgänge
+
# Der Request ''DescribeProcess'' liefert eine Beschreibung eines Prozesses in XML zurück, einschliesslich der Ein-und Ausgaben.
# Execute liefert die Ausgabe(n) eines Prozesses
+
# 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: [http://geoprocessing.info/wpsdoc/ geoprocessing.info].
 +
 
 +
== Beispiele ==
 +
 
 +
* kappasys.ch
 +
** GetCapabilities: http://www.kappasys.ch/pywps/pywps.cgi?REQUEST=GetCapabilities&SERVICE=WPS
 +
 
 +
== Frei zugaengliche WPS-Services ==
  
Siehe auch:
+
WPS an der HSR:
* Web Map Service ([[WMS]])
+
* [http://isochrone.ch isochrone.ch] - Erreichbarkeit mit dem öffentlichen Verkehr. [http://www.youtube.com/watch?v=VndIng2yPLs&feature=plcp Instruktions-Video].
* Web Feature Service ([[WFS]])
+
 
 +
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''
 +
* [http://openregistry.info/registry/service?REQUEST=Find&COLLECTION=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): <s>http://www.sogis1.so.ch/wps</s>
 +
* deegree (DE): http://demo.deegree.org/deegree-wps
 +
* Agriculture and Agri-Food Canada: <s>http://ngistc1.agr.gc.ca/geoproc2/servlet/SpatialOperation</s>
 +
* 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 [http://lists.wald.intevation.org/mailman/listinfo/pywps-devel pywps-devel])
 +
** [http://www.kralidis.ca/blog/2010/06/25/geoprocessing-with-ogr-and-pywps/ Blog zu 'Geoprocessing with OGR and PyWPS']
 +
** [http://les-ejk.cz/skoleni/pywps-de/ 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 [http://external.opengis.org/twiki_public/bin/view/WPS/ComplianceTestingResults2010 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 [http://wiki.postgresql.org/images/9/98/PGDay2010_-_ILMSraster.pdf 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 ==
 +
* http://de.wikipedia.org/wiki/Web_Processing_Service

Aktuelle Version vom 11. September 2012, 09:22 Uhr

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