Выражения меток для замены пустых значений текстом, отсутствующим в классе объектов

9

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

«Маркируйте гидрант с номером, если номер существует, если гидрант имеет метку с нулевым значением с помощью« WO ».»

Я просто не могу понять это.

Самый простой способ сделать это - изменить нулевые значения на WO, но данные не мои, и я не хочу вносить в них изменения. Я полагаю, что я мог бы сделать копию и поместить значения в копию, но в идеале я хотел бы выражение.

Спасибо!

jorp
источник
Спасибо, думаю, я все еще что-то упускаю, вот что я делаю: 1. Отметьте метки объектов в слое 2. Выберите «Определить классы объектов и по-разному пометить каждый класс 3. Добавьте метку Class Number 4. Добавьте метку Class WO 5 . Отметьте 'метки объектов в этом классе' для каждого <br/> 6. В разделе "Число" нажмите Использовать SQL-запрос ("SYMBOLCODE" = 3) И ("FIREAUTHOR" <> "") 7. В поле «Метка» задано значение FIREAUTHOR. 8. Для WO SQL это ("SYMBOLCODE" = 3) И ("FIREAUTHOR" = "") 9. Выражение: "WO" 10. Get error 'нет возможностей.
Джорп

Ответы:

9

Вы можете использовать такой простой скрипт, чтобы пометить объекты значениями Null.

Function FindLabel ( [yourfield] )
  if isnull( [yourfield]) then
    FindLabel = "WO"
  else
    FindLabel = [yourfield]
  end if
End Function
kenbuja
источник
1
Рад видеть тебя на gis.se. Ваши ответы на форумах ESRI помогли многим людям, включая меня.
Девдатта Тенгше
Спасибо - этот скрипт, конечно, аккуратный, но нулевые значения не помечены как WO.
Jorp
1
Вы работаете со значениями, которые отображаются как <Null> или как пробелы в таблице атрибутов?
Кенбужа
3

Вот что вы можете сделать.

  1. Установите два класса маркировки на вкладке «Метка» в разделе «Метод»: Определите предложения объектов и по-разному маркируйте каждый класс.
  2. Создайте класс гидрантов, который имеет номера, а другой - нет (например, Number и WO).
  3. Для числового класса определите SQL-запрос как "MyLabelField" <> ""
  4. Укажите номер класса на правильное поле метки.
  5. Для класса WO определите SQL-запрос как "MyLabelField" = ""
  6. Для класса WO под типом выражения Expression "WO"
  7. Включите маркировку.
artwork21
источник
2

Далее к сценарию @kenbuja, который является правильным ответом; Если у вас есть комбинация строк или пробелов нулевой длины и длины без символов, вы можете сделать что-то вроде этого:

Function FindLabel ( [LABELFIELD] )
  if  isnull([LABELFIELD]) then
    FindLabel = "WO"
  elseif trim([LABELFIELD]) = "" then
    FindLabel = "WO"
  else
    FindLabel = ucase([LABELFIELD])
  end if
End Function
Якуб Сисак География
источник