2014-12-05 48 views
1

我需要为Geoserver创建一个过滤的WMS请求。我正在重写一个使用OpenLayers.Filter进行这些请求的openlayers 2应用程序。如何在Openlayers 3中将过滤器从API中移除?创建过滤的请求到wms/wfs openlayers 3

这里有一个例子查询是如何在2的OpenLayers:

function dateFilter(date) { 
    var dateTimeFilterArray = []; 

    var dateFilter = new OL.Filter.Comparison({ 
     type : OL.Filter.Comparison.BETWEEN, 
     property : "stdate", 
     lowerBoundary : date.fromDate, 
     upperBoundary : date.toDate 
    }); 

    dateTimeFilterArray.push(dateFilter); 

    var timeFilter = new OL.Filter.Comparison({ 
     type : OL.Filter.Comparison.BETWEEN, 
     property : "sttime", 
     lowerBoundary : date.fromTime, 
     upperBoundary : date.toTime 
    }); 

    dateTimeFilterArray.push(timeFilter); 

    return combineFilters(dateTimeFilterArray); 
} 

回答

2

对于WMS请求,GeoServer的,你可以使用CQL过滤器,例如

function dateFilter(date) { 
    var dateFilter = 
     'stdate BETWEEN ' + date.fromDate + ' AND ' + date.toDate; 
    var timeFilter = 
     'sttime BETWEEN ' + date.fromTime + ' AND ' + date.toTime; 
    return '(' + dateFilter + ') AND (' timeFilter + ')'; 
} 

wmsSource.updateParams({ 
    CQL_FILTER: dateFilter(date) 
}); 

请在ECQL reference日期和时间文字阅读起来,以确保您使用的CQL过滤正确的日期和时间格式。上面的代码片段假定您的date对象的属性已经是正确的格式。它还假定您当前的combineFilters()函数使用逻辑AND组合筛选器。

+0

感谢您的描述性答复。这个概念工作正常! – Cecilie 2014-12-08 10:09:40

+0

嗨@ahocevar是否有办法稍后删除'CQL_FILTER'? – 2015-03-31 17:02:28