地图中的文字标注通常是制图时最复杂工作之一,从美观的角度讲,某些规范确实能提高视觉上的效果。如下面的对比图所示,文字有明显的突出效果。这在ArcGIS中称为图层掩膜(Layer Masking)。
大家来找茬之等高线标注提前要说的是,其实有一种比较简单的方法可以实现类似效果,在标注时设置一下文字符号的背景Callout,但是效果比较丑,像打了补丁一样。
文字背景如果要得到更理想的效果,就需要更复杂的操作。操作步骤在帮助文档中已经给出,如果能看懂这篇文档,就不用看后面的内容了。文档也有中文版,但翻译得有点惨不忍睹。由于这篇文档本身比较简略,前辈们虽然学会了,但语焉不详,所以我决定完整的介绍一遍。下文要求你具有最基本的ArcMap操作能力,至少要知道如何设置标注(Label)。
首先要考虑的是标注文字的位置,如果你的等高线标注文字排列比较散乱,像下面一样:
普通标注这其实是一个初级问题,需要使用Maplex标注,并设置为Contour模式,就能让它们排列整齐。
启用Maplex标注 设置Contour模式然后我要倒叙,先说说ArcGIS中图层掩膜是做什么用的。这里有三个图层,矩形fff,椭圆ggg,中间是很丑的六边形ddd。
如果希望矩形和椭圆在六边形区域产生镂空效果,除了真的去裁剪数据之外,可以用图层掩膜在显示时动态处理,像变魔术一样,如下图。
具体操作就是在数据框的右键菜单中,选择Advanced Drawing Options...,弹出窗体中左侧列出的都是面图层(只有面图层才能作为掩膜),右侧列出的是等待被抠的图层。设置好掩膜关系之后,把ddd图层隐藏,就能得到魔术般的效果啦。
了解到图层掩膜的作用之后,等高线的那种效果就好理解了,只要将文字所在的区域构建成面,然后用掩膜就可以了。
但问题1来了,ArcGIS中的文字标注(Label)是动态的,在不同的比例尺下,屏幕上字号的大小一样,意味着所对应的数据面大小是不一样的。
因此想要实现漂亮的效果,首先要确定成图的比例尺,不同的比例尺要分别计算掩膜面。
标注(Label)的动态同时意味着很难计算覆盖面,在转注记(Annotation)时确定了比例尺,对应的面也就确定了。
问题2,虽然注记文字的面积是固定的,但怎么计算呢?
这需要用几个比较冷门的工具,在工具箱Cartography->Masking中有三个工具,都需要Advanced许可。
其中Feature Outline Masks和Intersecting Layers Masks都可以实现这个需求,后者多一个masked_layer参数,有特殊需要时可以让结果更精细一些。masking_layer选注记数据,masked_layer选等高线数据,其它的参数可以慢慢试验。
下图左侧是两个输入图层,右侧绿色的是结果,用作Mask的面数据。
这样数据就准备好了,再使用上面介绍的图层掩膜即可。
到此小结一下,等高线标注的步骤如前辈们所说,先用Maplex的Contour模式控制文字的位置,然后在确定的比例尺下将Label转Annotation,再用Masks工具得到掩膜面,最后用Layer Masking设置掩膜关系。
对于地质图,需要掩膜的通常不是整个图层符号,而只是针对符号中的填充物或网格线,同时保留底色。
大家来找茬之地质图标注这时首先需要知道,网格线效果是由多层符号组合成的。其次,符号的层级可以通过Symbol Levels来设置压盖顺序,这个功能常用于设置立交桥效果。最后,在Layer Masking中也可以通过Symbol Levels的编号细粒度的控制显示效果。
启用Symbol Levels多层符号和Symbol Levels的细节不多说了,编号要根据需要设置好。
最后在Layer Masking中启用Symbol Levels设置,并在对应图层的Levels中填写正确的编号,这些编号所代表的符号层将被掩膜。
Layer Masking中的Symbol Levels设置至此,有关图层掩膜的问题应该都讲清楚了,这里只是简单的说明,实际数据的操作将远比这些更复杂。复杂的功能实现需要付出相当的代价,一个貌似简单的要求,背后的软件、硬件和人工的总成本几乎是不可想象的。
类似这种应对规范的事,本来是我近来最反感的,但从这一功能可以隐约看到ArcGIS的某些设计思想,图层渲染并不仅仅是它自己的事情,纵向可以引出缓存等问题,横向可以引出图层间相互关系的问题,GIS其实远比它看起来更复杂。
网友评论