mapserver表达式:不在列表中

时间:2015-03-04 13:13:53

标签: mapserver

在mapfile中,根据属性的值,我有一个必须以不同方式显示的图层。有四种不同的类别,A,B,C和其他所有类别。 A,B和C没有问题,但我无法显示所有其余部分。我尝试使用list-expression(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

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

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

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

其他可行的解决方案:

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

答案 2 :(得分:0)

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

我也尝试了其他两个:

  • EXPRESSION / ^ [TBA | HBA | AWN] /:我得到了TBA,HBA和AWN的区域(带有 不是它不起作用)
  • EXPRESSION(“[zustaendigkeit]”不在“TBA,HBA,AWN”):我没有得到 任何

感谢。