首页 > 代码库 > ArcGIS制图表达Representation-制图表达原理
ArcGIS制图表达Representation-制图表达原理
ArcGIS制图表达技术-制图表达原理
by 李远祥
在讲述原理之前,需要对上一章内容进行一些必要的补充说明。既然制图表达有很多优势,是不是什么情况下都可以使用制图表达技术呢?如果有以下的一些特殊的要求,那么,可以毫不犹豫的使用制图表达
?标准的符号(Symbology)不满足制图要求/规范
?一套空间数据,生产多种制图产品
?需要更加灵活的制图
?专业的地图制图出版
第一点是最需要权衡是否使用制图表达的,因为在ArcGIS制图体系里面,标准的符号技术已经能解决绝大部分问题,只要适当使用一些技巧,也就能无限的贴近制图规范。但是,如果通读了制图规范之后,发现有些符号规则是无法在标准符号体系里面实现的,那就只能考虑使用制图表达了。
第二点是制图表达的特点,允许将多个制图方案(或者说是多种配色风格)保存下来,并随时可以快速更改的,有这样的需求,应该果断使用制图表达。
第三点则是对地图本身的要求。如果希望像PS或coredraw那样灵活进行绘图和处理的,那么在ArcGIS中只能使用制图表达,制图表达里面可以进行自由的绘制和渲染。
第四点是具体的工作模式了,如果是用作专业的地图出版,那就要求非常高了,那就只能用制图表达来满足求生产要求。
制图表达能够很好的解决以下的几个大问题:
?制作更美观的地图
?满足精确定义的制图规范
?使用一套空间数据,生产多种制图产品
?减少人工制图编辑的工作量
?避免使用其他图形编辑软件来二次处理地图产品
只要确定了需要使用制图表达,那接下来就可以根据制图表达流程进行制作了。使用制图表达之前,建议是先做一部分的标准符号渲染,然后再进行转换,这样才可以减少相当一部分的工作量。下图是其基本的操作流程
最快捷的方式在图层渲染做好后,转换为制图表达,ArcGIS会默认分解原来的标准符号规则到制图表达规则中,这样可以减少一些规则的设置。在图层的右键菜单,选择【将符号系统转换为制图表达】,然后在弹出框中输入制图表达的名称,以及规则ID字段名、覆盖字段名,点击确定之后即可实现。如下图
RuleID字段和Override字段分别尤其特殊的作用。其中RuleID 字段是用作记录某个要素所使用的制图表达规则,Override字段则是个blob字段,用于存储制图表达规则特定于要素的覆盖值,那就是说,如果没有任何的规则适用,采用的是像手工编辑那样的修改,这个字段记录的就是这些没依规则的修改值,可以夸张的说,这个字段记录的就像CAD一样的信息。如上一章节提到的运动场的效果,就是完全记录在这一个字段中,ArcMap读取这个字段的信息进行了重新绘制。
制图表达是将其规则和图形绘制保存在数据当中,因此使用了制图表达之后的featureclass就不需要使用mxd来表现了,在数据加载的时候可以选择使用具体的某个制图表达来显示图层。如果一个图像像表达多种风格的话,可以再新多个制图表达,不同的制图表达是独立开来的,会在新的RuleID和Override字段中记录下来,就像下图,多个制图表达就是用多套RuleID和Override字段来区分。
可以看到下图就是多个制图表达记录在数据当中,可以通过左侧的制图表达进行选择进行切换不同的显示方案。
我们可以开看看一个简单的例子,做一个行政区面发光的例子。按照之前所说的流程,线将数据加入到ArcMap中,做一个唯一值渲染将不同的行政区进行区分,并转换为制图表达如下图
转换之后会默认增加一个图层,图层的名称为原来图层名称加上“_rep”,转换后可以将原来的图层删除掉。
在Rep图层中双击或者右键到图层属性,可以看到转换后ArcMap会将制图系统转换到制图表达中去。每一个规则就是当时使用唯一值渲染的唯一值进行区分。这就是我们为什么要先进行简单的符号渲染,然后才转制图表达的原因,确实省掉我们重新划分制图表达的工作。
每一规则都可以在属性值中查看出来,例如打开属性表,可以看到RuleID字段,Override字段默认是不显示的,可以在属性表设置【打开所有字段】来看到它。RuleID显示的名称都是以划分的规则名称名来记录(注意:这个名称不是制图表达规则,它是为了显示当前要素使用了哪一个规则集合而已,真正应用的规则不在属性表中查看)
制图表达规则的查看和设置,必须在制图表达的设置面板中进行设计。选中某一个规则名称,然后点击右上角的加号,弹出制图表达的规则集合,如下图所示
在制图表达中,没有标准符号那么严格规定,标准符号的使用都是严格的定义的,点要素只能用点符号渲染,线要素只能用线符号渲染。但制图表达不一样,它用的是规则,而不是符号,所以,面要素可以用面去显示,也可以用点去显示。每一个要素类型都可以自定义不同的符号,使用不同的规则进行组合。这对于初解除制图表达的人可能非常困惑,但一旦一起来的话,就会发现这些规则组合起来几乎解决了所有的符号渲染问题。
下面我们其中一类面分类进行一个缓冲区的显示,对面要去进行内收缩操作,这类似于使用buffer工具去处理数据一样,但制图表达中并不会产生新的数据。最终的结果就是导致了“江西省”在面填充部分对往边界内收缩了5pt(注意:制图表达设置的单位为pt,因此,在使用全必须先确定出图的比例尺,然后固定下来,各种设置值都要最终换算为pt单位)
其余的几个省份,我们也可以逐个设置铜同样的规则,这样线做成一个缓存面的效果。接下来可以设置不同的面效果,例如做发光效果其实就是一个色彩渐变的效果,可以在右上角的小箭头符号点击,选择【渐变】
渐变效果需要设置一些参数,如初始的颜色和变化的颜色,将颜色1设置为主要显示的颜色,颜色2为过度颜色,为了带到发光的效果,一般使用白色,这样的过度会相当不错
每一个类型都设置对应的渐变参数,最后效果可以看看
中间的这些空隙是专门留出来的,其作用是要做一个比较合理的阴影,让这些发光的面看起来更有立体感(这是制图人员的一种天生的直觉,做的时候就会预留下来)制图表达默认会将符号分解,例如面要素,自动分解为填充的面和线。上一步就是针对面进行了一些调成和设置。接下来就是对线进行一些调整。选中线符号,可以对线进行规则设置。例如这里就先对线进行颜色设置,然后添加一个规则,对线整体偏移一个距离,并调整颜色比原来填充的颜色深一个色阶。如下图,江西省区界加入了深颜色后,变得更有立体感一些。
接下来就是每一个类别设置一次对应的参数,设置好后,可以看看整体的效果
这里再回顾一下刚开始使用标准符号制作的地图,制图表达的视角效果是能够给人带来一定的冲击的。
标准符号渲染图
从上述例子可以看出来,制图表达的能力非常的强悍。在经过一定的训练之后,对这些规则掌握熟练后,几乎可以制作出PS类型的效果。
ArcGIS制图表达Representation-制图表达原理