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

简介: 版权声明:欢迎评论和转载,转载请注明来源。 https://blog.csdn.net/zy332719794/article/details/53301609 根据OGC标准,WFS的请求有两种方式,一种是url带参数形式,另一种是XML的请求方式。
版权声明:欢迎评论和转载,转载请注明来源。 https://blog.csdn.net/zy332719794/article/details/53301609
根据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) {...} 进行判断使用。

相关文章
|
19天前
|
前端开发
React技术栈-react使用的Ajax请求库实战案例
这篇文章介绍了在React应用中使用Axios和Fetch库进行Ajax请求的实战案例,展示了如何通过这些库发送GET和POST请求,并处理响应和错误。
29 10
React技术栈-react使用的Ajax请求库实战案例
|
19天前
|
前端开发
React技术栈-react使用的Ajax请求库用户搜索案例
这篇文章展示了一个React技术栈中使用Ajax请求库(如axios)进行用户搜索的实战案例,包括React组件的结构、状态管理以及如何通过Ajax请求获取并展示GitHub用户数据。
21 7
React技术栈-react使用的Ajax请求库用户搜索案例
|
3天前
|
XML JavaScript 前端开发
jQuery - AJAX get() 和 post() 方法
jQuery - AJAX get() 和 post() 方法
18 6
|
9天前
|
缓存 JavaScript 前端开发
jQuery - AJAX get() 和 post() 方法
jQuery - AJAX get() 和 post() 方法
15 4
|
7天前
|
JSON 前端开发 JavaScript
jQuery AJAX 方法
jQuery AJAX 方法
13 1
|
10天前
|
JavaScript 前端开发
jQuery - AJAX load() 方法
jQuery - AJAX load() 方法
11 1
|
2月前
|
XML 前端开发 JavaScript
JavaScript进阶 - AJAX请求与Fetch API
【7月更文挑战第3天】前端开发中的异步基石:AJAX与Fetch。AJAX,使用XMLHttpRequest,处理跨域、回调地狱和错误处理。Fetch,基于Promise,简化请求,但需注意默认无跨域头和HTTP错误处理。两者各有优劣,理解其问题与解决策略,能提升前端应用的性能和用户体验。
97 24
|
3月前
|
前端开发 Python
Django框架中Ajax GET与POST请求的实战应用
Django框架中Ajax GET与POST请求的实战应用
|
2月前
|
XML 前端开发 JavaScript
JavaScript进阶 - AJAX请求与Fetch API
【7月更文挑战第9天】JavaScript进阶:AJAX与Fetch API对比。AJAX用于异步数据交换,XMLHttpRequest API复杂,依赖回调。Fetch API是现代、基于Promise的解决方案,简化请求处理。示例:`fetch(&#39;url&#39;).then(r =&gt; r.json()).then(data =&gt; console.log(data)).catch(err =&gt; console.error(err))`。注意点包括检查HTTP状态、错误处理、CORS、Cookie和超时。Fetch提高了异步代码的可读性,但需留意潜在问题。
73 0
|
3月前
|
XML 前端开发 JavaScript
异步请求$.ajax()方法详解
异步请求$.ajax()方法详解