WPS-操作

本节提供有关WPS服务器提供的操作类型的详细信息。

WPS操作

Operation

Description

GetCapabilities

返回列出WPS服务提供的进程的服务元数据。

DescribeProcess

返回由WPS提供的进程的详细描述,包括输入和输出的描述。

Execute

运行由服务器实现的指定进程,使用提供的输入参数值并返回生成的输出值。

GetStatus (可选)

返回异步执行的作业的状态。

GetResult (可选)

返回异步调用的已完成处理作业的结果。

Dismiss (可选)

允许客户端终止异步处理作业。

以下是可以发送到WPS提供的操作的请求的示例。可以使用诸如 CURLwgetJMeter .

GetCapabilities

请求

WPS服务器响应 GetCapabilities 请求返回有关服务的元数据,包括支持的操作和进程。描述每个过程的附加元数据也可以从功能文档中引用。

通过HTTP Get方法发送的GetCapabilities请求的示例如下:

http://geoprocessing.demo.52north.org:8080/wps/WebProcessingService?
service=WPS&
version=2.0.0&
request=GetCapabilities

链接到 GetCapabilities 请求是 这里

有三个参数(和值)被传递到WPS服务器, SERVICE=WPSVERSION=2.0.0REQUEST=GetCapabilities .

  • 这个 SERVICE 参数告诉服务器WPS请求即将到来。

  • 这个 VERSION 参数告诉服务器正在请求哪个版本的服务。

  • 这个 REQUEST 参数告诉服务器请求的操作是 GetCapabilities 操作。

WPS标准要求请求始终包含这三个参数。执行下表和请求所需的参数和值。

GetCapabilities操作的参数

Parameter

Required

Description

SERVICE

是的

服务名称。值是 WPS

VERSION

是的

服务版本。价值是 1.0.02.0.02.0.1

REQUEST

是的

操作名称。值是 GetCapabilities

响应

响应是一个功能XML文档,其中包含对WPS服务的详细描述。它包含三个主要部分:

章节能力文件

ServiceIdentification

包含服务元数据,如服务名称、关键字和操作服务器的组织的联系信息。

ServiceProvider

标识提供服务的实体、组织或个人。

OperationsMetadata

列出可从服务请求的可用操作及其终结点。

Contents

列出可从服务请求的可用进程。

下面显示了一个来自WPS的GetCapabilities响应示例,为了简洁起见,省略了一些部分。

