[Geoserver-users] filter field in cross-layer functions

I tried to use the cross-layer filtering functions but I'm not gettng what I would expect.

One of the examples in the docs match what I'd like to accomplish:
a layer with points (accommodations) and a layer with lines (routes).

http://docs.geoserver.org/stable/en/user/extensions/querylayer/index.html

(Sinche there's a bug in DWITHIN wouldn't it be better to add a note about that in the docs?)

Let's start with WFS.

      <wfs:Query typeName="sf:bugsites">
        <ogc:Filter>
          <ogc:DWithin>
            <ogc:PropertyName>the_geom</ogc:PropertyName>
            <ogc:Function name="collectGeometries">
              <ogc:Function name="queryCollection">
                <ogc:Literal>sf:roads</ogc:Literal>
                <ogc:Literal>the_geom</ogc:Literal>
                <ogc:Literal>INCLUDE</ogc:Literal>
              </ogc:Function>
            </ogc:Function>
            <ogc:Distance units="meter">100</ogc:Distance>
          </ogc:DWithin>
        </ogc:Filter>
      </wfs:Query>

I want to filter the features (routes) in the 2nd layer, so instead of INCLUDE I wrote as a test:
<ogc:Literal>myfield=1234</ogc:Literal>
and that works ok.

But that filter should be more complicated than that.
I want to use strMatches. So I wrote something like
<ogc:Literal>strMatches(myfield, '.*\b(1234|5678)\b.*')=true</ogc:Literal>

But that returns 0 features.

If I want to use WMS I don't even know how to use that filter inside DWITHIN.

DWITHIN(the_geom, collectGeometries(queryCollection('sf:roads','the_geom','INCLUDE')), 200, meters).

What should I write instead of include?

Are CQL functions like strMatches supported in the querylayer module?

Thank you
  maxx

Il 05/18/2015 04:06 PM, emmexx scrisse:

If I want to use WMS I don't even know how to use that filter inside
DWITHIN.

DWITHIN(the_geom,
collectGeometries(queryCollection('sf:roads','the_geom','INCLUDE')),
200, meters).

What should I write instead of include?

Are CQL functions like strMatches supported in the querylayer module?

FYI:
Instead of cross-layer filtering I used an SQL View Layer and used postgis DWithin and a join.

  maxx