Проблемы с использованием логического выражения "И" для определения класса Mapserver
Я не могу преодолеть это препятствие. Mapserver не выдает никаких ошибок... но он также ничего не возвращает... Я подозреваю, что мое логическое выражение (... при отсутствии каких-либо ошибок... Я действительно понятия не имею, что здесь происходит),
В идеале я хотел бы отфильтровать по своему шейп-файлу, используя эти два столбца: '[YODA] (текст)' И '[ZOOM] (целое число)'.
В настоящее время мой код читается как:
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
1 ответ
Решение
Вы не должны окружать свое регулярное выражение косыми чертами при использовании явного оператора регулярного выражения.
Это правильно:
CLASSITEM "Yoda"
CLASS
EXPRESSION /^I/
В вашем случае используйте:
EXPRESSION (('[YODA]' ~* '^I') AND ([Zoom]>8))