ArcGIS中应用Expressions标注(Label)之一—上下标、分数等特殊形式
来源:互联网 发布:javascript 跳出循环 编辑:程序博客网 时间:2024/05/21 09:42
分数形式标注要素:
首先将分母和分子的内容分别放在两个字段中,然后在标注的时候,标注内容选择用表达式标注,在表达式的输入框中输入
"<UND>" & [分子的字段] & "</UND>" & vbNewLine & [分母的字段]
"<UND>" & [分子的字段] & "</UND>" & vbNewLine & [分母的字段],即可实现分数形式的标注。
上下角标形式标注要素:
将标注的主体内容、上角标内容和下角标内容分别用三个字段保存。假设这三个字段分别是:text、super_text和sub_text。步骤如下:
1.在被标注的图层的属性里,点击“experssion(表达式)”。
2.在弹出的“表达式”窗口中书写表达式如下
[text] & "<sup>" & [super_text] & "</sup>" & "<sub>" & [sub_text] & "</sub>"
[text] & "<sup>" & [super_text] & "</sup>" & "<sub>" & [sub_text] & "</sub>"
其中:
"<sup>" & [super_text] & "</sup>"表示将super_text字段里的内容作为上角标
"<sub>" & [sub_text] & "</sub>"表示将sub_text字段里的内容作为下角标
用不同颜色标注多字段
"<CLR red='255' green='0' blue='0'>" & [字段] & "</CLR>"&"<CLR red='0' green='0' blue='255'>" & [字段] & "</CLR>"
用不同颜色标注多字段"<CLR red='255' green='0' blue='0'>" & [字段] & "</CLR>"&"<CLR red='0' green='0' blue='255'>" & [字段] & "</CLR>"
"<CLR red='255' green='0' blue='0'>" & [name] & "</CLR>"&"<CLR red='0' green='0' blue='255'>" & [color] & "</CLR>"
Destop中标注多个字段
以前用ArcGIS Label一般也就在图层的Properties里面定义一下Label字体大小和粗细。这两天遇到一个问题,需要在Label中显示多个字段的内容,比如BlockName和CompanyName。其实这个本来不是很难的问题,因为Label中支持VBScript,使用[BlockName] & VbNewLine & [CompanyName]。就可以实现标注中第一行显示BlockName,第二行显示CompanyName.
现在问题出来了,出图时候希望突出BlockName效果,希望加粗显示,而CompanyName使用一般字体。考虑了很长时间终于从ArcGIS帮助中找到了相关的内容,原来Label的VBScript里面支持类似于Html的VBScript标签,比如加粗就是用<BOL>,上面问题就可以使用下面语句解决:
"<BOL>" & [BlockName] & "</BOL>" & VbNewLine & [CompanyName]
"<BOL>" & [BlockName] & "</BOL>" & VbNewLine & [CompanyName]
除了加粗,ArcGIS中还支持下面的文本格式标签:
Font:
"<FNT name='Arial' size='18'>" & [LABELFIELD] & "</FNT>"
Color:
"<CLR red='255' green='255' blue='255'>" & [LABELFIELD] & "</CLR>"
"<CLR cyan='100' magenta ='100' yellow='100' black='100'>" & [LABELFIELD] & "</CLR>"
Bold:
"<BOL>" & [LABELFIELD] & "</BOL>"
Italic:
"<ITA>" & [LABELFIELD] & "</ITA>"
Underline:
"<UND>" & [LABELFIELD] & "</UND>"
All caps:
"<ACP>" & [LABELFIELD] & "</ACP>"
Small caps:
"<SCP>" & [LABELFIELD] & "</SCP>"
Superscript
"<SUP>" & [LABELFIELD] & "</SUP>"
Subscript:
"<SUB>" & [LABELFIELD] & "</SUB>"
Character spacing (%):
"<CHR spacing='25'>" & [LABELFIELD] & "</CHR>"
Word spacing (%):
"<WRD spacing='150'>" & [LABELFIELD] & "</WRD>"
Leading (pts):
"<LIN leading='12'>" & [LABELFIELD] & "</LIN>"
需要注意的是,使用这些标签后,生成的Label语句在Verify按钮中是不生效的,只对最终的显示结果生效。
其实问题还没有最终解决,使用VbNewLine生成的显示结果,上下两行缺省时居中对齐,现在希望它们左对齐显示,还没找到办法。还有一个问题,就是ArcGIS中对点的Label可以选择Label的位置,而对面没有,缺省是放置在中间,现在希望放置在左上角,还没有找到该怎么办。
分数标注
Function FindLabel ( [ZJNR] )
Dim mystr, xx
mystr=[ZJNR]
xx=Split(mystr,"/")
if UBound(xx)>0 then
FindLabel = "<UND>"&xx(1)&"</UND>"&vbNewLine&xx(2)
else
FindLabel = mystr
end if
End Function
left ( [BGCODE] ,6 ) & vbNewLine & right( [BGCODE] ,8 )
同一属性字段值分层显示
[NAME] &vbnewline&"<BOL>"&"<CLR red='0' green='0' blue='0'>" & [DPA_DESPRO] & "</CLR>"&"</BOL>"
字母颜色更换及加粗显示
Function FindLabel ( [STREETNAME] , [STREETCODE] , [SHAPE_Area] )
s1=String( int ( (len ( [STREETNAME] ) + 20 -len ( [SHAPE_Area] ) * 0.5 ) *0.5 ) , " ")
s2=String( int ( (len ( [STREETNAME] ) + 20 -len ( [STREETCODE] ) * 0.5 ) *0.5 ) , " ")
FindLabel = [STREETNAME] & s1& vbnewline & "————" & [SHAPE_Area] & vbnewline & [STREETCODE] & s2
End Function
高级标注用函数进行实现,顾必须以Function开头;VBScript语言以End Function结尾,Jscript语言无要求(按照脚本语言规范来)。
4、链接符:VBScript用‘&’进行连接
Jscript用‘+’进行连接
5、编写脚本完成后,可以通过点击Verify测试下是否有语言错误。
代码示例
1、利用VBS将所有标注前都加上“一品阳光”
- Function FindLabel ( [Name] )
- FindLabel ="一品阳光"& [Name]
- End Function
说明:FindLabel为默认的函数名,自己也可以改为其他,[Name]为字段名。
2、将面积进行四舍五入
- Function FindLabel ( [area] )
- dim q
- q=cdbl( [area] )
- FindLabel = round(q,1)
- End Function
注意:必须将面积进行文本转数值,否则无法通过编辑。若数值为3.213,得到的结果为3.2
分数标注
a、一般方法,没有考虑标注长度,可以添加下划线与换行进行解决
- Function Findlabel([DLDM],[TBBH])
- Findlabel= "<UND>"&[DLDM] &"</UND>"&vbnewline&[TBBH]
- End Function
复制代码
b、复杂一些,考虑长度
- Function FindLabel ( [OBJECTID], [SHAPE_Area] )
- Dim nFMLength
- Dim nFZLength
- nFMLength = Len([SHAPE_Area])
- nFZLength = Len([OBJECTID])
- Dim strLeftSpace
- Dim strRightSpace
- strLeftSpace = ""
- strRightSpace= ""
- If nFMLength > nFZLength Then
- For i=0 To (nFMLength-nFZLength)/2
- strLeftSpace =strLeftSpace +chr(32)
- strRightSpace =strRightSpace + chr(32)
15. Next
16. End If
17.FindLabel = "<UND>" &strLeftSpace & [OBJECTID]&strRightSpace& "</UND>"&chr(13)&chr(10)& [SHAPE_Area]
18.End Function
复制代码
- ArcGIS中应用Expressions标注(Label)之一—上下标、分数等特殊形式
- ArcGIS标注技巧(上标、下标等)
- 谈ArcGIS分数标注的问题 分子分母形式
- ArcGIS中标注(label)的使用技巧
- HTML特殊标记 上标 下标 下划线 删除线等——收集中
- 在label中设置上下标
- ArcGIS Engine标注(Label)
- ArcGIS中的标注“分数样式”实现
- matlab中特殊字符, 上标和下标
- ArcMap中Label标注--高级
- ArcGIS中标注的基本概念
- ArcGIS中标注的基本词汇
- ArcGIS.Server.9.2.DotNet实现动态设置Label标注功能
- ArcGIS.Server.9.2.DotNet实现动态设置Label标注功能
- 将 html代码以文本内容的形式显示在 label 等控件上
- ArcGIS 在地图上添加标注
- SQL Server 特殊字符 上标 下标
- SQL Server特殊字符、上标、下标
- 挑战失败
- Windows 7安装ArcGIS DeskTop10:错误1935解决方法
- 美军航母参加日美联合演习 中方称密切关注动向
- Android SDK更新失败的解决方法
- GIS_相邻社区名称提取
- ArcGIS中应用Expressions标注(Label)之一—上下标、分数等特殊形式
- linux下如何杀死僵死的图形化界面
- java数据库连接池配置的几种方法
- 项目管理知识体系指南(九)项目沟通管理
- 二叉排序树和平衡二叉树
- 求问android sdk 环境搭建办法
- ArcMap 9中ArcToolBox里的mosaic浅析
- 若干细节
- 外部文本坐标生成线-简单-操作性