Expresiones de etiquetas para reemplazar valores nulos con texto que no está en la clase de entidad

9

Necesito etiquetar algunos hidrantes (puntos): algunos de estos pertenecen a la brigada de bomberos y tienen un número asignado, otros no y, por lo tanto, no tienen un número. Me gustaría escribir una expresión a lo largo de las líneas de:

'Etiquete el hidrante con un número si el número existe, si el hidrante tiene una etiqueta de valor nulo con' WO '.'

Simplemente no puedo entenderlo.

La forma más sencilla de hacer esto sería cambiar los valores nulos a WO, pero los datos no son míos y no quiero hacer cambios en ellos. Supongo que podría hacer una copia y poner los valores en la copia, pero idealmente me gustaría una expresión.

¡Gracias!

jorp
fuente
Gracias, creo que todavía me falta algo, esto es lo que estoy haciendo: 1. Marque las características de la etiqueta en la capa 2. Seleccione 'Definir clases de características y etiquete cada clase de manera diferente 3. Agregue la etiqueta Número de clase 4. Agregue la clase de etiqueta WO 5 . garrapata 'etiqueta ofrece en esta clase' para cada <br/> 6. Bajo 'Número' haga clic en el uso de consultas SQL ( "SYMBOLCODE" = 3) Y ( "FIREAUTHOR" <> "") 7. campo etiqueta se establece en FIREAUTHOR 8. Para WO SQL es ("SYMBOLCODE" = 3) AND ("FIREAUTHOR" = "") 9. La expresión es "WO" 10. Obtener error 'no se encontraron características.
jorp

Respuestas:

9

Puede usar un script simple como este para etiquetar las características con valores nulos.

Function FindLabel ( [yourfield] )
  if isnull( [yourfield]) then
    FindLabel = "WO"
  else
    FindLabel = [yourfield]
  end if
End Function
kenbuja
fuente
1
Es genial verte en gis.se. Sus respuestas en los foros de ESRI han ayudado a mucha gente, incluyéndome a mí.
Devdatta Tengshe
Gracias, este script es ciertamente bueno, pero los valores nulos no se etiquetan como WO.
jorp
1
¿Está trabajando con valores que se muestran como <Nulo> o como espacios en blanco en la tabla de atributos?
kenbuja
3

Esto es lo que puedes hacer.

  1. Configure dos clases de etiquetado en la pestaña de etiquetado en Método: defina clases de características y etiquete cada clase de manera diferente.
  2. Cree una clase de hidrante que tenga números y una que no (por ejemplo, Número y WO).
  3. Para la clase de número, defina la consulta SQL como "MyLabelField" <> ""
  4. Apunte la clase de número al campo de etiqueta correcto.
  5. Para la clase WO, defina la consulta SQL como "MyLabelField" = ""
  6. Para la clase WO bajo el tipo de opción Expresión, "WO"
  7. Encienda el etiquetado.
artwork21
fuente
2

Además de @kenbuja sript, que es la respuesta correcta; Si tiene una combinación de cadenas o espacios de longitud nula y 0 sin caracteres, puede hacer algo como esto:

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
fuente