该“标注”系列博文的标注引擎使用“标准标注引擎(standard label engine)”,这个概念如不知道,可不理会,ArcGis默认标注引擎就是它。

ArcGis的标注表达式支持VBScript、Jscript、Python ,3种脚本语言进行语句解析。一般我们常用的是VB、Python。

普通标注这里不做讲述,先从一个简单的换行标注开始讲起。

两行标注

可以很简单的通过下面的VB语句来实现

[字段1] +VB换行符+ [字段2]

VB的换行符一般用vbnewline,它与vbcrlf是等价的,在ArcGis的字段计算器或者标注表达式中其实还可以用chr(10)、chr(13)、chr(10)+chr(13)来替代。

先了解一下chr函数,它是将ASCII码值返回对应的字符,这篇文章的读者应该会对这个概念比较陌生,有兴趣不妨自己去查一下chr函数与ASCII。

chr(10)—>vblf—>换行;

chr(13)—>vbcr—>回车;

chr(10)+chr(13)—>vbcrlf(vbnewline)—>换行回车

上面vb……的东西是VB语言中的预置常数,其值就是对应的chr函数返回值。

下面几种组合的结果是一样的

[PartCount] +vbnewline+ [BH]

[PartCount] +chr(10)+ [BH]

[PartCount] +vbcr+ [BH]

[PartCount] +chr(10)+chr(13)+ [BH]

这样的标注只能叫两行标注,它离分式标注还差一条分式横线。

分式标注

这样实现?

[PartCount]  +vbnewline+"——"+vbcrlf +[BH]

其实换行两次成了3行,分子与分母距离较远,看起来效果挺差。

改进方法?有的。

这就要引入ArcGis的标注标签了,使用und(下划线)标签为分子字段加个下划线:

""+[PartCount]+""+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)/) '(fmLength - fzLength)/2 取得两端空格的长度

End If 'space函数生成给定位数空格

FindLabel = "" + strSpace + [分子字段] + strSpace + "" + vbCrLf + [分母字段]

End Function

效果便是这样了:

到这里应该插一个小节讲一下标注函数表达式如何使用

如上图,首先要确定函数使用的语言,然后去点击“Advanced(高级)”,语句块输入框里会自动生成一个名为FindLabel  的函数框架,传入的参数是标注需要的字段,这个函数名字不能改!

然后你就有两种选择,一种是直接在此基础上完成函数,另一种是直接删掉,复制现成的表达式进来修改传入的字段参数。

还有需要提醒的是不建议在ArcMap的标注表达式框里写函数,因为它没有关键词提示、代码高亮、缩进等的功能,不便于代码编写,甚至出错了数出错行数也是个麻烦事情。可以尝试使用Notepad++或者选用语言的IDE,如果使用VBScript可以使用Excel的VBE编辑器。

假分数样式

使用下面的VBScript函数实现:

Function FindLabel ( [整数字段] , [分子字段], [分母字段] )

Dim fmLength '分母长度

Dim fzLength '分子长度

Dim zsLength '整数长度

Dim hxLength '分式线长度

fmLength = Len([分母字段]) 'len函数取字符串长度,字段计算器那儿有讲

fzLength = Len([分子字段]) '博客园 yzhyingcool

zsLength = Len([整数字段])

If fmLength > fzLength Then '如果分母比分子长

hxLength=fmLength

else '反之

hxLength=fzLength

End If

'下面的"-"或"—"根据英文(数字)或者中文进行调整即可

FindLabel = space(zsLength)+[分子字段] +vbcrlf+[整数字段]+ string(hxLength,"-")+vbcrlf+space(zsLength)+ [分母字段]

End Function

效果如图:

其实这个样式是由我们开始便讲到的“3行标注分式”进化而来的,没错,这个假分数就是3行:

第一行→整数长度的空格+分子;

第二行→整数+分式线(根据分子分母的中英文调整"-"或"—");

第三行→整数长度的空格+分母

解析ArcGis的标注(二)——认识ArcGis标注标签

该“标注”系列博文的标注引擎使用“标准标注引擎(standard label engine)”,这个概念如不知道,可不理会,ArcGis默认标注引擎就是它. 本篇的标注语句解析使用VBScript,注 ...

解析ArcGis的标注(三)——标注的放置 与 转注记修改

该“标注”系列博文的标注引擎使用“标准标注引擎(standard label engine)”,这个概念如不知道,可不理会,ArcGis默认标注引擎就是它. 写着写着发现ArcGis标注的破事儿好多啊 ...

解析ArcGis的字段计算器(三)——文本型字段计算,编号那些事儿

