Условие в SLD

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
alphart
Участник
Сообщения: 96
Зарегистрирован: 31 май 2012, 11:55
Репутация: 9
Откуда: Минск

Условие в SLD

Сообщение alphart »

Есть два поля со значениями: type = Автомагистраль; поле scale = 1; 3; и пустое (т.е. три значения для всей таблицы).
Нужна выборка типа type = Автомагистраль и scale не равно 1
Пишем в SLD:
<ogc:Filter>
<ogc:And>
<ogc:PropertyIsNotEqualTo>
<ogc:PropertyName>scale</ogc:PropertyName>
<ogc:Literal>1</ogc:Literal>
</ogc:PropertyIsNotEqualTo>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>type</ogc:PropertyName>
<ogc:Literal>Автомагистраль</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:And>
</ogc:Filter>
По логике на карте должны отобразится значения type = Автомагистраль and scale=3 и
type = Автомагистраль and scale= null (т.е. пустое), однако пустые строки ни в какую не видит и выборку формирует со значением scale=3.
М.б кто-нибудь сталкивался с такой проблемой - как сделать условие на пустые ячейки таблицы?? (такая же проблема и с подписями, когда приходится подписывать по двум полям и когда некоторые значения одного из них могут быть null - подпись не срабатывает).
Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: Условие в SLD

Сообщение Mavka »

Проверьте получаемый документ xml, в нем могут быть удалены пустые (null) ноды и проверять просто нечего. В стандарте не описано поведение функций сравнения в случае NULL-аргумента. Но предлагаются доп. функции:

OGC FE 1.1 (GeoServer)
PropertyIsNull (пустое значение)

OGC FE 2.0
PropertyIsNull (поле отсутствует)
PropertyIsNil (пустое значение)
лангольеры под окном жрали время ом-ном-ном
grozhentsov
Активный участник
Сообщения: 163
Зарегистрирован: 24 янв 2012, 22:02
Репутация: 24
Откуда: Москва
Контактная информация:

Re: Условие в SLD

Сообщение grozhentsov »

Первым делом избавьтесь NULL в полях - ломает все нафик.

Вторым делом не используйте <ogc:PropertyIsNotEqualTo> - проще сделать условие "больше" или "меньше" или вообще выбираете scale = 1 и делаете <Else Filter/>

Можете еще посмотреть фишки ЗДЕСЬ
alphart
Участник
Сообщения: 96
Зарегистрирован: 31 май 2012, 11:55
Репутация: 9
Откуда: Минск

Re: Условие в SLD

Сообщение alphart »

Да, Вы правы - с NULL, как оказалось, работать не хочет.
За презентацию СПАСИБО.
Ответить

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

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

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