Label для всего слоя

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
Artem
Интересующийся
Сообщения: 29
Зарегистрирован: 01 сен 2010, 05:59
Репутация: 0

Label для всего слоя

Сообщение Artem »

Добрый день. В map-файле есть слой с кучей классов, можно ли как-то задать подпись всему слою, а не каждому классу отдельно? А то нерационально как-то пихать LABEL в каждый класс, тем более если он одинаковый.
Спасибо за внимание
Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: Label для всего слоя

Сообщение Mavka »

Попробуйте создать еще один класс без фильтра и в нем пропишите надписи.
лангольеры под окном жрали время ом-ном-ном
Artem
Интересующийся
Сообщения: 29
Зарегистрирован: 01 сен 2010, 05:59
Репутация: 0

Re: Label для всего слоя

Сообщение Artem »

Пробовал естественно, такой класс либо скрывает все остальные (если он первый), либо сам невидим (если последний).

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

CLASS
   NAME "Красноярский край"
   EXPRESSION ([CODE]=1)
   STYLE
    COLOR 255 153 204
    OUTLINECOLOR 85 85 85
   END
  END
  CLASS
   NAME "Республика Хакасия"
   EXPRESSION ([CODE]=2)
   STYLE
    COLOR 153 204 255
    OUTLINECOLOR 85 85 85
   END
  END
  CLASS
   NAME "Республика Тыва"
   EXPRESSION ([CODE]=3)
   STYLE
    COLOR 255 255 204
    OUTLINECOLOR 85 85 85
   END
  END
Принцип - расцветить субъекты разными цветами, а подпись задать одинаковую. Пришлось вставить в каждый класс. Вот и хочется узнать: подпись отдельно от класса существовать не может, глюк это или я чего не понимаю?
Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: Label для всего слоя

Сообщение Mavka »

Действительно, документация говорит что "only a single class will be used for the rendering of a feature". Значит придется в каждый класс вписывать label. Или создать отдельный слой специально для подписей.

Позиция OGC Symbology Encoding в этом плане противоположная (п. 10.3 Feature filtering):
Filters used in different Rules applicable to the same FeatureTypeStyle are allowed to overlap in terms of the features selected by each rule. The map styler must execute all rules that are applicable to a feature in the order that the rules appear. For example, if one rule for a user style has the (SQL) condition “num_lanes >= 6” and a subsequent rule has the condition “num_lanes >= 4”, then all roads with four or more lanes would cause both rules to “fire”. If the style of the first rule is to draw thick blue lines and the second it to draw thin black lines, then roads with six or more lanes would be drawn with thin black lines over top of thick blue ones. Whether all features are applied to each rule in sequence or whether all suitable rules are applied to each feature in sequence is implementation-specific, although there may be subtle differences in the appearance of maps resulting from each of the approaches.
Коротко: Eсли в стиле есть несколько правил с перекрывающимися условиями, то рисовать нужно оба. Например такой стиль для автодороги:
  • если полос >= 6 - жирная синяя линия
  • если полос >= 4 - тонкая черная
Тогда дорога на 6 полос сначала будет нарисована жирной синей, а потом сработает второе правило и сверху наложится тонкая черная.
лангольеры под окном жрали время ом-ном-ном
Artem
Интересующийся
Сообщения: 29
Зарегистрирован: 01 сен 2010, 05:59
Репутация: 0

Re: Label для всего слоя

Сообщение Artem »

Ясно, спасибо, тогда наверное правильнее прописать LABEL в каждый слой.
Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: Label для всего слоя

Сообщение Mavka »

Еще один вариант. Сделать два слоя - один специально для надписей. А потом свести их вместе используя GROUP
лангольеры под окном жрали время ом-ном-ном
Artem
Интересующийся
Сообщения: 29
Зарегистрирован: 01 сен 2010, 05:59
Репутация: 0

Re: Label для всего слоя

Сообщение Artem »

Group - можно, но тут свои подводные камни: получается что один и тот же слой я вызываю дважды. Это на скорости не скажется? Второе: если я , например, захочу добавить идентификатор (когда мышой тыкаешь и всплывает окно с информацией по слою), то как будет реагировать сервер? Покажет что у меня есть 2 слоя с такой-то информацией?
Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: Label для всего слоя

Сообщение Mavka »

На скорости не скажется. Запрос WMS GetFeatureInfo будет делаться только к источнику данных, а он - один.
лангольеры под окном жрали время ом-ном-ном
Ответить

Вернуться в «Веб-картография»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя