什么是动物园客户?

Zoo客户端是一个客户端JavaScript API,它提供了与 WPS 来自Web应用程序的服务器。它有助于将请求发送到任何符合WPS的服务器(例如 动物园内核 )并使用简单的javascript解析输出响应。

JavaScript

Zoo客户端依赖于现代的JavaScript库,可以无缝集成到新的或现有的Web平台或应用程序中。Zoo客户端通过使用JavaScript散列或对象提供的值扩展WPS特定模板中可用的标记来工作。它允许构建有效的WPS请求并将其发送到WPS服务器。它还提供了易于解析和重用输出XML响应的函数。阅读 next section 开始吧。

请参阅 ZOO-Client API documentation 用于访问最新文档。

模板

Zoo客户端使用逻辑较少 Mustache 用于创建格式良好的WPS请求的模板。请参阅 ZOO-Client API documentation 有关使用模板的函数的详细信息。

GetCapabilities

GetCapabilities 使用以下模板创建请求:

<wps:GetCapabilities xmlns:ows="http://www.opengis.net/ows/1.1" xmlns:wps="http://www.opengis.net/wps/1.0.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/1.0.0 ../wpsGetCapabilities_request.xsd" language="{{language}}" service="WPS">
    <wps:AcceptVersions>
        <ows:Version>1.0.0</ows:Version>
    </wps:AcceptVersions>
</wps:GetCapabilities>

DescribeProcess

DescribeProcess 使用以下模板创建请求:

<DescribeProcess xmlns="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 ../wpsDescribeProcess_request.xsd" service="WPS" version="1.0.0" language="{{language}}">
{{#identifiers}}
  <ows:Identifier>{{.}}</ows:Identifier>
{{/identifiers}}
</DescribeProcess>

执行

执行 使用更复杂的模板创建请求,如下所示:

<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" language="{{language}}">
  <!-- template-version: 0.21 -->
  <ows:Identifier>{{Identifier}}</ows:Identifier>
  <wps:DataInputs>
{{#DataInputs}}
{{#is_literal}}
    <wps:Input>
      <ows:Identifier>{{identifier}}</ows:Identifier>
      <wps:Data>
        <wps:LiteralData{{#dataType}} dataType="{{dataType}}"{{/dataType}}>{{value}}</wps:LiteralData>
      </wps:Data>
    </wps:Input>
{{/is_literal}}
{{#is_bbox}}
    <wps:Input>
      <ows:Identifier>{{identifier}}</ows:Identifier>
      <wps:Data>
        <wps:BoundingBoxData ows:crs="{{crs}}" ows:dimensions="{{dimension}}">
          <ows:LowerCorner>{{lowerCorner}}</ows:LowerCorner>
          <ows:UpperCorner>{{upperCorner}}</ows:UpperCorner>
        </wps:BoundingBoxData>
      </wps:Data>
    </wps:Input>
{{/is_bbox}}
{{#is_complex}}
{{#is_reference}}
{{#is_get}}
    <wps:Input>
      <ows:Identifier>{{identifier}}</ows:Identifier>
      <wps:Reference xlink:href="{{href}}"{{#schema}} schema="{{shema}}"{{/schema}}{{#mimeType}} mimeType="{{mimeType}}"{{/mimeType}}{{#encoding}} encoding="{{encoding}}"{{/encoding}}/>
    </wps:Input>
{{/is_get}}
{{#is_post}}
    <wps:Input>
      <ows:Identifier>{{identifier}}</ows:Identifier>
      <wps:Reference xlink:href="{{href}}" method="{{method}}" {{#schema}} schema="{{shema}}"{{/schema}}{{#mimeType}} mimeType="{{mimeType}}"{{/mimeType}}{{#encoding}} encoding="{{encoding}}"{{/encoding}}>
{{#headers}}
        <wps:Header key="{{key}}" value="{{value}}" />
{{/headers}}
        <wps:Body>{{{value}}}</wps:Body>
      </wps:Reference>
    </wps:Input>
{{/is_post}}
{{/is_reference}}
{{^is_reference}}
    <wps:Input>
      <ows:Identifier>{{identifier}}</ows:Identifier>
      <wps:Data>
        <wps:ComplexData{{#schema}} schema="{{shema}}"{{/schema}}{{#mimeType}} mimeType="{{mimeType}}"{{/mimeType}}{{#encoding}} encoding="{{encoding}}"{{/encoding}}>{{#is_XML}}{{{value}}}{{/is_XML}}{{^is_XML}}<![CDATA[{{{value}}}]]>{{/is_XML}}</wps:ComplexData>
      </wps:Data>
    </wps:Input>
{{/is_reference}}
{{/is_complex}}
{{/DataInputs}}
  </wps:DataInputs>
  <wps:ResponseForm>
{{#RawDataOutput}}
{{#DataOutputs}}
    <wps:RawDataOutput {{#mimeType}}mimeType="{{mimeType}}"{{/mimeType}}>
      <ows:Identifier>{{identifier}}</ows:Identifier>
    </wps:RawDataOutput>
{{/DataOutputs}}
{{/RawDataOutput}}
{{^RawDataOutput}}
    <wps:ResponseDocument{{#storeExecuteResponse}} storeExecuteResponse="{{storeExecuteResponse}}"{{/storeExecuteResponse}}{{#lineage}} lineage="{{lineage}}"{{/lineage}}{{#status}} status="{{status}}"{{/status}}>
{{#DataOutputs}}
{{#is_literal}}
      <wps:Output{{#dataType}} dataType="{{dataType}}"{{/dataType}}{{#uom}} uom="{{uom}}"{{/uom}}>
        <ows:Identifier>{{identifier}}</ows:Identifier>
      </wps:Output>
{{/is_literal}}
{{^is_literal}}
      <wps:Output{{#asReference}} asReference="{{asReference}}"{{/asReference}}{{#schema}} schema="{{schema}}"{{/schema}}{{#mimeType}} mimeType="{{mimeType}}"{{/mimeType}}{{#encoding}} encoding="{{encoding}}"{{/encoding}}>
        <ows:Identifier>{{identifier}}</ows:Identifier>
      </wps:Output>
{{/is_literal}}
{{/DataOutputs}}
    </wps:ResponseDocument>
{{/RawDataOutput}}
  </wps:ResponseForm>
</wps:Execute>