实际操作中我们一般会将编号字段定义为文本型,因为编号不是序号,序号是一个递增数值,而编号往往是一个数字串代码. 本篇无说明的均使用VBScript语句1.怎么编号?最简单的编号—>直接在编号字段 ...

扩展ArcGIS API for Silverlight/WPF 中的TextSymbol支持角度标注

原文 http://blog.csdn.net/esricd/article/details/7587136 在ArcGIS API for Silverlight/WPF中原版的TextSymbol ...

解析ArcGis的字段计算器(一)——数值型数据计算,从“面积计算”开始

先来点儿背景知识铺垫: ArcMap的字段计算器提供了两种脚本语言的支持用以计算,两种脚本语言是VBScript与Python. 多数人选择使用前者,因为它的基本函数和Excel的函数貌似一样.注意我 ...

解析ArcGis拓扑——根据拓扑错误记录提取shp文件、导出Excel表格

在ArcGis拓扑检查的流程——以面重叠检查为例中讲述了如何在ArcGis进行拓扑检查与修改. 在实际操作中,有时我们还需要将ArcGis拓扑检查的结果制作成报告或者提取错误信息反馈作业方. 本文仍然 ...

解析ArcGis的字段计算器(二)——有玄机的要素Geometry属性,在属性表标记重复点线面

这里所说的重复是指完成重复的,不是叠在一起的两个或多个要素,这种应该叫做“压盖”或“重叠”.重复往往是在合并多Shpfile文件时不小心重复导入造成的. 这里提供一种可能的解决办法,数据无价,请备份! ...

解析ArcGis拓扑——检查的流程,以面重叠检查为例

最简单的面重叠错误检查是使用“地理处理”——“面相交”进行检查,其结果是重叠部分提取而成的新面要素类.本例不讲述此种方法. step1 准备待拓扑检查数据 名词: 数据库 DataBase→顾名思义, ...

ArcGis辅助编号(半自动)功能的插件式实现

应邀写了一个ArcGis(ArcMap更确切一些)的辅助编号功能,其实只要想通了实现逻辑,实现的过程蛮简单的.相比挨个儿点要素写进编号或者借助“按键精灵”写入,直接操作宿主真是爽快得不能自已.无图言屌 ...

随机推荐

【原】git如何删除本地和远程的仓库

今天操作git时遇到一个小问题:如何删除本地和远程的仓库,在网上巴拉一番解决了这个问题. 方法1: $rm testfile$git add -u $git commit -m "delet ...

如何重装air

参考这里 很多年没有装过系统了,手贱用xxcleaner清理了下,好吧,我觉得只能重装了,直接贴过程吧 ,开机同时command+R,进入菜单 ,抹掉磁盘 ,重启,等在线更新(看各位运气了,网速好的话 ...

HTml <meta>标签的使用(重要)

元素可提供有关页面的元信息(meta-information),比如针对搜索引擎和更新频度的描述和关键词. 1.设置网页字符编码

HP SimpleXML

PHP SimpleXML PHP SimpleXML 处理最普通的 XML 任务,其余的任务则交由其它扩展处理. 什么是 PHP SimpleXML? SimpleXML 是 PHP 5 中的新特性 ...

python:windows下python2.7安装mysql-python失败【转】

转自:https://www.cnblogs.com/yujiebingqing/p/9633476.html 当我们尝试用: 1 pip install mysql-python #并不是MySQL ...

用C++实现半透明按钮控件(PNG,GDI+)

使用MFC实现上面的按钮半透明效果能看到父窗口中的内容,上面是效果图(一个是带背景图片的.另一个是不带的). 控件继承自CWnd类(彩色的部分是窗口的背景图片.按钮是PNG图片,第二个图标是鼠 ...

129. Sum Root to Leaf Numbers pathsum路径求和

[抄题]: Given a binary tree containing digits from 0-9 only, each root-to-leaf path could represent a ...

Flex 布局教程转载

Flex 布局教程:语法篇 http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html Flex 布局教程:实例篇 http://www.ruan ...

css 初级进阶

摘自:https://www.jianshu.com/p/dcc40ccc9841 CSS中级 Class和ID选择器 CSS初级教程中我们可以使用HTML标签选择器定义样式. 同样你也可以使用Cla ...

SecureCRT SSH主机秘钥配置文件管理

选择Options(选项)->Global Options(全局选项)-> SSH HOST Keys

python输出假分数_解析ArcGis的标注(一)——先看看分数式、假分数式标注是怎样实现的...相关推荐

  1. arcgis标注牵引线_解析ArcGis的标注(三)——标注的放置 与 转注记修改

    该"标注"系列博文的标注引擎使用"标准标注引擎(standard label engine)",这个概念如不知道,可不理会,ArcGis默认标注引擎就是它. 写 ...

  2. arcgis工具python源码_面向Arcgis的python脚本编程_数据

    [实例简介] <面向ArcGIS的Python脚本编程>是一本指导ArcGIS for Desktop专业用户进行Python开发的指南.该书将教会您如何通过编写Python代码处理空间数 ...

  3. 基于arcgis的python编程秘籍_基于ArcGIS的Python编程秘笈 第2版

    第1章 面向ArcGIS的Python语言基础1 1.1 使用IDLE进行Python脚本开发 2 1.1.1 Python Shell窗口 2 1.1.2 Python脚本窗口 3 1.1.3 编辑 ...

  4. python输出二进制数_二进制中1的个数(python)

    题目描述:输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 分析:如果一个整数不为0,那么这个整数至少有一位是1.如果我们把这个整数减1,那么原来处在整数最右边的1就会变为0,原来在1 ...

  5. python输出可执行文件_重定向-禁止在Python调用中输出可执行文件

    重定向-禁止在Python调用中输出可执行文件 我有一个名为B的二进制文件,该文件在调用时会生成输出. 如果从Bash shell调用它,则大多数输出将受到A > /dev/null的抑制.所有 ...

  6. python方法定义..._解析Python类中的方法定义

    最近在学习类过程中,绑定方法这个概念没有理解透彻,所以在网上找了很多相关博客.文章研究到底是怎么一回事.因为有的文章所陈述与我在python3.5版本实际实验中有些出入,所以经过实践后总结出以下结论. ...

  7. 两个输出文件名解析为同一输出路径_解析 crash log(一)

    前言 在负责的产品中有最近一段时间有极个别用户老是反馈有偶尔闪退的情况,而且就这几个用户反复出现,其它用户,甚至就坐在他边上的用户进行了一样的操作都没有任何问题. 刚开始丢了个重现构建的新包给这几位用 ...

  8. python输出运行时间_分析python程序运行时间的几种方法

    最早见过手写的,类似于下面这种: 1 import datetime 2 3 def time_1(): 4 begin = datetime.datetime.now() 5 sum = 0 6 f ...

  9. python输出方格_使用Python实现LBM(格子法)方腔驱动流

    使用Python实现LBM(格子法)方腔驱动流 Python的不足: Python的最大优势也可能是它最大的弱点:它的灵活性和无类型的高级语法可能导致数据和计算密集型程序的性能不佳.-- 动态类型化解 ...

最新文章

  1. PHP性能调优---PHP-FPM配置及使用总结
  2. 关于如何在Nomad中保护工作部署的工作流的简要历史
  3. Redis 16 大应用场景,竟然这么多。。
  4. 一、华为云ModelArts环配置
  5. JSON 使用 教程
  6. 【BZOJ3640】JC的小苹果 概率DP+高斯消元
  7. obj type using in findobj
  8. 浅谈Cache Memory
  9. cocos2d-x 之 简单数据存储——Userdefault
  10. 嵌入式ttf字体裁减说明
  11. Java中NumberFormat格式化数字
  12. Java项目:Springboot图书馆图书借阅管理系统
  13. WWW15年:改变世界的15个网站
  14. android 阅读器字体,Android字体设置及Roboto字体使用方法
  15. 京东区块链技术实践白皮书2020
  16. 【PLC编程】西门子工艺对象 – 连续控制器CONT_C的使用
  17. 绘制logisitc回归的风险预测值的nomogram图
  18. 计算机考研报名专业是哪个,考研报名毕业专业计算机怎么填?
  19. IOS 图片点击放大不失真
  20. java日志优雅打印格式_优雅编程之日志排查Log4j

热门文章

  1. 罗振宇2023“时间的朋友”跨年演讲原版PPT(附下载)
  2. go 语言的相对路径
  3. CDN加速-内容分发网络
  4. 苹果挺进“可折叠”手机赛道,柔性屏将迎来大发展
  5. c语言为什么运行不出数据,程序运行后可以输入数据,但是之后为什么没有显示?...
  6. 一维矩阵和二维矩阵的前缀和
  7. 爱因斯坦的题目:在你面前有一条长长的阶梯,如果每步跨2阶,那么最后剩1阶;如果每步跨3阶,那么最后剩2阶.....................
  8. 阿里P8架构师深度概述分布式架构
  9. 44000+ 人一夜之间失业:一拖二懒三不读书,不淘汰你淘汰谁?
  10. 全文搜索引擎Elasticsearch安装(Windows),elasticsearch-php使用案例