Вирази міток для заміни нульових значень текстом, що не перебуває у класі функцій


9

Мені потрібно позначити деякі гідранти (бали) - деякі з них належать до пожежної команди та мають присвоєний їм номер, деякі - і, таким чином, не мають номера. Я хотів би написати вираз у рядках:

"Позначте гідрантом з номером, якщо число існує, якщо гідрант має нульове значення" WO "."

Я просто не можу це зрозуміти.

Найпростішим для мене способом було б змінити нульові значення на WO, але дані не є моїми, і я не хочу вносити зміни до них. Я припускаю, що я міг би зробити копію і поставити значення в копію, але в ідеалі мені хотілося б виразу.

Дякую!


Дякую, подумай, що мені все-таки щось не вистачає, це те, що я роблю: 1. Позначте функції мітки в шарі 2. Оберіть «Визначити класи функцій та позначте кожен клас по-різному 3. Додати мітку Клас № 4. Додати клас мітки WO 5 . Поставте галочку "Особливості міток у цьому класі" для кожного <br/> 6. У розділі "Номер" натисніть на використання SQL-запиту ("SYMBOLCODE" = 3) І ("FIREAUTHOR" <> "") 7. Поле мітки встановлено на FIREAUTHOR 8. Для WO SQL є ("SYMBOLCODE" = 3) AND ("FIREAUTHOR" = "") 9. Вираз "WO" 10. Отримати помилку ", жодних функцій не знайдено.
jorp

Відповіді:


9

Ви можете використовувати простий такий скрипт, щоб позначити функції нульовими значеннями.

Function FindLabel ( [yourfield] )
  if isnull( [yourfield]) then
    FindLabel = "WO"
  else
    FindLabel = [yourfield]
  end if
End Function

1
Приємно бачити вас на gis.se. Ваші відповіді на форумах ESRI допомогли багатьом людям, включаючи мене.
Devdatta Tengshe

Дякую - цей сценарій, безумовно, акуратний, але нульові значення не позначаються як WO.
jorp

1
Ви працюєте зі значеннями, які відображаються як <Null> або як пробіли в таблиці атрибутів?
kenbuja

3

Ось що ви можете зробити.

  1. Налаштуйте два класи маркування на вкладці маркування у розділі Метод: Визначте фрази ознак та позначте кожен клас по-різному.
  2. Створіть клас гідранта, який має числа та такий, який не має (наприклад, Number та WO).
  3. Для класу чисел визначте запит SQL як "MyLabelField" <> ""
  4. Наведіть клас номера на правильне поле мітки.
  5. Для класу WO визначте SQL-запит як: "MyLabelField" = ""
  6. Для класу WO під опцією Expression тип "WO"
  7. Увімкніть маркування.

2

Надалі до @kenbuja sript, що є правильною відповіддю; Якщо у вас є комбінація нульових і 0 рядків довжини або пробілів без символів, ви можете зробити щось подібне:

Function FindLabel ( [LABELFIELD] )
  if  isnull([LABELFIELD]) then
    FindLabel = "WO"
  elseif trim([LABELFIELD]) = "" then
    FindLabel = "WO"
  else
    FindLabel = ucase([LABELFIELD])
  end if
End Function
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.