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) 的形式保存,该⽂件可加载到其他图层或地图中。
表达式⽰例
以下是标注表达式⽰例:
matlab等高线标注字体大小将字符串串联到字段的值上。例如,以下表达式将创建⼀个标注,其中 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 = Fixed(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" + [ADDRESS_1] + "\r" + [ADDRESS_2]
创建基于某字段⽂本的堆叠⽂本。例如,以下表达式⽤逗号来指定堆叠之处:
Python
def FindLabel ( [LABELFIELD] ):
S = [LABELFIELD]
S = S.replace(', ', '\n')
return S
VBScript
Function FindLabel ( [LABELFIELD] )
FindLabel = replace([LABELFIELD], ", ", vbnewline)
End Function
JScript
function FindLabel ( [LABELFIELD] )
{
var r, re;
var str = [LABELFIELD];
re = /,/g;
r = place(re, "\r");
return r;
}
格式化标注。例如,以下表达式将以货币格式显⽰标注:
Python
def FindLabel ( [MAXIMUM_OC], [RATE] ):
import locale
locale.setlocale(locale.LC_ALL, '')
S = locale.currency(float([MAXIMUM_OC]) * float([RATE]))
return S
VBScript
"Occupancy Revenue: " & FormatCurrency ([MAXIMUM_OC] * [RATE])
JScript
function FindLabel ( [MAXIMUM_OC], [RATE] )
{
var ss;
var num1 = parseFloat([MAXIMUM_OC]);
var num2 = parseFloat([RATE]);
var num3 = num1 * num2
ss = Fixed(2);
return ("$" + ss);
}
指定 if-else 条件语句。如果城市⼈⼝等于或超过 25 万,这些函数会⽤⼤的红⾊字体标注该城市名称,如果城市⼈⼝少于 25 万,则⽤默认标注字体标注该城市名称:
Python
def FindLabel ( [NAME], [POPULATION] ):
if long([POPULATION]) >= 250000:
return "<CLR red='255'><FNT size = '14'>" + [NAME] + "</FNT></CLR>"
else:
return [NAME]
VBScript
Function FindLabel ([NAME], [POPULATION])
if (cLng([POPULATION]) >= 250000) then
FindLabel = "<CLR red='255'><FNT size = '14'>" + [NAME] + "</FNT></CLR>"
else
FindLabel = [NAME]
end if
End Function
JScript
function FindLabel ( [NAME], [POPULATION] )
{
if (parseFloat([POPULATION]) >= 250000){
return ("<CLR red='255'><FNT size = '14'>" + [NAME] + "</FNT></CLR>");
}
else
return ([NAME]);
}
使⽤⽂本格式化标签
ArcGIS ⽂本格式化标签可⽤于修改部分⽂本的格式。这样,您就可以创建具有混合格式的⽂本,例如,为句⼦中的⼀个词语添加下划线。在 ArcMap 中,地图中或地图周围任何放置⽂本的位置⼏乎都可以使⽤⽂本格式化标签。也就是说,在任何可以指定⽂本字符串和⽂本符号的位置都可以使⽤标签。例如,您可以在、、、以及中使⽤标签。ArcMap 的内容列表、表窗⼝、或识别结果窗⼝并不对标签进⾏解析,因此,在这些窗⼝中,添加到字段值的标签将显⽰为纯⽂本。
动态⽂本是另⼀种类型的格式化标签,可根据图形⽂本各个属性的当前值动态更改图形⽂本。它仅⽤于布局视图。动态⽂本标签可以和⽂本格式化标签⼀起使⽤,从⽽在页⾯布局上创建动态混合格式⽂本。
格式化标签语法
格式化标签具有不同的语法,这取决于是在注记还是在标注表达式中使⽤它们。在注记中,标签直接与⽂本字符串串联⽽不使⽤任何特殊字符:
注记
<BOL>Text</BOL>
在标注表达式中,格式化标签必须⽤双引号括起并使⽤ & 运算符将其串连到表达式的其他部分:
标注表达式
"<BOL>" & "Text" & "</BOL>"
"<BOL>" & [LABELFIELD] & "</BOL>"
以下语法规则适⽤于 ArcMap 中的格式化标签:
ArcMap ⽂本格式化标签遵守 XML 语法规则。每个起始标签必须有对应的结束标签。标签可以嵌套,但必须先结束内部标签,然后再结束外部标签:
注记
<BOL><UND>Text</UND></BOL>
标注表达式
"<BOL><UND>" & [LABELFIELD] & "</UND></BOL>"
标签属性可使⽤单引号或双引号括起。以下语句是等效的:
注记
<FNT name='Arial' size='18'>My text</FNT>
<FNT name="Arial" size="18">My text</FNT>
标注表达式
"<FNT name=""Arial"" size=""18"">" & [LABELFIELD] & "</FNT>"
"<FNT name='Arial' size='18'>" & [LABELFIELD] & "</FNT>"
标签对的⼤⼩写必须完全⼀致。所以,<BOL>...</BOL> 是有效的,<bol>...</bol> 也有效,⽽ <Bol>...</bol> 是⽆效的。
解析程序将忽略任何⽆法识别的对应标签对。例如,尽管 <notag> 不是 ArcGIS 的有效格式化标签,但以下字符串是有效的,并且可以正确显⽰:
注记
<notag><BOL>State College<BOL></notag>
标注表达式
"<notag><BOL>" & "State College" & "<BOL></notag>"
“与”号 (&) 和尖括号 (<) 为特殊字符,在使⽤格式化标签时,不能在⽂本中使⽤这些字符。可改⽤相应的字符代码 & 和 <。
注记
不要使⽤ <ITA>John & Paul</ITA>,⽽应该使⽤:
<ITA>John & Paul</ITA>
标注表达式
此表达式显⽰位于 < > 字符之间的标注字段的值:
"<ITA><" & [LABELFIELD] & "></ITA>"
标注表达式
如果标注字段值中嵌⼊了特殊字符,您可以使⽤⼀个简单的标注脚本动态替换这些特殊字符:
Function FindLabel ([LABELFIELD])
NewString = Replace([LABELFIELD],"&","&")
FindLabel = "<ITA>" & NewString & "</ITA>"
End Function
地图中的每段⽂本都包含⼀个绘制时使⽤的符号。格式化标签的⼯作原理是:临时修改该基础⽂本符号并按照标签中指定的格式化设置绘制⽂本的指定部分。绘图⼯具条和符号选择器中的按钮和命令始终反映所选⽂本段的基础⽂本符号的属性,不会反映使⽤格式化标签所做的修改。例如,如果使⽤ <FNT> 标签更改某段⽂本的字体,则在地图中选中该⽂本时,绘图⼯具条中的字体菜单不会反映此更改,它会显⽰⽂本基础符号的字体。
如果标签只是重复基础⽂本符号的现有属性,则标签对⽂本段不起作⽤。⼀般说来,这种⾏为很好理解;例如,如果⽂本字符串中包含⼀个 <BOL> 标签,但基础⽂本符号已经为粗体,此时字符串中的 <BOL> 标签将不起作⽤。此外,由于标签遵守 XML 规则,因此尝试使⽤ </BOL> 标签“关闭”基础⽂本符号的粗体属性为⾮法操作。但可以使⽤ <_BOL> 标签进⾏此操作。
注记
This is bold if the base text symbol is bold <_BOL>, but this is not: </_BOL>
标注表达式
"This is bold if the base text symbol is bold<_BOL>, but this is not: </_BOL>"
构建标注表达式的其他提⽰
以下提⽰将有助于构建:
要检查包含⽂本格式化标签的表达式是否有效,请单击检验按钮或应⽤更改并在地图中查看标注。如果格式化标签或语法⽆效,则标签会在检验窗⼝和地图标注中显⽰为纯⽂本。
标签的解析不是由 Python/VBScript/JScript 来完成,⽽是作为纯⽂本传递到 ArcMap 框架,从⽽在绘制时动态设置格式。对于包含在加引号的字符串中的标签,不必再加引号:
"Current <BOL>status</BOL> of parcel: " & [LABELFIELD]
⽆论是否使⽤标注表达式,您都可以将格式化标签嵌⼊到⽤于标注图层要素的字段值中。这样⼀来,对于标注字段中的特定值,您可以更改其任意部分的格式。只有字符串类型的标注字段⽀持嵌⼊格式化标签。字段值中使⽤的标签和标签属性不必⽤引号括起,因此以下标签字段值有效:
<ITA>Rochester</ITA>
<FNT size='14'>C</FNT>olorado
可在 ArcMap 中使⽤的格式化标签
ArcGIS ⽂本格式化标签可⽤于修改部分⽂本的格式。这样,您就可以创建具有混合格式的⽂本,例如,为句⼦中的⼀个词语加下划线。在 ArcMap 中,地图中或地图周围任何放置⽂本的位置⼏乎都可以使⽤⽂本格式化标签。也就是说,在任何可以指定⽂本字符串和⽂本符号的位置都可以使⽤标签。例如,您可以在、、、、以及中使⽤标签。
ArcMap ⽀持以下格式化元素和标签。该表提供了注记和标注的语法⽰例。注记语法适⽤于数据框和页⾯布局中所使⽤的所有⽂本,以及⽤于标注要素和注记的字段值。标记语法适⽤于动态的标注表达式。在所有标注语法⽰例中,格式化⽂本均可使⽤标注字段进⾏替代。
有关其他语法⽰例,请参阅。
元素描
述起始标
签
结束标
签
有效的属性/值注⽰例语法⽰例输出
字体名
称和/或字号<FNT></FNT>
name =
{TrueType font}
size = {1} scale
= {1-}
设置名称、⼤⼩和⽐
例,或全部设置。
注记
<FNT name = "Arial" size = "12">Text size =
12</FNT> <FNT name = "Arial"
scale="200">Text scale = 200</FNT>
标注
"<FNT name = 'Arial' size = '12'>" & "Text size
= 12" & "</FNT>" & "<FNT name = 'Arial'
scale='200'>" & "Text scale = 200" & "</FNT>"
颜⾊(RGB)<CLR></CLR>
red, green, blue
= {0-255}
缺失的颜⾊属性假定
为 0
注记
<CLR red = "255">Text</CLR>
标注
"<CLR red = '255'>" & "Text" & "</CLR>"
注记
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论