地图服务器表达式:不在列表中

mapserver expression: NOT in list

在地图文件中,我有一个图层必须根据属性值以不同方式显示。有四个不同的类别,A、B、C 和所有其他类别。 A、B、C 都没有问题,但我没有设法显示所有其余部分。我尝试使用列表表达式(EXPRESSION {A,B,C} 参见 http://www.mapserver.org/de/mapfile/expressions.html#regular-expression-comparison),我交换它(NOT ...),但我无法让它工作...

CLASSITEM "zustaendigkeit"
CLASS
    EXPRESSION "AWN"
    NAME "AWN"
    STYLE
        COLOR  99 204 141
    END
END   
CLASS
    EXPRESSION "HBA"
    NAME "HBA"
    STYLE
        COLOR  246 179 166
    END
END
CLASS
    EXPRESSION "TBA"
    NAME "TBA"
    STYLE
        COLOR  175 182 224
    END
END
CLASS
# wrong too: EXPRESSION ("[zustaendigkeit]"!={TBA,HBA,AWN})       
EXPRESSION NOT {TBA,HBA,AWN}
    NAME "anderes"
    STYLE
        COLOR  224 206 232
    END
END

正确的语法是什么?提前致谢。 薇拉

我现在无法测试,也许有更好的解决方案,但应该可行:

EXPRESSION ('[zustaendigkeit]'!= 'TBA' AND '[zustaendigkeit]' != 'HBA' AND '[zustaendigkeit]' != 'AWN') 

其他可行的解决方案:

EXPRESSION /^[TBA|HBA|AWN]/
EXPRESSION ("[zustaendigkeit]" NOT IN "TBA,HBA,AWN")

第一个解决方案工作正常,我得到了除 TBA、HBA 和 AWN 之外的所有区域。 (我的数据源是 POSTGIS-DB)

另外两个我也试过了:

  • EXPRESSION /^[TBA|HBA|AWN]/: 我得到了 TBA、HBA 和 AWN 的面积(用 不,它不起作用)
  • EXPRESSION ([zustaendigkeit]" NOT IN "TBA,HBA,AWN"): 我不明白 任何东西

谢谢。

我发现使用 NOT IN 语句的唯一方法是根据您的条件在 AND 中添加另一个条件始终为真。

EXPRESSION ('[field1]' = 'whatever_always_true' AND NOT '[zustaendigkeit]' IN ('TBA,HBA,AWN'))