微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

WFS-GetFeature的请求方式和ajax提交方法

根据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方式发送数据

例:

$.ajax({ 
    url: url,type: "POST",contentType: 'text/plain;charset=UTF-8',// 这里必须设置,否则会认以form表单数据进行发送 
    Traditional: true,data: '这里是XML内容',success: function(result){ 
        // 这里获取到返回的features数据 // ... 
    }
});
另外,还可以使用更新潮的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) {...}进行判断使用。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