OpenLayers filter 过滤器实现查询

首页介绍下 OpenLayers 的 Filter

Filter是一种基于XML的并且符合OGC规范的语言。SLD用它来实现复杂的Rule选择。WFS在所有需要定位操作对象的地方都会使用FilterFilter的作用是构建一个表达式,返回值就是Feature的集合,换句话说Filter就如他的名字一般为我们从一个集合中过滤出一个满足我们要求的子集。而过滤的方法就是Filter定义的操作符。Filter定义了三种操作符:地理操作符(Spatial operators),比较操作符(Comparison operators)和逻辑操作符(Logical operators)。

1.     Spatial operators定义了地理属性的操作方式,他们有:Equals,Disjoint,Touches,Within,Overlaps,Crosses,Intersects,Contains,DWithin,Beyond,BBOX。

名称

含义

举例

Equals

等于

 

Disjoint

不相交

 

Intersects

相交(存在交集)

 

Touches

 

 

Within

在..内部

 

DWithin

在…外部

 

Overlaps

叠加

 

Crosses

通过

 

Contains

包含

 

Beyond

 

 

BBOX

矩形范围

 

 

2.    Comparison operators定义了标量属性的操作方式,他们有:PropertyIsEqualTo,PropertyIsNotEqualTo,PropertyIsLessThan,PropertyIsGreaterThan,PropertyIsLessThanOrEq,PropertyIsGreaterThanO,PropertyIsLike,PropertyIsNull,PropertyIsBetween。

名称

含义

举例

PropertyIsEqualTo

==

 

PropertyIsNotEqualTo

!=

 

PropertyIsLessThan

 

PropertyIsGreaterThan

 

PropertyIsLessThanOrEq

<=

 

PropertyIsGreaterThanO

>=

 

PropertyIsLike

利用通配符等符号对字符进行模糊匹配

LAST_NAME

JOHN*

PropertyIsNull

为空

 

PropertyIsBetween

在…之间

 

 

3.   Logical operators逻辑操作符,定义了组合这些操作的方式,他们有:And,Or,Not。

举例:构建一个表达式,人口在一千万以上,并且在指定的空间范围内的城市。



下面来个例子:查询status属性值为1的列表

var filter = new OpenLayers.Filter.Comparison({
	type: OpenLayers.Filter.Comparison.EQUAL_TO, // 表达式 equal
	property: "status",
	value: "1"
});

var filterStrategy = new OpenLayers.Strategy.Filter({filter: filter});
var gmlLayer = new OpenLayers.Layer.Vector("GML", {
	styleMap: myStyles,
	projection: "EPSG:4326",
	protocol: new OpenLayers.Protocol.HTTP({
	url: "http://localhost:8088/geoserver/local/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=local:gis_test&maxFeatures=50",
	format: new OpenLayers.Format.GML()
					}),
	strategies: [new OpenLayers.Strategy.Fixed(),filterStrategy]
});
map.addLayer(gmlLayer);




你可能感兴趣的:(OpenLayers)