Страница 1 из 1

Комбинированный стиль в map-файле

Добавлено: 13 июл 2010, 10:22
Alt
Здравствуйте.
Есть слой полигонов Postgis с двумя атрибутивными полями.
Цвет заливки определяется по значению одного поля.

Код: Выделить всё

 CLASS
  EXPRESSION ([field1]=1)
  STYLE
    COLOR 192 192 192
    OUTLINECOLOR 32 32 32
    WIDTH 3
  END
...
 CLASS
  EXPRESSION ([field1]=2)
....

Подскажите как описать классы, чтобы в дополнение к цвету заливки цвет контура (OUTLINECOLOR) определялся по полю field2. Или придется описать все сочетания полей field1 и field2 отдельными классами ?

Благодарю.

Re: Комбинированный стиль в map-файле

Добавлено: 13 июл 2010, 10:51
Mavka
Судя по документации это возможно. Выглядеть это должно так:

Код: Выделить всё

CLASS
  STYLE
    COLOR [field1]
    OUTLINECOLOR [field2]
    WIDTH 3
  END
END
Вот только не понятен формат данных. "DBF has a field named “MYCOLOR” that holds color values for each record" и дальше дают ссылку на MS RFC 19 "Style & Label attribute binding".

Судя по mapfile.c (loadColor), поле должно быть текстовым, со значениями вида "#aa2246". Т.е. hex, но в виде строки.

Re: Комбинированный стиль в map-файле

Добавлено: 13 июл 2010, 11:19
Alt
Т.е. если в поле указан внешний ключ справочника, то нужно будет вместо этого слоя Postgis создавать представление с соответствующим текстовым полем цвета. А в более сложных случаях, когда стиль определяется выражением лучше предварительно готовить представления с уже посчитанными стилевыми полями ?

Re: Комбинированный стиль в map-файле

Добавлено: 13 июл 2010, 12:46
Mavka
Да. А CLASS в MapServer нужно воспринимать в первую очередь как фильтр.