解析 ArcGis 注释(一)--先看小数、伪小数注释是如何实现的--小数注释
这样实现?
[PartCount] +vbnewline+"——"+vbcrlf +[BH]
其实换行两次成了3行,分子与分母距离较远,看起来效果挺差。
改进方法?有的。
这就要引入ArcGis的标注标签了,使用und(下划线)标签为分子字段加个下划线:
"<und>"+[PartCount]+"</und>"+vbcrlf +[BH]
标签的使用方式类似HTML、XML等的标签,由上面的表达式可知(不知道就百度去吧)。效果如下图,由于分子太短,分母太长,分式线显得过于苗条了。
用一个VBScript函数对分子、分母字符串的长度进行比较,如果分母长,就在分子前后加若干空格(“ ”),然后对“空格+分子+空格”使用下划线标签加下划线:
Function FindLabel ( [分子字段], [分母字段] )
Dim fmLength '分母长度
Dim fzLength '分子长度
Dim strSpace '空格
fmLength = Len([分母字段]) 'len函数取字符串长度,字段计算器那儿有讲
fzLength = Len([分子字段]) '博客园 yzhyingcool
If fmLength > fzLength Then '如果分母比分子长
strSpace = Space((fmLength - fzLength)/2) '(fmLength - fzLength)/2 取得两端空格的长度
End If 'space函数生成给定位数空格
FindLabel = "<und>" + strSpace + [分子字段] + strSpace + "</und>" + vbCrLf + [分母字段]
End Function
效果便是这样了:
到这里应该插一个小节讲一下标注函数表达式如何使用
如上图,首先要确定函数使用的语言,然后去点击“Advanced(高级)”,语句块输入框里会自动生成一个名为FindLabel 的函数框架,传入的参数是标注需要的字段,这个函数名字不能改!
然后你就有两种选择,一种是直接在此基础上完成函数,另一种是直接删掉,复制现成的表达式进来修改传入的字段参数。
还有需要提醒的是不建议在ArcMap的标注表达式框里写函数,因为它没有关键词提示、代码高亮、缩进等的功能,不便于代码编写,甚至出错了数出错行数也是个麻烦事情。可以尝试使用Notepad++或者选用语言的IDE,如果使用VBScript可以使用Excel的VBE编辑器。
上一篇: 已禁用 javascript 启用/禁用按钮的说明
下一篇: Javascript 如何定义函数