创建对wms / wfs openlayers 3的过滤请求

时间:2014-12-05 12:20:42

标签: filter openlayers wms openlayers-3

我需要为Geoserver创建一个过滤的WMS请求。我正在重写一个openlayers 2应用程序,它使用OpenLayers.Filter发出这些请求。如何在Openlayers 3中完成此操作,其中过滤器从API中删除?

以下是查询在Openlayers 2中的示例:

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);
}

1 个答案:

答案 0 :(得分:2)

对于对GeoServer的WMS请求,您可以使用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组合过滤器。

相关问题