gismapservermap-filesumn-mapserver

Problems using "AND" Logical Expression for defining a Mapserver class


I can't seem to get past this hurdle. Mapserver isn't throwing any errors...but it isn't returning anything either...I suspect my logical expression (... in the absence of any errors...I really have little clue what is going down here).

Ideally, I'd like to filter by my shapefile using these two columns: '[YODA] (text)' AND '[ZOOM] (Integer)'.

Currently my code reads as:

    LAYER
        # Zoom Level 11-16
        TYPE ANNOTATION
        STATUS ON 
        GROUP "yoda"
        DATA "yoda_graphics"
        NAME "yoda_awesome"
    #    # Visible in map from zoom level 11 onwards
        MAXSCALEDENOM 325008
        MINSCALEDENOM 5078
        LABELITEM "label"
        CLASS
        # Yoda Head
        EXPRESSION (('[YODA]' ~* '/^I/') AND ([Zoom]>8)) ## where things are suspect...
        # yoda shell symbol w/ label
        STYLE
          SYMBOL 'yoda_red_top_shell'
          #COLOR  255 255 255
          #COLOR 218 218 203
          COLOR 184 184 156
          SIZE 16
        END
        STYLE
          SYMBOL 'yoda_red_top_shell'
          #COLOR 225 104 104
          #COLOR 204 184 181
          COLOR 214 214 169
          SIZE 15
        END
        STYLE
         SYMBOL 'yoda_blue_shell'
         #COLOR  80 101 123
         #COLOR 183 192 221
         COLOR 241 241 226
         SIZE 15
        END
        LABEL
          TYPE truetype
          FONT "deja-bold"
          SIZE 5
          #COLOR 255 255 255
          COLOR 184 184 156
          PARTIALS FALSE
          WRAP " "
          ALIGN center
          POSITION CC
          ANGLE 0
        END # end label
      END #end class  
END # layer

Solution

  • You shouldn't surround your regular expression with slashes when using an explicit regular expression operator.

    This is correct:

    CLASSITEM "Yoda"
    CLASS
      EXPRESSION /^I/
    

    In your case, use:

    EXPRESSION (('[YODA]' ~* '^I') AND ([Zoom]>8))