地图服务器表达式:不在列表中
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'))
在地图文件中,我有一个图层必须根据属性值以不同方式显示。有四个不同的类别,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'))