Etichettare le espressioni per sostituire i valori null con testo non incluso nella classe caratteristica


9

Devo etichettare alcuni idranti (punti) - alcuni di questi appartengono ai vigili del fuoco e hanno un numero assegnato a loro, alcuni non hanno e quindi non hanno un numero. Vorrei scrivere un'espressione sulla falsariga di:

"Etichetta idrante con numero se esiste un numero, se l'idrante ha un'etichetta con valore null con" WO "."

Non riesco proprio a capirlo.

Il modo più semplice per me di farlo sarebbe cambiare i valori null in WO ma i dati non sono miei e non voglio modificarli. Suppongo che potrei fare una copia e mettere i valori nella copia, ma idealmente vorrei un'espressione.

Grazie!


Grazie, penso che mi manchi ancora qualcosa, questo è quello che sto facendo: 1. Contrassegna le caratteristiche dell'etichetta nel livello 2. Seleziona 'Definisci le classi di caratteristiche ed etichetta ogni classe in modo diverso 3. Aggiungi etichetta Classe Numero 4. Aggiungi Etichetta Classe WO 5 . spuntare 'caratteristiche etichetta in questa classe' per ciascuna <br/> 6. Sotto 'Numero' fare clic su Query SQL usa ("SYMBOLCODE" = 3) AND ("FIREAUTHOR" <> "") 7. Il campo Etichetta è impostato su FIREAUTHOR 8. Per WO SQL è ("SYMBOLCODE" = 3) AND ("FIREAUTHOR" = "") 9. L' espressione è "WO" 10. Errore "nessuna funzione trovata.
jorp

Risposte:


9

È possibile utilizzare uno script semplice come questo per etichettare le funzioni con valori Null.

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

1
È bello vederti su gis.se. Le tue risposte sui forum ESRI hanno aiutato molte persone, incluso me.
Devdatta Tengshe,

Grazie - questo script è sicuramente pulito, ma i valori null non vengono etichettati come WO.
jorp

1
Stai lavorando con valori che vengono visualizzati come <Null> o come spazi vuoti nella tabella degli attributi?
Kenbuja,

3

Ecco cosa puoi fare.

  1. Impostare due classi di etichettatura nella scheda Etichettatura in Metodo: Definire i clasi delle caratteristiche ed etichettare ciascuna classe in modo diverso.
  2. Crea una classe idrante che ha numeri e uno che non lo ha (es. Numero, e WO).
  3. Per la classe numerica, definire la query SQL come "MyLabelField" <> ""
  4. Puntare la classe numerica sul campo etichetta corretto.
  5. Per la classe WO, definire la query SQL come "MyLabelField" = ""
  6. Per la classe WO sotto il tipo di opzione Expression, "WO"
  7. Attiva l'etichettatura.

2

Oltre a @kenbuja sript che è la risposta corretta; Se hai una combinazione di stringhe o spazi nulli e 0 senza caratteri, potresti fare qualcosa del genere:

Function FindLabel ( [LABELFIELD] )
  if  isnull([LABELFIELD]) then
    FindLabel = "WO"
  elseif trim([LABELFIELD]) = "" then
    FindLabel = "WO"
  else
    FindLabel = ucase([LABELFIELD])
  end if
End Function
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.