美文网首页开源
WFS服务查询慢怎么办?通过OGC查询过滤进行优化

WFS服务查询慢怎么办?通过OGC查询过滤进行优化

作者: 不玩了啊 | 来源:发表于2020-03-31 09:28 被阅读0次

一、什么是OGC?

OGC,全称是开放地理空间信息联盟(Open Geospatial Consortium),是一个非盈利的国际标准组织,它制定了数据和服务的一系列标准,GIS厂商按照这个标准进行开发可保证空间数据的互操作。(来源百度百科)

二、OGC定义了些什么东西?

OGC基于http或者说是web的空间数据操作技术,主要涉及Web Service的相关技术。与ISO/TC211一同推出

基于Web服务(XML)的空间数据互操作实现规范

用于空间数据传输与转换的地理信息标记语言GML

提出了一个能无缝集成各种在线空间处理和位置服务的框架即OWS (OGC Web Service)

意义:使得分布式空间处理系统能够通过XML和HTTP技术进行交互,并为各种在线空间数据资源、来自传感器的信息、空间处理服务和位置服务,基于Web的发现、访问、集成、分析、利用和可视化提供互操作框架。

完整的WFS+Filter示例

http://xxxx/xxxx/wfs100/utf-8?

VERSION=1.0.0&SERVICE=WFS&REQUEST=GetFeature&TYPENAME=RSWB:RSWB&Filter=

(<Filter>

<AND>

    <ogc:PropertyIsLike xmlns:ogc="http://www.opengis.net/ogc" wildCard="*" singleChar="?" escapeChar="\">

        <ogc:PropertyName>ID</ogc:PropertyName>

        <ogc:Literal>4201*</ogc:Literal>

    </ogc:PropertyIsLike>

    <ogc:PropertyIsEqualTo xmlns:ogc="http://www.opengis.net/ogc">

        <ogc:PropertyName>GRADE</ogc:PropertyName>

        <ogc:Literal>小二</ogc:Literal>

    </ogc:PropertyIsEqualTo>

</AND>

<AND>

    <ogc:PropertyIsLike xmlns:ogc="http://www.opengis.net/ogc" wildCard="*" singleChar="?" escapeChar="\">

        <ogc:PropertyName>ID</ogc:PropertyName>

        <ogc:Literal>4202*</ogc:Literal>

    </ogc:PropertyIsLike>

    <ogc:PropertyIsEqualTo xmlns:ogc="http://www.opengis.net/ogc">

        <ogc:PropertyName>GRADE</ogc:PropertyName>

        <ogc:Literal>小二</ogc:Literal>

    </ogc:PropertyIsEqualTo>

</AND>

</Filter>)

完整的WFS+bbox+Filter 代码示例(通用格式):

 getVector: function () {

        var source = new ol.source.Vector({

            format: new ol.format.GeoJSON(),

            loader: function (extent) {

                //坐标系转换

                var bbox = ol.proj.transformExtent(extent, 'EPSG:3857', 'EPSG:4326');

                var filter = '&filter='

                    + '<ogc:Filter xmlns:gml="http://www.opengis.net/gml" xmlns:ogc="http://www.opengis.net/ogc">'

                    + '<ogc:And>'

                    + '<ogc:PropertyIsEqualTo>'

                    + '<ogc:PropertyName>city_id</ogc:PropertyName>'

                    + '<ogc:Literal>'

                    +   rent.cityid

                    + '</ogc:Literal>'

                    + '</ogc:PropertyIsEqualTo>'

                    + '<ogc:BBOX>'

                    + '<gml:Box>'

                    + '<gml:coordinates>'

                    +  bbox[0] + ',' + bbox[1] + ' '+ bbox[2] + ',' + bbox[3]

                    + '</gml:coordinates>'

                    + '</gml:Box>'

                    + '</ogc:BBOX>'

                    + '</ogc:And>'

                    + '</ogc:Filter>';

                //返回指定坐标系 &srsname=EPSG:3857

                var url = '?service=WFS&version=1.0.0&request=GetFeature&typeName=xxx'

                    + filter + '&maxFeatures=10000&outputFormat=application%2Fjson&srsname=EPSG:3857';

                var ajax = new XMLHttpRequest();

                ajax.open('get', url, true);

                ajax.onreadystatechange = function (data) {

                    if (ajax.readyState == 4 && ajax.status == 200) {

                        var text = data.currentTarget.responseText;

                        if(text.substring(0,1)!="{")return;

                        var features = source.getFormat().readFeatures(text);

                        source.forEachFeature(function (feat) {

                            source.removeFeature(feat)

                        });

                            source.addFeatures(features);

                        });

                    }

                }

                ajax.send();

            },

            strategy: ol.loadingstrategy.bbox

        });

        var vector = new ol.layer.Vector({

            source: source,

            style: function (feat) {

            }

        })

        vector.set('id', 'layer1');

        vector.setVisible(false)

        return vector;

    },

————————————————

版权声明:本文为CSDN博主「hucbmz」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/hucbmz/java/article/details/104961540

相关文章

网友评论

    本文标题:WFS服务查询慢怎么办?通过OGC查询过滤进行优化

    本文链接:https://www.haomeiwen.com/subject/emiiuhtx.html