根据OGC标准,WFS的请求有两种方式,一种是url带参数形式,另一种是XML的请求方式。
以下是一个WFS使用KVP格式的GetFeature操作示例:
- http://www.someserver.com/wfs? SERVICE=WFS& VERSION=1.1.0& REQUEST=GetFeature& PROPERTYNAME=InWaterA_1M/wkbGeom,InWaterA_1M/tileId& TYPENAME=InWaterA_1M& FILTER=<Filter><Within><PropertyName>InWaterA_1M/wkbGeom<PropertyName> <gml:Envelope><gml:lowerCorner>10,10</gml:lowerCorner> <gml:upperCorner>20 20</gml:upperCorner></gml:Envelope></Within></Filter>
以下是一个WFS使用XML格式的GetFeature操作示例:
- <?xml version="1.0" ?>
- <GetFeature version="1.1.0" service="WFS" handle="Query01"
- xmlns="http://www.opengis.net/wfs" xmlns:ogc="http://www.opengis.net/ogc"
- xmlns:gml="http://www.opengis.net/gml" xmlns:myns="http://www.someserver.com/myns"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.opengis.net/wfs ../wfs/1.1.0/WFS.xsd">
- <Query typeName="myns:Hydrography">
- <wfs:PropertyName>myns:geoTemp</wfs:PropertyName>
- <wfs:PropertyName>myns:depth</wfs:PropertyName>
- <ogc:Filter>
- <ogc:Not>
- <ogc:Disjoint>
- <ogc:PropertyName>myns:geoTemp</ogc:PropertyName>
- <gml:Envelope srsName="EPSG:63266405">
- <gml:lowerCorner> -57.9118 46.2023 <gml:lowerCorner>
- <gml:upperCorner>-46.6873 51.8145</gml:upperCorner>
- </gml:Envelope>
- </ogc:Disjoint>
- </ogc:Not>
- </ogc:Filter>
- </Query>
- </GetFeature>
当使用XML格式请求时,特别注意使用Ajax请求时,必须要设置数据的传输采用Request Payload方式发送数据
例:
另外,还可以使用更新潮的fetch方式请求:
- fetch(url,{
- method: 'POST',body: '这里是XML内容'
- }).then(function(response) {
- return response.json();
- }).then(function(json) {
- var features = new ol.format.GeoJSON().readFeatures(json); //...
- });
有的浏览器还没有对fetch进行支持,所以可以通过if(!self.fetch) {...}进行判断使用。
@H_403_23@