ArcGIS中标注(label)的使用技巧
- 格式:doc
- 大小:257.50 KB
- 文档页数:4
如何构建标注表达通过表达式为每一个要素构建标注。
表达式遵循脚本语言的规则。
这个表达式可以包括任何有效的被选择的脚本的声明。
字段应该写在方括号内[ ]而不用考虑图层数据源的数据类型。
字段的值会自动的转换成文本型数据。
因此,如果你想在算术运算中用一个数值型的数据,你需要在把它转换回一个数值型的数据。
如果不点选高级选项,那么表达式会被限制在单行。
选择高级选项允许你进入一个包含规划逻辑和多行代码的功能函数里。
表达式例子1.用vb脚本语言的&来连接字符串。
例如,下面的例子产生一个在PARCELNO字段值前添加文本“Parcel no”的标注:“Parcel no:” & [PARCELNO]2.为了控制小数位的显示,用Vb脚本的round函数。
例如显示一字段的1位小数位:Round ([AREA] , 1)3.转换文本到大写字母或者小写字母,用VB脚本语言的UCase或者LCase函数。
例如,转换如下字段到小写字母:LCase ([NAME])4.创建一个多行的文本,用vb脚本语言里的vbnewline或者vbcrlf置于字段之间:“name:”& [name] & vbnewline & [address_1] & vbnewline & [address_2]5.用vb脚本格式化函数格式化标注。
例如,下面这个表达式显示为货币型:“occupancy revenue :”& formatcurrency ([maximum_oc] * [rate])6.这个vb脚本语言是只标注城市人口超过250000的城市名称:Function findlabel ([name],[population])If ([population]>250000) thenFindlabel = [name]End ifEnd functionArcmap 文本格式标签标注会被以标注框中的符号列表的形式绘制出来。
手把手教你如何利用ArcGIS进行复杂标注
一、标注自动生成两个属性值,并分行显示
图1为效果图,标注自动显示经度和纬度,并分行显示。
图层属性如图2所示。
图1
图2
实现方法:采用Expression编程,如下图3所示。
图3
即在对话框输入:"x=" & [x] &vbNewLine&"y="& [y]
二、标注自动按分数显示
如图4所示,要实现该效果,虚线改为实线。
图4
实现方法:
首先将分母和分子的内容分别放在两个字段中,然后在标注的时候,标注内容选择用表达式标注,在表达式的输入
框中输入:
"<UND>" & [分子的字段] & "</UND>" & vbNewLine & [分母的字段]
即可实现分数形式的标注。
效果图如下图5所示。
图5
三、标注的文字垂直显示
如图6所示,这种方式的标注是需要通过Maplex扩展模块支持的。
图6
实现方法:
(1)在labeling工具箱中打开Maplex扩展模块,Label Manager工具下选择“Use Maplex label Engine”,如图7。
图7
(2)选择需要标注的字段,选择“name”字段,如图8。
图8
(3)选择“Text Symbol”下的“Symbol,勾选“CJK”字体设置选项,如图9。
图9 (4)点击确定应用。
标注:
在ArcGIS中使用标注时,需要明白两个要点:
1、ArcGIS中是有两套标注方法的,分别是Maplex标注引擎和标准标注引擎,这两套标注如何选择?右键数据框属性进行选择:
2点线面的标注放置方法是不同的。
先说两套标注引擎有何不同,以点标注为例:
1.1在标准标注引擎中,点标注可以选择放置属性:
点击更改位置,0123代表优先级别,数值越大级别越高。
这里选择仅右上为例:
也可以选择在点上放置:
也可以选择按一定角度放置:
1.2在Maplex标注引擎中,首先放置位置的选择上,上下左右中变成了东南西北中。
但是换汤不换药,我们选择东北方向,即得到标准标注中右上的相同效果:
我们也可以选择自定义区域,1-8自然也是优先级别的意思啦:
那么按属性旋转与标准标注引擎里的“以字段指定的角度进行标注”是同样的效果。
A r c G I S中标注(l a b e l)的使用技巧标注是显示在地图上的文字信息,它是出图中不可或缺的重要元素。
标注的样式丰富,并且放置位置灵活,因此带来了对标注控制的难度。
例如地质图里的上下标,或是一些分式的标注,就必须使用代码编程来实现。
这篇文章就主要结合几个实例来讨论一下标注的使用技巧,以及在ArcGIS软件中的实现。
一、上下标在地质图中经常会使用到上下标的文字,在ArcGIS帮助中可以查看到上下标的写法如下所示:上标:"<SUP>" & [上标字段] & "</SUP>"下标:"<SUB>" & [下标字段] & "</SUB>"但是如果同时需要使用上下标的时候,就会出现这样的显示效果,上下标不会对齐,如果想显示的美观一些,就需要使用到高级的标注技巧,让Maplex这个扩展模块来帮我们解决问题了。
关于Maplex:Maplex是桌面软件的一个扩展模块,ArcGIS的Maplex扩展模块在ArcMap中增加了高级的标注布局和冲突检测的方法。
使用Maplex可以节约很多的时间。
实验表明,在地图上标注,使用Maplex至少可以节约50%的时间。
Maplex是GIS制图的一个重要工具,它提供了很好的文字渲染和具有打印质量的文字布局方式。
上下标的解决方案如下:1. 在数据的表格中将上下标内容存储在一个字段中,用空格分开,例如“上标下标”;2. 在Data Frame(数据框)的属性对话框中把标注引擎调整为“ESRI Maplex Label Engine”;3. 在标注的表达式里敲入以下代码[标注字段]&"<SUP>" & [上下标字段] & "</SUP>"这句代码仅仅采用了上标的关键字,它会把现在的上下标统一显示在上标的位置,下面还需要调整标注的放置属性;4. 点击Placement Properties—Fitting Strategy—Stack Label—Option,进行如下设置得到的效果图如下所示,因为上下标字符的长度不同,右对齐尚不能达到很完美的效果,但是还是改进了许多。
标注是显示在地图上的文字信息,它是出图中不可或缺的重要元素。
标注的样式丰富,并且放置位置灵活,因此带来了对标注控制的难度。
例如地质图里的上下标,或是一些分式的标注,就必须使用代码编程来实现。
这篇文章就主要结合几个实例来讨论一下标注的使用技巧,以及在ArcGIS软件中的实现。
一、上下标在地质图中经常会使用到上下标的文字,在ArcGIS帮助中可以查看到上下标的写法如下所示:上标:"<SUP>" & [上标字段] & "</SUP>"下标:"<SUB>" & [下标字段] & "</SUB>"但是如果同时需要使用上下标的时候,就会出现这样的显示效果,上下标不会对齐,如果想显示的美观一些,就需要使用到高级的标注技巧,让Maplex这个扩展模块来帮我们解决问题了。
关于Maplex:Maplex是桌面软件的一个扩展模块,ArcGIS的Maplex扩展模块在ArcMap中增加了高级的标注布局和冲突检测的方法。
使用Maplex可以节约很多的时间。
实验表明,在地图上标注,使用Maplex至少可以节约50%的时间。
Maplex是GIS制图的一个重要工具,它提供了很好的文字渲染和具有打印质量的文字布局方式。
上下标的解决方案如下:1. 在数据的表格中将上下标内容存储在一个字段中,用空格分开,例如“上标下标”;2. 在Data Frame(数据框)的属性对话框中把标注引擎调整为“ESRI Maplex Label Engine”;3. 在标注的表达式里敲入以下代码[标注字段]&"<SUP>" & [上下标字段] & "</SUP>"这句代码仅仅采用了上标的关键字,它会把现在的上下标统一显示在上标的位置,下面还需要调整标注的放置属性;4. 点击Placement Properties—Fitting Strategy—Stack Label—Option,进行如下设置得到的效果图如下所示,因为上下标字符的长度不同,右对齐尚不能达到很完美的效果,但是还是改进了许多。
在制图时经常会遇到一些比较特殊的标注,比如林业图中的小班标注、地类图斑的扣除标注等,分数形式或上下标等。
分数形式标注要素:
首先将分母和分子的内容分别放在两个字段中,然后在标注的时候,标注内容选择用表达式标注,在表达式的输入框中输入"<UND>"& [分子的字段] & "</UND>" & vbNe wL in e &[分母的字段],即可实现分数形式的标注。
上下角标形式标注要素:
将标注的主体内容、上角标内容和下角标内容分别用三个字段保存。
假设这三个字段分别是:text、super_text和sub_text。
步骤如下:
1.在被标注的图层的属性里,点击“experssion(表达式)”。
2.在弹出的“表达式”窗口中书写表达式如下
[text] & "<sup>" & [super_text] & "</sup>" & "<sub>" & [sub_text] & " </sub>"
其中:
"<sup>" & [super_text] & "</sup>"表示将super_text字段里的内容作为上角标"<sub>" & [sub_text] & "</sub>"表示将sub_text字段里的内容作为下角标。
ArcGIS10等高线打断标注据说AG10将等高线打断标注打包了,但我还是习惯9.2时的动能,所以以下内容基本还是按“套路”来的。
以下涉及图层都在geodatabase中。
1. label标注,属性中选择标注在线上,然后改标注字体大小、颜色等;2. 将label转为annotation:右键该图层,选择convert labels to annotations;3. 修改注记的位置:使图层可编辑,Editor工具条中包含编辑工具(与AG9.2不同);4. 生成掩膜层:cartography tools中选masking tools,后选Feature Outline Masks;5. (1)弹出窗口中mask kind内容如下:Exact—The mask is created to represent the shape, including internal holes, and will follow text exactly.Convex Hull—The mask is created to represent the shape, not including internal holes. For example, it will represent words, not each letter within a word.Box—The mask represents the shape as a rectangular bounding box.第一个保留了字中的空洞,第三个是产生矩形掩膜。
我觉得第二个比较好;(2)create mask for unplaced annotation选择时注意是否所有标注在转注记后都显示了,如果是的那就可以选all features;6. 在layers上右键选择advanced drawing options,弹出窗口中左边一栏选掩膜层,右边选被掩膜的层(等高线)。
标注是显示在地图上的文字信息,它是出图中不可或缺的重要元素。
标注的样式丰富,并且放置位置灵活,因此带来了对标注控制的难度。
例如地质图里的上下标,或是一些分式的标注,就必须使用代码编程来实现。
这篇文章就主要结合几个实例来讨论一下标注的使用技巧,以及在ArcGIS软件中的实现。
一、上下标
在地质图中经常会使用到上下标的文字,在ArcGIS帮助中可以查看到上下标的写法如下所示:
上标:"<SUP>" & [上标字段] & "</SUP>"
下标:"<SUB>" & [下标字段] & "</SUB>"
但是如果同时需要使用上下标的时候,就会出现这样的显示效果,上下标不会对齐,如果想显示的美观一些,就需要使用到高级的标注技巧,让Maplex这个扩展模块来帮我们解决问题了。
关于Maplex:Maplex是桌面软件的一个扩展模块,ArcGIS的Maplex扩展模块在ArcMap中增加了高级的标注布局和冲突检测的方法。
使用Maplex可以节约很多的时间。
实验表明,在地图上标注,使用Maplex至少可以节约50%的时间。
Maplex是GIS制图的一个重要工具,它提供了很好的文字渲染和具有打印质量的文字布局方式。
上下标的解决方案如下:
1. 在数据的表格中将上下标内容存储在一个字段中,用空格分开,例如“上标下标”;
2. 在Data Frame(数据框)的属性对话框中把标注引擎调整为“ESRI Maplex Label Engine”;
3. 在标注的表达式里敲入以下代码
[标注字段]&"<SUP>" & [上下标字段] & "</SUP>"
这句代码仅仅采用了上标的关键字,它会把现在的上下标统一显示在上标的位置,下面还需要调整标注的放置属性;
4. 点击Placement Properties—Fitting Strategy—Stack Label—Option,进行如下设置
得到的效果图如下所示,因为上下标字符的长度不同,右对齐尚不能达到很完美的效果,但是还是改进了许多。
二、分式标注
分式标注是又一个难点,ArcGIS里并不能直接去构造分式,我们可以想办法把分子加下划线来表示,但对于分母的长度比分子长出很多的情况,显示效果就非常不理想。
因此,最好能够动态的判断分子和分母的长度,按照最长的长度来确定分式横线的长度,代码如下所示(VBScript):Function FindLabel ( [分子字段] , [分母字段] )
dim a,b,c
b=len ( [分子字段] )
c=len ( [分母字段] )
if (b>c) then
a=b
else
a=c
end if
FindLabel =[分子字段] & vbnewline& string(a*0.5,"—") & vbnewline & [分母字段]
End Function
对于代分数的话,也可以用类似的方法,只需再添加一个表示整数的字段,代码如下:
Function FindLabel ( [整数字段] , [分子字段] , [分母字段] )
dim a,b,c,d
a=len ( [整数字段] )
b=len ( [分子字段] )
c=len ( [分母字段] )
if (b>c) then
d=b
else
d=c
end if
FindLabel =[分子字段] & vbnewline& [整数字段] & string(d*0.5,"—") & vbnewline & space(a) & [分母字段]
End Function
需要说明的是,这段代码的效果还不能将标注调整到最好的显示效果,但如果你使用了Maplex标注引擎,就会发现效果的改善,如下图所示。
三、分类标注
分类标注适用于为同一图层中的不同要素设置不同的标注样式,例如高速公路和环路、普通道路的字体为不同的大小和颜色。
而标注默认会应用于整个图层,这就需要我们为默认的标注增加一个分组,在图层属性对话框中设置标注的方法为“Define classes of features and label each class differently”,点击Add增加分组(需要几种不同的样式就设置几个分组),并且要为每个分组设置SQL语句进行过滤。
然后为每个组设置不同的标注样式。
总结:由于标注是动态放置,且样式可以通过VBScript和JScript来设置,因而对标注的管理非常灵活。
虽然经过标注技巧和Maplex的优化能够将大部分标注以最优的位置显示,但如果期望对某些单
独修改,可以将标注(Label)转换为注记(Annotation)。