Expressões de rótulo para substituir valores nulos por texto que não está na classe de recurso

9

Preciso rotular alguns hidrantes (pontos) - alguns deles pertencem à brigada de incêndio e têm um número atribuído a eles, outros não e, portanto, não têm um número. Gostaria de escrever uma expressão ao longo das linhas de:

'Rotule o hidrante com número, se o número existir, se o hidrante tiver um rótulo de valor nulo com' WO '.'

Eu simplesmente não consigo entender.

A maneira mais simples de fazer isso seria alterar os valores nulos para WO, mas os dados não são meus e não quero fazer alterações. Suponho que poderia fazer uma cópia e colocar os valores na cópia, mas, idealmente, gostaria de uma expressão.

Obrigado!

jorp
fonte
Obrigado, acho que ainda estou perdendo algo, é o que estou fazendo: 1. Marque Rótulos de recursos na camada 2. Selecione 'Definir classes de recursos e rotule cada classe de forma diferente 3. Adicione rótulo Número da classe 4. Adicione rótulo Classe WO 5 . tick 'label features nesta classe' para cada <br/> 6. Em 'Number', clique em SQL Query use ("SYMBOLCODE" = 3) AND ("FIREAUTHOR" <> "") 7. O campo Label está definido como FIREAUTHOR 8. Para o WO SQL, é ("SYMBOLCODE" = 3) AND ("FIREAUTHOR" = "") 9. A expressão é "WO" 10. Obter erro 'nenhum recurso encontrado.
jorp

Respostas:

9

Você pode usar um script simples como este para rotular os recursos com valores nulos.

Function FindLabel ( [yourfield] )
  if isnull( [yourfield]) then
    FindLabel = "WO"
  else
    FindLabel = [yourfield]
  end if
End Function
kenbuja
fonte
11
É ótimo ver você no gis.se. Suas respostas nos fóruns da ESRI ajudaram muitas pessoas, inclusive eu.
Devdatta Tengshe 14/10
Obrigado - este script é certamente limpo, mas os valores nulos não estão sendo rotulados como WO.
jorp
11
Você está trabalhando com valores que estão aparecendo como <Null> ou como espaços em branco na tabela de atributos?
Kenbuja 14/10
3

Aqui está o que você pode fazer.

  1. Configure duas classes de rotulagem na guia rotulagem, em Método: Definir classes de recursos e rotule cada classe de maneira diferente.
  2. Crie uma classe de hidrante que tenha números e uma que não tenha (por exemplo, Number, & WO).
  3. Para a classe numérica, defina a Consulta SQL como "MyLabelField" <> ""
  4. Aponte a classe numérica para o campo de rótulo correto.
  5. Para a classe WO, defina a consulta SQL como "MyLabelField" = ""
  6. Para a classe WO no tipo de opção Expressão, "WO"
  7. Ative a rotulagem.
artwork21
fonte
2

Além de @kenbuja sript, que é a resposta correta; Se você tiver uma combinação de cadeias de caracteres nulos e 0 ou espaços sem caracteres, poderá fazer algo assim:

Function FindLabel ( [LABELFIELD] )
  if  isnull([LABELFIELD]) then
    FindLabel = "WO"
  elseif trim([LABELFIELD]) = "" then
    FindLabel = "WO"
  else
    FindLabel = ucase([LABELFIELD])
  end if
End Function
Jakub Sisak GeoGraphics
fonte