<wps:Capabilities xmlns:wps="http://www.opengis.net/wps/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows/2.0" xmlns:xlin="http://www.w3.org/1999/xlink" xsi:schemaLocation="http://www.opengis.net/wps/2.0 http://schemas.opengis.net/wps/2.0/wps.xsd" service="WPS" version="2.0.0">
  <ows:ServiceIdentification>
    <ows:Title>52°North WPS 4.0.0-beta.4-SNAPSHOT</ows:Title>
    <ows:Abstract>Service based on the 52°North implementation of WPS</ows:Abstract>
    <ows:Keywords>
      <ows:Keyword>WPS</ows:Keyword>
      <ows:Keyword>geospatial</ows:Keyword>
      <ows:Keyword>geoprocessing</ows:Keyword>
    </ows:Keywords>
    <ows:ServiceType>WPS</ows:ServiceType>
    <ows:ServiceTypeVersion>1.0.0</ows:ServiceTypeVersion>
    <ows:ServiceTypeVersion>2.0.0</ows:ServiceTypeVersion>
    <ows:Fees>NONE</ows:Fees>
    <ows:AccessConstraints>NONE</ows:AccessConstraints>
  </ows:ServiceIdentification>
  <ows:ServiceProvider>
    <ows:ProviderName>52North</ows:ProviderName>
    <ows:ProviderSite xlin:href="http://www.52north.org/"/>
    <ows:ServiceContact>
      <ows:IndividualName>Your name</ows:IndividualName>
      <ows:ContactInfo>
        <ows:Address>
          <ows:DeliveryPoint/>
          <ows:City/>
          <ows:AdministrativeArea/>
          <ows:PostalCode/>
          <ows:Country/>
          <ows:ElectronicMailAddress/>
        </ows:Address>
      </ows:ContactInfo>
    </ows:ServiceContact>
  </ows:ServiceProvider>
  <ows:OperationsMetadata>
    <ows:Operation name="GetCapabilities">
      <ows:DCP>
        <ows:HTTP>
          <ows:Get xlin:href="http://geoprocessing.demo.52north.org:8080/wps/WebProcessingService?"/>
          <ows:Post xlin:href="http://geoprocessing.demo.52north.org:8080/wps/WebProcessingService"/>
        </ows:HTTP>
      </ows:DCP>
    </ows:Operation>
    <ows:Operation name="DescribeProcess">
      <ows:DCP>
        <ows:HTTP>
          <ows:Get xlin:href="http://geoprocessing.demo.52north.org:8080/wps/WebProcessingService?"/>
          <ows:Post xlin:href="http://geoprocessing.demo.52north.org:8080/wps/WebProcessingService"/>
        </ows:HTTP>
      </ows:DCP>
    </ows:Operation>
    <ows:Operation name="Execute">
      <ows:DCP>
        <ows:HTTP>
          <ows:Post xlin:href="http://geoprocessing.demo.52north.org:8080/wps/WebProcessingService"/>
        </ows:HTTP>
      </ows:DCP>
    </ows:Operation>
  </ows:OperationsMetadata>
  <ows:Languages>
    <ows:Language>en-US</ows:Language>
  </ows:Languages>
  <wps:Contents>
    <wps:ProcessSummary processVersion="1.1.0" jobControlOptions="sync-execute async-execute" outputTransmission="value reference">
      <ows:Title>org.n52.wps.server.algorithm.SimpleBufferAlgorithm</ows:Title>
      <ows:Identifier>org.n52.wps.server.algorithm.SimpleBufferAlgorithm</ows:Identifier>
      <ows:Metadata xlin:role="Process description" xlin:href="http://geoprocessing.demo.52north.org:8080/wps/WebProcessingService?service=WPS&amp;request=DescribeProcess&amp;version=2.0.0&amp;identifier=org.n52.wps.server.algorithm.SimpleBufferAlgorithm"/>
    </wps:ProcessSummary>
    <wps:ProcessSummary processVersion="1.0.0" jobControlOptions="sync-execute async-execute" outputTransmission="value reference">
      <ows:Title>org.n52.wps.server.algorithm.coordinatetransform.CoordinateTransformAlgorithm</ows:Title>
      <ows:Identifier>org.n52.wps.server.algorithm.coordinatetransform.CoordinateTransformAlgorithm</ows:Identifier>
      <ows:Metadata xlin:role="Process description" xlin:href="http://geoprocessing.demo.52north.org:8080/wps/WebProcessingService?service=WPS&amp;request=DescribeProcess&amp;version=2.0.0&amp;identifier=org.n52.wps.server.algorithm.coordinatetransform.CoordinateTransformAlgorithm"/>
    </wps:ProcessSummary>
  </wps:Contents>
</wps:Capabilities>

DescribeProcess

返回服务提供的进程的详细描述。请注意,此操作可以通过单个调用检索一个或多个进程的描述。

请求

下面是一个DescribeProcess请求的示例,该请求在通过httppost方法发送时返回服务提供的所有进程的描述。对于示例服务器,请求被发送到端点<http://geoprocessing.demo.52north.org:8080/wps/WebProcessingService>。

<wps:DescribeProcess service="WPS" version="2.0.0"
  xmlns:ows="http://www.opengis.net/ows/2.0"
  xmlns:wps="http://www.opengis.net/wps/2.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.opengis.net/wps/2.0 http://schemas.opengis.net/wps/2.0/wps.xsd ">
  <ows:Identifier>all</ows:Identifier>
</wps:DescribeProcess>

This is a link to the equivalent request sent through the HTTP Get method.

响应

响应是一个XML文档,详细描述了服务提供的流程。注意输入和输出数据类型是如何用mime类型、模式和允许出现的次数来描述的。这一级别的细节是必需的,以确保一个进程准确地识别它正在接收的数据类型。在将输入与声明的mime类型匹配时,WPS实现的严格程度由开发人员决定。但是,为了确保对所提供的WPS服务的信任并减少调用过程中出错的风险,建议服务强制声明的mime类型。

