[mapserver-users] question on CLASSITEM

Lowell Filak lfilak at medinaco.org
Thu May 30 05:28:45 PDT 2002


You could include a regular expression in your mapfile for the class that you know will always match nothing and then use mapscript to overwrite the expression when you really want a search done. No.?
Lowell F.

The following message was sent by Puneet Kishor <pkishor at GeoAnalytics.com> on Wed, 29 May 2002 17:17:00 -0500.

> Steve,
> 
> What you say makes sense, except this is not what is happening. I apologize
> because I did not give all the details for the sake of brevity, however, the
> scenario is thus...
> 
> The layer is turned on (in certain cases) no matter what. Then, if $expr is
> something then the mapscript code executes and matches the $expr. If $expr
> is "" then the mapscript code doesn't even execute. The layer highlights all
> the features nonetheless.
> 
> In other words, assuming the layer is on, if I have CLASSITEM "blah" and I
> provide an expression then the feature(s) are matched. If I don't provide an
> expression then everything is matched. Intuitively (for me at least), it is
> this last behavior that doesn't seem right... what I would rather that if I
> don't provide an expression then nothing should match, the layer should turn
> on (or off... that is irrelevant), but nothing should show.
> 
> Guess that is not the way the behavior is programmed, so I have to code
> around that.
> 
> 
> Puneet.
> 
> 
> 
> > -----Original Message-----
> > From: Stephen Woodbridge [mailto:woodbri at swoodbridge.com]
> > Sent: Wednesday, May 29, 2002 5:04 PM
> > To: Puneet Kishor
> > Cc: mapserver-users at lists.gis.umn.edu
> > Subject: Re: [mapserver-users] question on CLASSITEM
> > 
> > 
> > Puneet,
> > 
> > I think that your problem is that you are comparing based on a regular
> > expression match because you are uing "/$expr/" which is really asking
> > if $expr is in the the string so /a/ would match "bbbabbb" 
> > AND following
> > that logic // a null pattern will match any string. If you 
> > want to match
> > "" eq "a" to fail, then don't use a regular expression.
> > 
> > -Steve
> > 
> > Puneet Kishor wrote:
> > > 
> > > mapfile (only relevant lines shown) --
> > > 
> > > LAYER
> > >         NAME "layer_highlight"
> > >         STATUS off
> > >         CLASSITEM "blah"
> > >         CLASS
> > >                 ...classdef...
> > >         END
> > >         TEMPLATE "foo"
> > > END
> > > 
> > > mapscript (only relevant lines shown) given $expr for "blah" --
> > > 
> > > $layerObj = $mapObj->getlayerbyname("layer_highlight");
> > > $classObj = $layerObj->getClass(0);
> > > $classObj->setexpression("/$expr/");
> > > $layerObj->set("status", 1);
> > > 
> > > this turns on "layer_highlight" and highlights the features 
> > that match
> > > CLASSITEM "blah" to "$expr".
> > > 
> > > The problem is thus -- if $expr exists then features are 
> > correctly matched
> > > in the layer. However, if $expr == "", then all the 
> > features end up getting
> > > matched... what I want is that if $expr == "" then the 
> > layer should turn on,
> > > however, no feature should show up since no feature is matched.
> > > 
> > > Any ideas?
> > > 
> > > pk/
> > 




More information about the MapServer-users mailing list