[mapserver-users] About FILTER and FILTERITEM

Steve.Toutant at inspq.qc.ca Steve.Toutant at inspq.qc.ca
Wed May 14 06:32:56 PDT 2014


Steve, I'm using postgis and runtime variable substitution in the filter.
Should I avoid FILTER and do the runtime variable substitution in DATA?

thanks
steve



"Lime, Steve D (MNIT)" <Steve.Lime at state.mn.us>@lists.osgeo.org 
Envoyé par : mapserver-users-bounces at lists.osgeo.org
2014-05-14 09:25

A
"Rahkonen Jukka  (Tike)" <jukka.rahkonen at mmmtike.fi>, 
"mapserver-users at lists.osgeo.org" <mapserver-users at lists.osgeo.org>
cc

Objet
Re: [mapserver-users] About FILTER and FILTERITEM








FIlters are used primarily under the hood for certain types of query 
operations. The main differences are:

  - FILTERs are defined in the native query language of the underlying 
driver. So for PostGIS you'd actually write a little SQL snippet.
  - FILTERs are applied when data are pulled from the underlying data 
source (like a WHERE clause) and have no impact on rendering choices.

For drivers that don't have an native query capability (e.g. shapefiles) 
the syntax is identical to expressions. For drivers that do have a native 
query capability there really isn't much use for filters since you can 
just add a where clause to the data statement.

Where I have found them useful sometimes is for simplifying class 
expressions. Let's say you have a shapefile and you only want to show 
features of a certain type, and then for those features you want to draw 
things differently based on another attribute.

You could use logical expressions:

CLASS
  EXPRESSION ([type] = 1 AND '[attr]' = 'a')
  ...
END
CLASS
  EXPRESSION ([type] = 1 AND '[attr]' = 'b')
  ...
END

or you could use a combination of FILTER and EXPRESSIONS

FILTERITEM 'type'
FILTER '1'

CLASSITEM 'attr'
CLASS
  EXPRESSION 'a'
  ...
END
CLASS
  EXPRESSION 'b'
  ...
END

Personal preference I guess and the second option is a bit more 
performant, especially in older versions. I guess my recommendation would 
be avoid FILTERs unless you have a good reason to use them.

Steve

________________________________________
From: mapserver-users-bounces at lists.osgeo.org 
[mapserver-users-bounces at lists.osgeo.org] on behalf of Rahkonen Jukka 
(Tike) [jukka.rahkonen at mmmtike.fi]
Sent: Wednesday, May 14, 2014 8:05 AM
To: mapserver-users at lists.osgeo.org
Subject: Re: [mapserver-users] About FILTER and FILTERITEM

Hi,

Thank you very much, Christy. By your example I made some tests and now 
filters like this work for me
FILTER (([WORKERS]>20000000) OR ("[STATE_FIPS]"="17"))

The secret element was the right syntax for string attributes 
("[STATE_FIPS]"="17").
Now when I know how it must be used I can find corresponding examples from 
the expression page of Mapserver documentation. Could someone explain 
shortly what is the difference between filter and expression? To me they 
seem to do pretty similar work.

-Jukka Rahkonen-

Christy Nieman wrote:

> You do not need to set both FILTERITEM and FILTER.  You can just set 
FILTER to
> an expression using as many attributes as you need. e.g.
> FILTER (( [POPULATION] < 500000 ) AND ("[DISPLAY]" == "1")). Just like 
you can
> have multiple attributes in a class EXPRESSION.
>
> I think it's the section of the document that is key - the "MapServer 
Expressions"
> section talks about using FILTER and EXPRESSION in more complex logical
> expressions, where as the section you quoted is talking about basic 
string
> comparison.
>
> Christy
>
> On 14/05/14 08:03 AM, Rahkonen Jukka (Tike) wrote:
> > Hi,
> >
> >  From document page: http://mapserver.org/mapfile/expressions.html
> > "To use a string comparison for filtering a LAYER, both FILTERITEM and 
FILTER
> must be set. FILTERITEM is set to the attribute name. FILTER is set to 
the value
> for comparison. The same rule applies to CLASSITEM in the LAYER object 
and
> EXPRESSION in the CLASS object."
> >
> > That would mean that only one attribute from the data can be used for
> building a filter. Is this true or just old information living in the 
document?
> >
> > -Jukka Rahkonen-
> > _______________________________________________
> > mapserver-users mailing list
> > mapserver-users at lists.osgeo.org
> > http://lists.osgeo.org/mailman/listinfo/mapserver-users
>
> _______________________________________________
> mapserver-users mailing list
> mapserver-users at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/mapserver-users
_______________________________________________
mapserver-users mailing list
mapserver-users at lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/mapserver-users


_______________________________________________
mapserver-users mailing list
mapserver-users at lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/mapserver-users



-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/mapserver-users/attachments/20140514/ae5a8819/attachment.html>


More information about the mapserver-users mailing list