Межослойный фильтр Geoserver в OpenLayers 2 для протокола WFS
Мне нужно выполнить пространственный запрос INTERSECTS между слоями типа Point и Polygon, чтобы найти точки, которые пересекаются с полигоном атрибута fclass == park.
CQL Query:
INTERSECTS(geom, collectGeometries(queryCollection('namespace_new:gis.osm_landuse_a_free_1', 'geom','fclass = park''')))";
Я определил векторный слой и использую протокол WFS для получения данных от Geoserver:
var layerDomainData = new OpenLayers.Layer.Vector("Tourist locations", {
// minScale: 15000000,
strategies: [new OpenLayers.Strategy.BBOX()],
protocol: new OpenLayers.Protocol.WFS({
url: "http://localhost:8080/geoserver/wfs",
featureType: "tour_data",
featureNS: "http://localhost:8080/geoserver/namespace_new",
geometryName: "geom",
srsName: "EPSG:900913",
version: "1.1.0"
}),
styleMap: new OpenLayers.StyleMap({
'default' : domainStyle,
'select' : selectedDomainStyle
}),
renderers: renderer
});
Обычно я устанавливаю пространственные фильтры как:
layerDomainData.filter = new OpenLayers.Filter.Spatial({
type: OpenLayers.Filter.Spatial.DWITHIN,
property: "geom",
value: lineString, //selected feature on the map
distance: radius,
distanceUnits: "kilometers",
projection: "EPSG:4326"
});
но теперь мне нужно использовать Geoservers collectGeometries и queryCollection, чтобы выбрать все объекты из "второго" слоя, чтобы они пересекались с моим "первым" слоем. Если бы это был слой WMS, я бы просто установил фильтр в качестве параметра (layer.params['CQL_FILTER'] = "filter_string"), но я не знаю, где установить требуемый фильтр при использовании слоя WFS. Не найдено ни одного примера использования OpenLayers WFS с межслойными фильтрами Geoserver.
Любые предложения будут полезны.