Вывод надписей

Вопросы по свободной ГИС QGIS. Сообщения об ошибках, предложения по улучшению, локализация.
Ответить
KartaBY
Активный участник
Сообщения: 101
Зарегистрирован: 16 июл 2011, 09:15
Репутация: 6

Вывод надписей

Сообщение KartaBY » 09 фев 2018, 09:05

Добрый день.

Понимиаю, что дело в малом, но это малое найти не могу.

Есть точечный слой с АЗС в шейпах. Мне надо вывести надписи в зависимости от наличия (отсутствия) вида топлива.

так на АЗС на которых нет газа и электро зарядок пишу if( "Газ" = '0' and "Электро" = 'NULL', 1, 0)
при этом ничего не выводится на экран.
если пишу фразу if( "Газ" = '0' and "Электро" = 'NULL', 0, 1) то выводит надпись на всех заправках включая и на которых есть газ и электрозарядки.

Где мои ошибки? Куда копать?
Последний раз редактировалось KartaBY 09 фев 2018, 11:06, всего редактировалось 1 раз.

freeExec
Гуру
Сообщения: 1195
Зарегистрирован: 23 апр 2011, 10:32
Репутация: 205
Откуда: Ульяновск

Re: Вывод надписей

Сообщение freeExec » 09 фев 2018, 09:52

У вас NULL в данных как текст или как отсутствуют данные?

KartaBY
Активный участник
Сообщения: 101
Зарегистрирован: 16 июл 2011, 09:15
Репутация: 6

Re: Вывод надписей

Сообщение KartaBY » 09 фев 2018, 10:11

Как отсутствуют данные

nikost
Активный участник
Сообщения: 107
Зарегистрирован: 16 июл 2015, 15:21
Репутация: 35
Откуда: Санкт-Петербург

Re: Вывод надписей

Сообщение nikost » 09 фев 2018, 10:13

может как-то так?

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

if ( ("Газ" = '0' and "Электро" = 'NULL'), "поле,которым_хотите_подписать","")

KartaBY
Активный участник
Сообщения: 101
Зарегистрирован: 16 июл 2011, 09:15
Репутация: 6

Re: Вывод надписей

Сообщение KartaBY » 09 фев 2018, 10:24

В моем случае пишет что не верное выражение

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

 if( "Газ" = '0' and  "Электро" =  'NULL',  "concat( 'АЗС №' ,  "N" )", 1)

trir
Гуру
Сообщения: 5278
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1014
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: Вывод надписей

Сообщение trir » 09 фев 2018, 10:32

а кавычки экранировать Пушкин будет?

nikost
Активный участник
Сообщения: 107
Зарегистрирован: 16 июл 2015, 15:21
Репутация: 35
Откуда: Санкт-Петербург

Re: Вывод надписей

Сообщение nikost » 09 фев 2018, 10:42

За скобочками следите и кавычки пустые не пропустите для отрицательного результата (вам же не единичку в надписи надо). И вместо concat можно || использовать.

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

 if( ("Газ" = '0' and  "Электро" =  'NULL'),  ( "АЗС №"   || " " || "N"), "" )   
(если я вообще правильно понял задачу - вывести надпись только заправок без газа и электро...)

freeExec
Гуру
Сообщения: 1195
Зарегистрирован: 23 апр 2011, 10:32
Репутация: 205
Откуда: Ульяновск

Re: Вывод надписей

Сообщение freeExec » 09 фев 2018, 10:46

Так напишите

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

"Электро" IS  NULL

KartaBY
Активный участник
Сообщения: 101
Зарегистрирован: 16 июл 2011, 09:15
Репутация: 6

Re: Вывод надписей

Сообщение KartaBY » 09 фев 2018, 10:55

(если я вообще правильно понял задачу - вывести надпись только заправок без газа и электро...)
Все верно

И код не работает.

Уже и null заменил просто на 0. (Благо заправок 80 штук)
Не помогает.

nikost
Активный участник
Сообщения: 107
Зарегистрирован: 16 июл 2015, 15:21
Репутация: 35
Откуда: Санкт-Петербург

Re: Вывод надписей

Сообщение nikost » 09 фев 2018, 10:58

freeExec писал(а):
09 фев 2018, 10:46
Так напишите

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

"Электро" IS NULL
Точно!

KartaBY
Активный участник
Сообщения: 101
Зарегистрирован: 16 июл 2011, 09:15
Репутация: 6

Re: Вывод надписей

Сообщение KartaBY » 09 фев 2018, 11:04

Помог такой вариант.

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

 if( ("Газ" + "Электро" =  '0'), 1, 0 )
Теперь выводит как надо. Почему не срабатывали другие варианты для меня загадка.

За помощь всем спасибо.

Ответить

Вернуться в «QGIS»

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

Сейчас этот форум просматривают: Amazon [Bot] и 6 гостей