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
VBScript
JScript
步骤:
1. 单击标注 ⼯具条上的标注管理器按钮 。
2. 单击标注分类列表中的标注分类。
3. 单击表达式按钮。
4. 选择解析程序菜单中的⼀种语⾔。
5. 输⼊ Python、VBScript 或 JScript 表达式。也可以创建⼀个表达式,⽅法是双击相应字段,将其添加到表达式中,或选择相应字段并单击追加按钮将该字段追加到表达式的末尾,并⽤空格隔开。
字段⽤⽅括号 [ ] 括起来,⽆需考虑图层数据源的数据类型。
或者,在表达式框中输⼊ ArcGIS ⽂本格式化标签,将格式设置应⽤到⼀部分标注⽂本上。
如果表达式要跨多个代码⾏,请选中⾼级复选框,然后输⼊标注表达式。
6. 单击验证以确保没有语法错误。
int([FIELD1]) + int([FIELD2])
cint([FIELD1]) + cint([FIELD2])
parseInt([FIELD1]) + parseInt([FIELD2])
7. 单击每个对话框上的确定。
cf名字能用的符号提⽰:
常规和⾼级的标注表达式可以标注表达式⽂件 (.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
1function FindLabel ( [AREA] )
2{
3var ss;
4var num= parseFloat([AREA]);
5ss = Fixed(1);
6 return (ss);
7}
将⽂本注记全部转换为⼤写形式或⼩写形式。例如,以下表达式可将“Name”字段中的⽂本全部转换为⼩写形式:
Python
1def FindLabel ( [NAME] ):
2 S = [NAME]
3 S = S.lower()
4 return S
VBScript
LCase ([NAME])
JScript
[NAME].toLowerCase()
将标注⽂本转换为正确的⼤⼩写形式。例如,以下表达式会处理全部以⼤写字母显⽰的“Name”字段并将其转换为正确的⼤⼩写形
式:
Python
1def FindLabel ( [NAME] ):
2 S = [NAME]
3 S = S.title()
4 return S
VBScript
1Function FindLabel ( [NAME] )
2FindLabel = UCase(Left([NAME],1)) & LCase(Right([NAME], Len([NAME]) -1))
3End Function
JScript
1function FindLabel ( [NAME] )
2{
3var str = [NAME];
4var iLen = String(str).length;
5var upper = (str.substring(0,1)).toUpperCase();
6var lower = (str.substring(1, iLen)).toLowerCase()
7return upper + lower;
8}
创建堆叠⽂本。例如,以下表达式创建⼀个标注,该标注中的“名字”字段和两个地址字段都在单独的⾏上:Python
"Name: " + [NAME] + '\n' + [ADDRESS_1] + '\n' + [ADDRESS_2]
VBScript
"Name: " & [NAME] & vbCrLf& [ADDRESS_1] & vbCrLf& [ADDRESS_2]
JScript
"Name: " + [NAME] + "\r" + [ADDRESS_1] + "\r" + [ADDRESS_2]
创建基于某字段⽂本的堆叠⽂本。例如,以下表达式⽤逗号来指定堆叠之处:
Python
1def FindLabel ( [LABELFIELD] ):
2 S = [LABELFIELD]
3 S = S.replace(', ', '\n')
4 return S
VBScript
1Function FindLabel ( [LABELFIELD] )
2FindLabel = replace([LABELFIELD], ", ", vbnewline)
3End Function
JScript
1function FindLabel ( [LABELFIELD] )
2{
3var r, re;
4var str = [LABELFIELD];
5re = /,/g;
6r = place(re, "\r");
7return r;
8}
格式化标注。例如,以下表达式将以货币格式显⽰标注:
Python
1def FindLabel ( [MAXIMUM_OC], [RATE] ):
2 import locale
3 locale.setlocale(locale.LC_ALL, '')
4 S = locale.currency(float([MAXIMUM_OC]) * float([RATE]))
5 return S
VBScript
"Occupancy Revenue: " & FormatCurrency ([MAXIMUM_OC] * [RATE])
JScript
1function FindLabel ( [MAXIMUM_OC], [RATE] )
2{
3var ss;
4var num1 = parseFloat([MAXIMUM_OC]);
5var num2 = parseFloat([RATE]);
6var num3 = num1 * num2
7ss = Fixed(2);
8 return ("$" + ss);
9}
指定 if-else 条件语句。如果城市⼈⼝等于或超过 25 万,这些函数会⽤⼤的红⾊字体标注该城市名称,如果城市⼈⼝少于 25 万,则⽤默认标注字体标注该城市名称:
Python
1def FindLabel ( [NAME], [POPULATION] ):
2 if long([POPULATION]) >= 250000:
3 return "<CLR red='255'><FNT size = '14'>" + [NAME] + "</FNT></CLR>"
4 else:
5 return [NAME]
VBScript
1Function FindLabel ([NAME], [POPULATION])
2 if (cLng([POPULATION]) >= 250000) then
3 FindLabel = "<CLR red='255'><FNT size = '14'>" + [NAME] + "</FNT></CLR>"
4 else
5 FindLabel = [NAME]
6 end if
7End Function
JScript
1function FindLabel ( [NAME], [POPULATION] )
2{
3if (parseFloat([POPULATION]) >= 250000){
4return ("<CLR red='255'><FNT size = '14'>" + [NAME] + "</FNT></CLR>");
5}
6else
7return ([NAME]);
8}
使⽤⽂本格式化标签
ArcGIS ⽂本格式化标签可⽤于修改部分⽂本的格式。这样,您就可以创建具有混合格式的⽂本,例如,为句⼦中的⼀个词语添加下划线。在 ArcMap 中,地图中或地图周围任何放置⽂本的位置⼏乎都可以使⽤⽂本格式化标签。也就是说,在任何可以指定⽂本字符串和⽂本符号的位置都可以使⽤标签。例如,您可以在、 、 、 以及中使⽤标签。ArcMap 的内容列表、表 窗⼝、或识别结果 窗⼝并不对标签进⾏解析,因此,在这些窗⼝中,添加到字段值的标签将显⽰为纯⽂本。
动态⽂本是另⼀种类型的格式化标签,可根据图形⽂本各个属性的当前值动态更改图形⽂本。它仅⽤于布局视图。动态⽂本标签可以和⽂本格式化标签⼀起使⽤,从⽽在页⾯布局上创建动态混合格式⽂本。
格式化标签语法
格式化标签具有不同的语法,这取决于是在注记还是在标注表达式中使⽤它们。在注记中,标签直接与⽂本字符串串联⽽不使⽤任何特殊字符:
注记
<BOL>Text</BOL>
在标注表达式中,格式化标签必须⽤双引号括起并使⽤ & 运算符将其串连到表达式的其他部分:
标注表达式
1"<BOL>" & "Text" & "</BOL>"
2"<BOL>" & [LABELFIELD] & "</BOL>"
以下语法规则适⽤于 ArcMap 中的格式化标签:
ArcMap ⽂本格式化标签遵守 XML 语法规则。每个起始标签必须有对应的结束标签。标签可以嵌套,但必须先结束内部标签,然后再结束外部标签:
注记
<BOL><UND>Text</UND></BOL>
标注表达式
"<BOL><UND>" & [LABELFIELD] & "</UND></BOL>"
标签属性可使⽤单引号或双引号括起。以下语句是等效的:
注记
1<FNT name='Arial' size='18'>My text</FNT>
2<FNT name="Arial" size="18">My text</FNT>
标注表达式
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论