Есть два поля со значениями: 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 - подпись не срабатывает).
Условие в SLD
-
- Участник
- Сообщения: 96
- Зарегистрирован: 31 май 2012, 11:55
- Репутация: 9
- Откуда: Минск
- Mavka
- Гуру
- Сообщения: 2060
- Зарегистрирован: 14 мар 2008, 17:36
- Репутация: 9
Re: Условие в SLD
Проверьте получаемый документ xml, в нем могут быть удалены пустые (null) ноды и проверять просто нечего. В стандарте не описано поведение функций сравнения в случае NULL-аргумента. Но предлагаются доп. функции:
OGC FE 1.1 (GeoServer)
PropertyIsNull (пустое значение)
OGC FE 2.0
PropertyIsNull (поле отсутствует)
PropertyIsNil (пустое значение)
OGC FE 1.1 (GeoServer)
PropertyIsNull (пустое значение)
OGC FE 2.0
PropertyIsNull (поле отсутствует)
PropertyIsNil (пустое значение)
лангольеры под окном жрали время ом-ном-ном
-
- Активный участник
- Сообщения: 163
- Зарегистрирован: 24 янв 2012, 22:02
- Репутация: 24
- Откуда: Москва
- Контактная информация:
Re: Условие в SLD
Первым делом избавьтесь NULL в полях - ломает все нафик.
Вторым делом не используйте <ogc:PropertyIsNotEqualTo> - проще сделать условие "больше" или "меньше" или вообще выбираете scale = 1 и делаете <Else Filter/>
Можете еще посмотреть фишки ЗДЕСЬ
Вторым делом не используйте <ogc:PropertyIsNotEqualTo> - проще сделать условие "больше" или "меньше" или вообще выбираете scale = 1 и делаете <Else Filter/>
Можете еще посмотреть фишки ЗДЕСЬ
-
- Участник
- Сообщения: 96
- Зарегистрирован: 31 май 2012, 11:55
- Репутация: 9
- Откуда: Минск
Re: Условие в SLD
Да, Вы правы - с NULL, как оказалось, работать не хочет.
За презентацию СПАСИБО.
За презентацию СПАСИБО.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 6 гостей