在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
什么是正确的语法?提前致谢。 维拉
答案 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)
我也尝试了其他两个:
感谢。