本文共 3377 字,大约阅读时间需要 11 分钟。
作者:非法小恋
##一、什么是WFS服务
支持对地理要素的插入,更新,删除,检索和发现服务。该服务根据HTTP客户请求返回GML(Geography Markup Language、地理标识语言)数据。 WFS服务多用于查询要素,WFS通过OGC Filter构造查询条件,支持基于空间几何关系的查询,基于属性域的查询,当然还包括基于空间关系和属性域的共同查询。 ##二、WFS服务请求步骤##三、WFS基本操作
目前分为以下几种操作:(这里使用iServer7C范例进行展示) ####1.GetCapabilities 操作 一个 WFS可以描述其能力,并且必须指出它可以服务的要素类型和每个要素类型所能支持的操作,通俗的讲就是获取WFS的能力文件。 例如构建请求地址: 表示查看该WFS服务的能力文件。 ####2.DescribeFeatureType 操作 WFS能够在请求中描述其可以提供服务的任何要素类型的结构。通俗的讲就是获取某个数据集中的字段类型。 例如构建请求地址: 表示查看World:Countries数据集字段类型。 ####3.GetFeature 操作 WFS可以为一个获取要素实例的请求提供服务。另外,客户端可以指定获取要素的哪些属性,并且可以使用空间和非空间的查询限制条件。通俗的讲就是通过查询,获取某个数据集中的具体内容。 例如构建请求地址: 表示查看World:Capitals 中的前5个要素。 ##四、iClient目前支持的WFS版本//WFS属性过滤器 var filter = new SuperMap.Filter.Comparison({ type:SuperMap.Filter.Comparison.EQUAL_TO, //等于 property:"COUNTRY", //(*)查询字段名 value:"俄罗斯" //具体某个名称 }); var protocolRead = new SuperMap.Protocol.WFS({ version:"1.0.0", //请求服务版本 url:"http://localhost:8090/iserver/services/data-world/wfs100", //(*)请求WFS featureType:"Countries", //(*)请求查询数据集 featureNS:"http://www.supermap.com/World", //要素的命名空间 featurePrefix:"World", //(*)请求数据源 geometryName:"the_geom" //几何图形属性名称 }); protocolRead.read({ filter:filter, //过滤 maxFeatures: 1, callback: queryCompleted //回调函数 });
如果是iServer发布的WFS服务,那么其中带(*)的部分,我们尤为要注意。那我们该如何获取这参数些信息呢?
####2.针对ArcGIS发布的WFS服务
针对ArcgGIS的WFS服务,我们在使用iClient对接时,需要注意以下几个参数,这里我用iClient for JavaScript代码作为示范。//WFS属性过滤器 var filter = new SuperMap.Filter.Comparison({ type:SuperMap.Filter.Comparison.EQUAL_TO, //等于 property:"COUNTRY", //(*)查询字段名 value:"俄罗斯" //具体某个名称 }); var protocolRead = new SuperMap.Protocol.WFS({ version: "1.0.0", //请求服务版本 srsName: "EPSG:4326", url: "http://192.168.15.99:6080/arcgis/services/world1/MapServer/WFSServer", featureType: "world", //(*)查询数据集名称 featurePrefix:"world1", //(*)请求数据源 geometryName:"Shape" //(*)几何图形属性名称 }); protocolRead.read({ filter:filter, //过滤 maxFeatures: 1, callback: queryCompleted //回调函数 });
如果是ArcGIS发布的WFS服务,那么其中带(*)的部分,我们也要注意。那我们该如何获取这参数些信息呢?
修改ArcGIS发布WFS服务里面的经纬度顺序,如原本是YX 则修改为XY。
####iServer中WFS查询,为什么最多只能查2000个结果?
在webapps\iserver\WEB-INF文件夹下的iserver-services-interfaces.xml 文件里interface节点下添加期望返回结果,例如:期望返回的结果