Libellés d'expressions pour remplacer les valeurs nulles par du texte n'appartenant pas à la classe d'entités


9

J'ai besoin d'étiqueter certaines bornes (points) - certaines appartiennent aux pompiers et ont un numéro qui leur est attribué, d'autres non et donc pas de numéro. Je voudrais écrire une expression dans le sens de:

'Étiqueter la borne d'incendie avec un numéro si un nombre existe, si la borne d'incendie a une étiquette de valeur nulle avec' WO '.'

Je ne peux juste pas le comprendre.

Le moyen le plus simple pour moi de le faire serait de changer les valeurs nulles en WO mais les données ne sont pas les miennes, et je ne veux pas y apporter de modifications. Je suppose que je pourrais faire une copie et mettre les valeurs dans la copie, mais idéalement, je voudrais une expression.

Merci!


Merci, je pense qu'il me manque encore quelque chose, voici ce que je fais: 1. Cochez les entités d'étiquette dans la couche 2. Sélectionnez 'Définir les classes d'entités et étiqueter chaque classe différemment 3. Ajouter le numéro de classe d'étiquette 4. Ajouter la classe d'étiquette WO 5 . cochez 'étiqueter les fonctionnalités de cette classe' pour chaque <br/> 6. Sous 'Nombre', cliquez sur SQL Query use ("SYMBOLCODE" = 3) AND ("FIREAUTHOR" <> "") 7. Le champ Label est défini sur FIREAUTHOR 8. Pour WO SQL est ("SYMBOLCODE" = 3) ET ("FIREAUTHOR" = "") 9. L' expression est "WO" 10. Get error 'no features found.
jorp

Réponses:


9

Vous pouvez utiliser un script simple comme celui-ci pour étiqueter les entités avec des valeurs nulles.

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

1
Je suis ravi de vous voir sur gis.se. Vos réponses sur les forums ESRI ont aidé beaucoup de gens, dont moi.
Devdatta Tengshe,

Merci - ce script est certainement soigné, mais les valeurs nulles ne sont pas étiquetées comme WO.
jorp

1
Travaillez-vous avec des valeurs qui apparaissent comme <Null> ou comme des blancs dans la table attributaire?
kenbuja

3

Voici ce que vous pouvez faire.

  1. Configurez deux classes d'étiquetage sous l'onglet d'étiquetage sous la méthode: définir des classes d'entités et étiqueter chaque classe différemment.
  2. Créez une classe de bornes d'incendie qui a des nombres et une qui n'en a pas (par exemple, Number, & WO).
  3. Pour la classe numérique, définissez la requête SQL comme "MyLabelField" <> ""
  4. Pointez la classe numérique vers le champ d'étiquette correct.
  5. Pour la classe WO, définissez la requête SQL comme "MyLabelField" = ""
  6. Pour la classe WO sous le type d'option Expression, "WO"
  7. Activez l'étiquetage.

2

Suite à @kenbuja sript qui est la bonne réponse; Si vous avez une combinaison de chaînes de longueur nulle et nulle ou d'espaces sans caractères, vous pouvez faire quelque chose comme ceci:

Function FindLabel ( [LABELFIELD] )
  if  isnull([LABELFIELD]) then
    FindLabel = "WO"
  elseif trim([LABELFIELD]) = "" then
    FindLabel = "WO"
  else
    FindLabel = ucase([LABELFIELD])
  end if
End Function
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.