GeoServer kennis vraag

 
03 september 2009

Even een GeoServer kennis vraag. We gebruiken in mijn geval GeoServer 1.7.5. We willen een WFS request doen. We willen de gegevens uit ‘MyLayer’ waar het veld X 15 is.

Is de volgende request goed?

<GetFeature service="WFS" version="1.1.0" outputFormat="GML2" maxFeatures="5">
   <Query typeName="test:MyLayer">
      <Filter>
         <PropertyEqualsTo>
            <PropertyName>X</PropertyName>
            <Literal>15</Literal>
         </PropertyEqualsTo>
      </Filter>
   </Query>
</GetFeature>

En het antwoord is: Nee. Het request zou moeten zijn:

<GetFeature service="WFS" version="1.1.0" outputFormat="GML2" maxFeatures="5">
   <Query typeName="test:MyLayer">
      <Filter>
         <PropertyIsEqualTo>
            <PropertyName>X</PropertyName>
            <Literal>15</Literal>
         </PropertyIsEqualTo>
      </Filter>
   </Query>
</GetFeature>

En wat is nou precies het verschil? De naam van de filter expressie. De expressie: PropertyEqualsTo moet zijn: PropertyIsEqualTo.

Het gebruik van het element PropertyEqualsTo zorgt er voor dat men een reeks gegevens terug krijgt van de server die nergens op slaan; de filter wordt namelijk compleet genegeerd, zonder foutmelding en of waarschuwing.
Overigens zou je het wel kunnen zien in de logging van GeoServer als deze geconfigureerd is voor software ontwikkeling in plaats van de standaard productie instellingen.


Werken met ?
Kijk dan bij onze mogelijkheden voor starters en/of ervaren IT'ers.


Categorieën: Overige talen en platformen

Tags: , , ,


Reacties (5)

  • RV schreef:

    I looked in both official Filter specification (1.0 and 1.1)and both use .

    You can also double check in the official schemas:
    http://schemas.opengis.net/filter/1.0.0/filter.xsd
    http://schemas.opengis.net/filter/1.1.0/filter.xsd

    Not sure where you got “PropertyEqualsTo” from?

    Geplaatst op 05 oktober 2009 om 22:47 Permalink

  • Andrea Aime schreef:

    The parser by default ignores all parts that do not conform to the schema. This has been done to be backwards compatible since there are quite a bit of applications that do not get the XML quite right.
    If you want to get proper error messages just enforce xml schema validation, you can do it two ways:
    – enable the strict cite mode in the wfs configuration
    – append ?strict=true to the URL you’re posting to

    At that point either your request is picture perfect or it will be rejected

    Geplaatst op 04 september 2009 om 11:11 Permalink

    • Ivo Limmen schreef:

      This is a very useful tip. Especially adding strict=true to the URL as I do not want to slow down our server for all our WFS requests.

      Geplaatst op 04 september 2009 om 11:50 Permalink

  • Andrea Aime schreef:

    I looked in both official Filter specification (1.0 and 1.1)and both use .

    You can also double check in the official schemas:
    http://schemas.opengis.net/filter/1.0.0/filter.xsd
    http://schemas.opengis.net/filter/1.1.0/filter.xsd

    Not sure where you got “PropertyEqualsTo” from?

    Geplaatst op 03 september 2009 om 11:30 Permalink

    • Ivo Limmen schreef:

      I just rechecked the post and you’re right. I can’t seem to figure out where I got “PropertyEqualsTo” from. Probably a post on the mailing list or a wrong example.

      The actual post that triggered the solution on my side was: http://www.nabble.com/WFS-PropertyIsLessThanEqualTo-filter-not-working–tp19796569p19796785.html. Not the exact same problem but gave my the right direction.

      I also found out that moving the filter property just below the query element is also a nice ‘feature’: Again no warning or error and the filter is completely ignored.

      Geplaatst op 04 september 2009 om 10:06 Permalink