标签表达式以用要素类中不在的文本替换空值


9

我需要标记一些消火栓(点)-其中一些属于消防队并为其分配了编号,有些则没有,因此也没有编号。我想按照以下方式写一个表达式:

“如果存在数字,则消灭带有数字的消防栓,如果消火栓带有带有” WO”的空值标签。”

我只是想不通。

对我而言,最简单的方法是将null值更改为WO,但数据不是我的,并且我不想对其进行更改。我想我可以制作一个副本并将值放在副本中,但理想情况下,我想要一个表达式。

谢谢!


谢谢,以为我仍然缺少我正在做的事情:1.勾选图层中的标签特征2.选择“定义特征类并以不同方式标记每个类3.添加标签类编号4.添加标签类WO 5 。为每个<br/>标记'此类中的标签功能'。6.在'Number'下,单击SQL Query use(“ SYMBOLCODE” = 3)AND(“ FIREAUTHOR” <>“”)7.标签字段设置为FIREAUTHOR 8.对于WO SQL,是(“ SYMBOLCODE” = 3)AND(“ FIREAUTHOR” =“”) 。9.表达式是“ WO” 。10.获取错误'未找到特征。
jorp

Answers:


9

您可以使用像这样的简单脚本来用Null值标记要素。

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

1
很高兴在gis.se上见到您。您在ESRI论坛上的回答为包括我在内的很多人提供了帮助。
Devdatta Tengshe 2011年

谢谢-这个脚本肯定很整洁,但是没有将空值标记为WO。
jorp 2011年

1
您是否正在使用在属性表中显示为<Null>或空白的值?
kenbuja 2011年

3

这是您可以做的。

  1. 在“方法:定义要素分类”下的“标签”选项卡下设置两个标签类,并对每个类进行不同的标签。
  2. 创建一个有数字和没有数字的消防栓类(例如,Number和&WO)。
  3. 对于数字类,将SQL查询定义为“ MyLabelField” <>“”
  4. 将数字类别指向正确的标签字段。
  5. 对于WO类,将SQL查询定义为“ MyLabelField” =“”
  6. 对于“表达式”选项类型下的WO类,“ WO”
  7. 打开标签。

2

除了@kenbuja sript,这是正确的答案;如果您将null和0长度的字符串或空格组合在一起而没有字符,则可以执行以下操作:

Function FindLabel ( [LABELFIELD] )
  if  isnull([LABELFIELD]) then
    FindLabel = "WO"
  elseif trim([LABELFIELD]) = "" then
    FindLabel = "WO"
  else
    FindLabel = ucase([LABELFIELD])
  end if
End Function
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.