WPS: Unterschied zwischen den Versionen

Aus Geoinformation HSR
Wechseln zu: Navigation, Suche
(Kurzbeschreibung)
K (Frei zugaengliche WPS-Services)
 
(36 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
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.  
+
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]].
  
== Kurzbeschreibung ==
+
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 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.
  
Zeile 9: Zeile 14:
 
# Der Request ''Execute'' löst den Prozess aus, dessen angekündigten Response .
 
# Der Request ''Execute'' löst den Prozess aus, dessen angekündigten Response .
  
WPS lässt sich beispielsweise mit den Open Source-Projekten PyWPS (siehe [[Python]]) und [[GRASS]] recht einfach realisieren.
+
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 ==
 +
 
 +
WPS an der HSR:
 +
* [http://isochrone.ch isochrone.ch] - Erreichbarkeit mit dem öffentlichen Verkehr. [http://www.youtube.com/watch?v=VndIng2yPLs&feature=plcp 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''
 +
* [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 ==
 
== Weblinks ==
 
* http://de.wikipedia.org/wiki/Web_Processing_Service
 
* 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