Arcmap高级标注(通过表达式设置颜色/字体/换行等)

python下多字段换行堆叠不同字体颜色显示:

def FindLabel ( [bz], [Id] ):
  return "<CLR red='255'><FNT size='20'>"+[bz]+"</FNT></CLR>"+'\n'+"<CLR green='255'><FNT size='16'>"+ [Id] +"</FNT></CLR>"

构建标注表达式

可以使用标注表达式来调整标注的格式。除了插入字符和脚本函数以外,您还可以使用标注表达式中的 ArcGIS 格式化标签。这些是用来更改全部或部分标注外观的特殊字符。例如,您可能使用粗体格式化标签使第一条线在一个堆叠、多行的标注中显示为粗体。

了解有关使用文本格式化标签的格式化标注

如果未选中标注表达式 对话框上的高级框,则标注表达式将限制为单行代码。如果选中高级框,您可以输入包含编程逻辑并跨多个代码行的函数。

字段值自动转换为文本字符串。因此,如果想要使用算数运算中的数值或要进行比较时,需要将其转换回数值数据类型。下面的实例添加了两个整型字段:

Python
int([FIELD1]) + int([FIELD2])
VBScript
cint([FIELD1]) + cint([FIELD2])
JScript
parseInt([FIELD1]) + parseInt([FIELD2])

 

步骤:

  1. 单击标注 工具条上的标注管理器按钮 。
  2. 单击标注分类列表中的标注分类。
  3. 单击表达式按钮。
  4. 选择解析程序菜单中的一种语言。
  5. 输入 Python、VBScript 或 JScript 表达式。也可以创建一个表达式,方法是双击相应字段,将其添加到表达式中,或选择相应字段并单击追加按钮将该字段追加到表达式的末尾,并用空格隔开。

    字段用方括号 [ ] 括起来,无需考虑图层数据源的数据类型。

    或者,在表达式框中输入 ArcGIS 文本格式化标签,将格式设置应用到一部分标注文本上。

    如果表达式要跨多个代码行,请选中高级复选框,然后输入标注表达式。

  6. 单击验证以确保没有语法错误。
  7. 单击每个对话框上的确定。
提示:
常规和高级的标注表达式可以标注表达式文件 (.lxp) 的形式保存,该文件可加载到其他图层或地图中。

表达式示例

以下是标注表达式示例:

  • 将字符串串联到字段的值上。例如,以下表达式将创建一个标注,其中 PARCELNO 字段值的前面会加上文本 "Parcel no:":
    Python
    "Parcel no: " + [PARCELNO]
    
    VBScript
    "Parcel no: " & [PARCELNO]
    
    JScript
    "Parcel no: " + [PARCELNO]
    
  • 将小数四舍五入至设定的小数数位。例如,以下表达式可将“Area”字段的值四舍五入为保留一个小数位:
    Python
    round(float([AREA]), 1)
    
    VBScript
    Round ([AREA], 1)
    
    JScript
    function FindLabel ( [AREA] )
    {
    var ss;
    var num= parseFloat([AREA]);
    ss =  num.toFixed(1);
      return (ss);
    }
    
  • 将文本注记全部转换为大写形式或小写形式。例如,以下表达式可将“Name”字段中的文本全部转换为小写形式:
    Python
    def FindLabel ( [NAME] ):
      S = [NAME]
      S = S.lower()
      return S
    
    VBScript
    LCase ([NAME])
    
    JScript
    [NAME].toLowerCase()
    
  • 将标注文本转换为正确的大小写形式。例如,以下表达式会处理全部以大写字母显示的“Name”字段并将其转换为正确的大小写形式:
    Python
    def FindLabel ( [NAME] ):
      S = [NAME]
      S = S.title()
      return S
    
    VBScript
    Function FindLabel ( [NAME] )
    FindLabel = UCase(Left([NAME],1)) & LCase(Right([NAME], Len([NAME]) -1))
    End Function
    
    JScript
    function FindLabel ( [NAME] )
    {
    var str = [NAME];
    var iLen = String(str).length;
    var upper = (str.substring(0,1)).toUpperCase();
    var lower = (str.substring(1, iLen)).toLowerCase()
    return upper + lower;
    }
    
  • 创建堆叠文本。例如,以下表达式创建一个标注,该标注中的“名字”字段和两个地址字段都在单独的行上:
    Python
    "Name: " + [NAME] + '\n' + [ADDRESS_1] + '\n' + [ADDRESS_2]
    
    VBScript
    "Name: " & [NAME] & vbCrLf& [ADDRESS_1] & vbCrLf& [ADDRESS_2]
    
    JScript
    "Name: " + [NAME] + "\r" + [A
  • 2
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值