<wps:ProcessOfferings xmlns:wps="http://www.opengis.net/wps/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows/2.0" xsi:schemaLocation="http://www.opengis.net/wps/2.0 http://schemas.opengis.net/wps/2.0/wps.xsd">
  <wps:ProcessOffering processVersion="1.1.0" jobControlOptions="sync-execute async-execute" outputTransmission="value reference">
    <wps:Process>
      <ows:Title>org.n52.wps.server.algorithm.SimpleBufferAlgorithm</ows:Title>
      <ows:Identifier>org.n52.wps.server.algorithm.SimpleBufferAlgorithm</ows:Identifier>
      <wps:Input minOccurs="1" maxOccurs="1">
        <ows:Title>width</ows:Title>
        <ows:Identifier>width</ows:Identifier>
        <ns:LiteralData xmlns:ns="http://www.opengis.net/wps/2.0">
          <ns:Format default="true" mimeType="text/plain"/>
          <ns:Format mimeType="text/xml"/>
          <LiteralDataDomain>
            <ows:AnyValue/>
            <ows:DataType ows:reference="xs:double"/>
          </LiteralDataDomain>
        </ns:LiteralData>
      </wps:Input>
      <wps:Input minOccurs="1" maxOccurs="1">
        <ows:Title>data</ows:Title>
        <ows:Identifier>data</ows:Identifier>
        <ns:ComplexData xmlns:ns="http://www.opengis.net/wps/2.0">
          <ns:Format default="true" mimeType="application/vnd.google-earth.kml+xml" schema="http://schemas.opengis.net/kml/2.2.0/ogckml22.xsd"/>
          <ns:Format mimeType="text/xml; subtype=gml/3.1.1" schema="http://schemas.opengis.net/gml/3.1.1/base/feature.xsd"/>
        </ns:ComplexData>
      </wps:Input>
      <wps:Output>
        <ows:Title>result</ows:Title>
        <ows:Identifier>result</ows:Identifier>
        <ns:ComplexData xmlns:ns="http://www.opengis.net/wps/2.0">
          <ns:Format default="true" mimeType="application/vnd.google-earth.kml+xml" schema="http://schemas.opengis.net/kml/2.2.0/ogckml22.xsd"/>
          <ns:Format mimeType="application/x-zipped-shp"/>
          <ns:Format mimeType="text/xml; subtype=gml/3.1.1" schema="http://schemas.opengis.net/gml/3.1.1/base/feature.xsd"/>
          <ns:Format mimeType="text/xml; subtype=gml/3.2.1" schema="http://schemas.opengis.net/gml/3.2.1/base/feature.xsd"/>
        </ns:ComplexData>
      </wps:Output>
    </wps:Process>
  </wps:ProcessOffering>
</wps:ProcessOfferings>

执行

WPS服务器响应 执行 请求返回请求中标识的进程的输出。输入可以直接包含在 执行 使用web可访问资源请求或通过引用传递给进程。通常,如果输入是一个大文件,则建议通过引用传递输入数据。这意味着WPS可以从web可访问资源检索输入数据,而不必接收大的请求负载。

请求可以通过httpget或httppost发送。由于一些输入是GML,下面的示例使用httppost。

请求

以下请求调用 org.n52.wps.server.algorithm.SimpleBufferAlgorithm 过程。它通过引用接收输入数据。请注意,虽然本例中的第一个输入是对WFS的引用 GetFeature 请求时,第二个输入是指定缓冲区宽度的文本值“0.05”。这显示了在同一个进程中接受不同输入数据类型的能力(即,某些输入可能是地理空间数据,而其他输入可能不是)。

 <wps:Execute xmlns:wps="http://www.opengis.net/wps/2.0"
 xmlns:ows="http://www.opengis.net/ows/2.0" xmlns:xlink="http://www.w3.org/1999/xlink"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.opengis.net/wps/2.0 ../wps.xsd" service="WPS"
       version="2.0.0" response="document" mode="sync">
       <ows:Identifier>org.n52.wps.server.algorithm.SimpleBufferAlgorithm</ows:Identifier>
             <wps:Input id="data">
                      <wps:Reference schema="http://schemas.opengis.net/gml/3.1.1/base/feature.xsd" xlink:href="http://geoprocessing.demo.52north.org:8080/geoserver/wfs?SERVICE=WFS&amp;VERSION=1.0.0&amp;REQUEST=GetFeature&amp;TYPENAME=topp:tasmania_roads&amp;SRS=EPSG:4326&amp;OUTPUTFORMAT=GML3"/>
             </wps:Input>
 <wps:Input id="width">
    <wps:Data><wps:LiteralValue>0.05</wps:LiteralValue></wps:Data>
 </wps:Input>
      <wps:Output id="result" transmission="value"/>
</wps:Execute>

响应

输出可以XML响应文档的形式或任何其他格式返回。输出数据可以嵌入到响应文档中,也可以存储为web可访问的资源。因为 执行 设置为上述请求 sync 进程是同步调用的。

从上述请求得到的响应摘要如下所示。

