Über WPS

http://opengeospatial.org/standards/wps

  • WPS beschreibt wie Klient eine Geoanalyze auf dem Server aufrufen kann.
  • Eine Geoanalyze ist als Prozess bezeichnet.
  • Aktuelle Version: 1.0.0

KVP vs. XML

KVP - Key-Value-Pairs, Standard CGI-Interface. Benutzt wird HTTP-GET:

key1=value1&key2=value2&key3=value3&...

XML wird über HTTP-POST benutzt. Komplizierter, aber mehr flexibel.

Drei Anfragen in WPS

GetCapabilities

  • Wer betriebt den Server
  • Liste von Prozessen

http://foo/wps?service=WPS&request=GetCapabilities

DescribeProcess

Mehr detaillierte Prozessbeschreibung * Inputs * Outputs

http://foo/wps?service=WPS&version=1.0.0&request=DescribeProcess&identifier= buffer

Execute

Prozess Aufruf

http://foo/wps?service=WPS&version=1.0.0&request=Execute&DataInputs=[data=http://localhost/temp/dem.xml;width=0.5]&responsedocument=[buffer=@mimeType=text/xml@asreference=true]

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<wps:Execute service="WPS" version="1.0.0" xmlns:wps="http://www.opengis.net/wps/1.0.0" xmlns:ows="http://www.opengis.net/ows/1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/wps/1.0.0/wpsExecute_request.xsd">
        <ows:Identifier>buffer</ows:Identifier>
        <wps:DataInputs>
                <wps:Input>
                        <ows:Identifier>data</ows:Identifier>
                        <ows:Title>Input</ows:Title>
                        <wps:Reference xlink:href="http://localhost/temp/gml.xml"/>
                </wps:Input>
                <wps:Input>
                        <ows:Identifier>width</ows:Identifier>
                        <ows:Title>buffer width</ows:Title>
                        <wps:Data>
                                <wps:LiteralData>0.5</wps:LiteralData>
                        </wps:Data>
                </wps:Input>
        </wps:DataInputs>
        <wps:ResponseForm>
                <wps:ResponseDocument wps:storeExecuteResponse="true" wps:status="false">
                    <wps:Output wps:asReference="true">
                        <ows:Identifier>buffer</ows:Identifier>
                    </wps:Output>
                </wps:ResponseDocument>
        </wps:ResponseForm>
</wps:Execute>

Drei Datentypen

Literal Data

Eine Textangabe

<wps:LiteralData>0.5</wps:LiteralData>

<wps:LiteralData>Hallo, Welt!</wps:LiteralData>

BoundingBox Data

<wps:BoundingBoxData ows:dimensions="2" ows:crs="epsg:4326">
    <ows:LowerCorner>X Y [Z]</ows:LowerCorner>
    <ows:UpperCorner>X Y [Z]</ows:UpperCorner>
</wps:BoundingBoxData>

Complex Data

Vektor- oder Rasterdaten

  • asReference =true es wird nur eine URL auf die Daten (Datei) übergibt
  • Vektordaten können direkter Teil der XML-Anfrage/Antwort werden (GML, KML, GeoRSS, ...) (asReference=false)
  • Rasterdaten sollten als Link übergeben werden (asReference=true)
<wps:ComplexData>
   <wps:Reference xlink:href="http://localhost/temp/gml.xml"/>
</wps:ComplexData>

oder:

 <wps:ComplexData>
    <ogr:FeatureCollection xmlns:ogr="http://ogr.maptools.org/" xmlns:gml="http://www.opengis.net/gml">
        <gml:boundedBy>
            <gml:Box>
            <gml:coord><gml:X>-559044.5280103994</gml:X><gml:Y>-1177026.734255324</gml:Y></gml:coord>
            <gml:coord><gml:X>-554835.891394174</gml:X><gml:Y>-1169621.932698363</gml:Y></gml:coord>
            </gml:Box>
        </gml:boundedBy>
        <gml:featureMember>
            <ogr:features fid="F0">
            <ogr:geometryProperty><gml:Polygon><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>-555043.324615493183956,-1174010.838661683257669 -554930.435787564259954,-1174159.005248340079561 -555085.657925966545008,-1174293.060731505509466 -555276.157823096611537,-1174201.338558813324198 -555191.491202149889432,-1174088.449730884516612 -555043.324615493183956,-1174010.838661683257669</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></ogr:geometr
    ...
</wps:ComplexData>