Hi, I started to play with filter and filteritem because I happened to see this question http://gis.stackexchange.com/questions/65724/mapserver-6-2-concatenate-attributes-in-filter. I thought that the idea was odd and unpractical but interesting and I thought it would be fast to test. It was not but at least it was educational.
I can do such concatenation simply with Spatialite data by using the layer DATA as CONNECTION "\ms4w\apps\states_spl_3.sqlite" DATA "select * from states_view where STATE_NAME||STATE_FIPS='Illinois17'" I am ready to believe that such concatenation with FILTER is not possible with the 6.x series. Other opinions? -Jukka Rahkonen- Lime, Steve D (MNIT) wrote: > > 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-boun...@lists.osgeo.org [mapserver-users- > boun...@lists.osgeo.org] on behalf of Rahkonen Jukka (Tike) > [jukka.rahko...@mmmtike.fi] > Sent: Wednesday, May 14, 2014 8:05 AM > To: mapserver-users@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@lists.osgeo.org > > > http://lists.osgeo.org/mailman/listinfo/mapserver-users > > > > _______________________________________________ > > mapserver-users mailing list > > mapserver-users@lists.osgeo.org > > http://lists.osgeo.org/mailman/listinfo/mapserver-users > _______________________________________________ > mapserver-users mailing list > mapserver-users@lists.osgeo.org > http://lists.osgeo.org/mailman/listinfo/mapserver-users > _______________________________________________ mapserver-users mailing list mapserver-users@lists.osgeo.org http://lists.osgeo.org/mailman/listinfo/mapserver-users