Skip to content

WPS:KVP方式的execute请求

zzpwelkin edited this page Apr 2, 2012 · 1 revision

KVP方式的Execute

一个完整的KVP请求实例

http://localhost/cgi-bin/pywps.cgi?version=1.0.0&service=WPS&request=execute&identifier=complexVector&datainputs=indata=http://localhost/a.gml@Schema=http://localhost/a.xsd&responsedocument=outdata

目前输入的URL还只能是一些服务器上的数据,如上面的http://localhost/a.gml,a.gml数据在apache服务器的/usr/local/apache/htdocs目录中

一个Execute请求中,用户必须指定:

1. 处理标识符
2. 在DescribeProcess中定义的输入变量
3. 版本和语言
4. 输出类型
	a) 存储在服务器(Stored in the server)
	b) 被包含在响应的XML中
	c)单一输出的原始响应,把结果丢给用户(列如一副影像) 
5. 是否服务需要返回状态文档(同步或非同步调用)
6. 是否输入数据应该在响应文档中返回

要注意的是:Execute返回的ResponseDocument的一个缺点是将返回所有的输出,用户需要制定必须返回的输出,如...responsedocement=out1;out2;...

请求方式:

1. KVP执行请求 
    KVP和HTTP GET需要准循下面的协议向导和编码系统来执行一个请求。
KVP输入应该准循如下的编码规则
	1) 分号(;)用来分开多个输入
	2) 等号(=)将输入名和它的值分开以,将属性名和他的值分开
	3) at(@)符号将属性值和他的属性分开,属性之间的分离
	4) 所有的域值和属性值应该用标准URLs编码编码
	5) pyWPS支持用[ ]以 datainputs=[input1=...;input2=...;... ]的方式对输入的数据进行封装

一个有3个LiteralData输入的KVP执行请求例子如下: http://apps.esdi-humboldt.cz/pywps/?service=WPS&version=1.0.0&request=Execute&identifier=literalprocess&datainputs=int=1;float=3.2;zeroset=0;string=spam&storeExecuteResponse=false@lineage=true@status=false 同DescribeProcess一样,服务(service)和版本(version)是必有的参数。 像storeExecute或status这样的参数依赖于process,也即process的创建者定义了是否process支持存储和更新。

一个literalData值的编码如下:...width=35@datatype=xs:integer@uom=meter

一个复杂数据(ComplexValue)的XML输入的例子:....complexFieldName=http%3A%2F%2Ffoo%2Ebar%2Fshapefile@Format=text/xml@Encoding=utf-8@Schema=gml.xsd 在这个例子中,XML输入的位置在http://foo.bar/shapefile,他的XML文件的模式是gml.xsd

Bounding Box例子:bboxInput=46,102,47,103,urn:ogc:def:crs:EPSG:6.6:4326,2