<wps:Result xmlns:wps="http://www.opengis.net/wps/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/wps/2.0 http://schemas.opengis.net/wps/2.0/wps.xsd">
<wps:JobID>3a097ae3-d3c0-4ba4-8b85-e6a4af3fe636</wps:JobID>
  <wps:Output id="result">
    <wps:Data schema="http://schemas.opengis.net/kml/2.2.0/ogckml22.xsd" mimeType="application/vnd.google-earth.kml+xml">
      <kml:kml xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:kml="http://earth.google.com/kml/2.1">
        <kml:Document id="featureCollection">
          <kml:Placemark id="ID1">
            <kml:MultiGeometry>
              <kml:Polygon>
                <kml:outerBoundaryIs>
                  <kml:LinearRing>
                    <kml:coordinates>146.57855346804192,-41.201323558388665 146.64342790226314,-41.20524509998472 146.65545052760172,-41.207469488788114 146.6665738407718,-41.21254524781518 146.7890489128575,-41.287748008872335 146.81360198036376,-41.298092497969215  146.44470390635928,-41.19754809396683 146.45373301674724,-41.19373380981566 146.46333276523418,-41.19175430811803 146.4731342388694,-41.19168566001405 146.57855346804192,-41.201323558388665</kml:coordinates>
                  </kml:LinearRing>
                </kml:outerBoundaryIs>
              </kml:Polygon>
            </kml:MultiGeometry>
          </kml:Placemark>
          <kml:Placemark id="ID2">
            <kml:MultiGeometry>
              <kml:Polygon>
                <kml:outerBoundaryIs>
                  <kml:LinearRing>
                    <kml:coordinates>146.99490433143592,-43.3611141137045 147.0000918323004,-43.37843435045301 147.0019192637801,-43.38754567654801 147.00515426378007,-43.41827767654801 147.00521997262746,-43.428079170328616 147.00337224231984,-43.43770515031479 146.9996820800968,-43.44678569549397 146.994291296823,-43.45497184560737 146.98740705727656,-43.461949011496955 146.97929391892245,-43.46744906459044  147.032123580848,-43.29463771588537 147.02899786454023,-43.30636277236813 147.01726386454024,-43.33555677236813 147.01282892777223,-43.34410434310771 147.00683769376235,-43.351643225300926 146.99951238847504,-43.35789378784619 146.99490433143592,-43.3611141137045</kml:coordinates>
                  </kml:LinearRing>
              </kml:Polygon>
            </kml:MultiGeometry>
          </kml:Placemark>
      </kml:kml>
  </wps:Output>
</wps:Result>

当Execute元素中mode属性的值设置为 async 进程是异步调用的。下面是一个来自异步调用的示例响应。

<wps:StatusInfo xmlns:wps="http://www.opengis.net/wps/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/wps/2.0 http://schemas.opengis.net/wps/2.0/wps.xsd">
  <wps:JobID>45fa64bd-5ed6-4d69-863b-4402a6df641c</wps:JobID>
  <wps:Status>Accepted</wps:Status>
</wps:StatusInfo>

GetStatus

返回异步执行的作业的状态。

请求

请求接受从 执行 反应。

<wps:GetStatus service="WPS" version="2.0.0"
  xmlns:wps="http://www.opengis.net/wps/2.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.opengis.net/wps/2.0 ../wps.xsd ">
  <wps:JobID>336d5fa5-3bd6-4ee9-81ea-c6bccd2d443e</wps:JobID>
</wps:GetStatus>​​​​​​​​​​

响应

响应报告作业的状态。下面显示了一个示例响应。

<wps:StatusInfo xsi:schemaLocation="http://www.opengis.net/wps/2.0 http://schemas.opengis.net/wps/2.0/wps.xsd" xmlns:wps="http://www.opengis.net/wps/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <wps:JobID>336d5fa5-3bd6-4ee9-81ea-c6bccd2d443e</wps:JobID>
  <wps:Status>Succeeded</wps:Status>
</wps:StatusInfo>

GetResult

返回异步调用的已完成处理作业的结果。

请求

请求接受从 执行 反应。

<wps:GetResult service="WPS" version="2.0.0"
  xmlns:wps="http://www.opengis.net/wps/2.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.opengis.net/wps/2.0 ../wps.xsd ">
  <wps:JobID>336d5fa5-3bd6-4ee9-81ea-c6bccd2d443e</wps:JobID>
</wps:GetResult>​​​​​​​​​​​​​

响应

响应提供请求中标识的作业的输出。

<wps:Result xsi:schemaLocation="http://www.opengis.net/wps/2.0 http://schemas.opengis.net/wps/2.0/wps.xsd" xmlns:wps="http://www.opengis.net/wps/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <wps:JobID>336d5fa5-3bd6-4ee9-81ea-c6bccd2d443e</wps:JobID>
  <wps:Output id="result">
    <wps:Data schema="http://schemas.opengis.net/kml/2.2.0/ogckml22.xsd" mimeType="application/vnd.google-earth.kml+xml">
      <kml:kml xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:kml="http://earth.google.com/kml/2.1">
        <kml:Document id="featureCollection">
          <kml:Placemark id="ID1">
            <kml:MultiGeometry>
              <kml:Polygon>
                <kml:outerBoundaryIs>
                  <kml:LinearRing>
                    <kml:coordinates>146.57855346804192,-41.201323558388665 146.64342790226314,-41.20524509998472 146.65545052760172,-41.207469488788114 146.6665738407718,-41.21254524781518 146.7890489128575,-41.287748008872335 146.81360198036376,-41.298092497969215 146.82208938998681,-41.30267821480601 146.84599365099683,-41.31875219671369  146.45373301674724,-41.19373380981566 146.46333276523418,-41.19175430811803 146.4731342388694,-41.19168566001405 146.57855346804192,-41.201323558388665</kml:coordinates>
                  </kml:LinearRing>
                </kml:outerBoundaryIs>
              </kml:Polygon>
            </kml:MultiGeometry>
          </kml:Placemark>
          <kml:Placemark id="ID2">
            <kml:MultiGeometry>
              <kml:Polygon>
                <kml:outerBoundaryIs>
                  <kml:LinearRing>
                    <kml:coordinates>146.99490433143592,-43.3611141137045 147.0000918323004,-43.37843435045301 147.0019192637801,-43.38754567654801 147.00515426378007,-43.41827767654801 147.00521997262746,-43.428079170328616 147.00337224231984,-43.43770515031479 146.9996820800968,-43.44678569549397 146.994291296823,-43.45497184560737  148.09120661289265,-42.06815547459541 148.09679739523438,-42.076206359689074 148.10071010249564,-42.08519325681052 148.10279437153065,-42.094770804543295 148.1029701050493,-42.10457094309916 148.10123054971098,-42.114217058649416 148.07632854971098,-42.20194005864941</kml:coordinates>
                  </kml:LinearRing>
                </kml:outerBoundaryIs>
              </kml:Polygon>
            </kml:MultiGeometry>
          </kml:Placemark>
        </kml:Document>
      </kml:kml>
    </wps:Data>
  </wps:Output>
</wps:Result>

解除

WPS扩展可以提供此操作,以允许客户端指示服务器终止作业。

请求

请求接受从 执行 反应。

<wps:Dismiss service=“WPS” version=“2.0.0”
  xmlns:wps=“http://www.opengis.net/wps/2.0”
  xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
  xsi:schemaLocation="http://www.opengis.net/wps/2.0 ../wps.xsd ">
  <wps:JobID>FB6DD4B0-A2BB-11E3-A5E2-0800200C9A66</wps:JobID>
</wps:Dismiss>

响应

响应报告作业的状态。下面显示了一个示例响应。请注意,如果作业已成功终止,则状态报告为“已解除”。

<wps:StatusInfo xsi:schemaLocation="http://www.opengis.net/wps/2.0 http://schemas.opengis.net/wps/2.0/wps.xsd" xmlns:wps="http://www.opengis.net/wps/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <wps:JobID>FB6DD4B0-A2BB-11E3-A5E2-0800200C9A66</wps:JobID>
  <wps:Status>Dismissed</wps:Status>
</wps:StatusInfo>

例外情况

当客户机对WPS服务器的请求没有正确执行时,服务器需要报告异常。如果发生异常,服务器将返回包含异常详细信息的报告。

以下异常报告是向服务器发送不支持的功能类型请求时返回的内容的示例。

<ows:ExceptionReport xmlns:ows="http://www.opengis.net/ows/1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/ows/1.1 http://schemas.opengis.net/ows/1.1.0/owsExceptionReport.xsd" version="2.0.0">
<ows:Exception exceptionCode="NoSuchProcess" locator="MyIncorrectProcessName">
<ows:ExceptionText>One of the identifiers passed does not match with any of the processes offered by this server</ows:ExceptionText>
</ows:Exception>
</ows:ExceptionReport>