底图图层和地图服务通过使用高性能的绘制引擎来实现更好的性能和绘制质量。此绘制引擎为所有受支持的符号类型提供了极佳的性能。
此绘制引擎与 ArcMap 中所使用的绘制引擎不同,在地图服务中绘制的地图在外观上存在一些重要差异。准备窗口中的“警告”用于告知您其中所存在的许多差异。
以下各部分内容描述了绘制中的某些差异,以及这些差异产生的原因。
文本和字符标记抗锯齿
在 ArcMap 中,由字体平滑设置参数来控制文本和字符标记的抗锯齿效果,这在计算机的显示设置中进行配置。这些设置是针对每个用户而设置的,并没有配置为地图服务的一部分。
在地图服务中,这些设置是针对服务进行配置的,并且存储为服务定义文件 (.sd) 的一部分。这些文本抗锯齿设置是在服务编辑器的参数选项卡上设置的。
底图图层中所绘制的文本始终通过强制选项进行绘制。底图图层中的标注将始终使用 ArcMap 中的显示进行绘制,并且将遵守上述的计算机设置。
因为底图图层和地图服务绘制引擎使用不同的方式来启用文本和字符抗锯齿,而且用于执行抗锯齿的算法也是不同的,因此与 ArcMap 显示相比,文本和字符标记的渲染可能会显示出一些差异。
坐标取整差异
在 ArcMap 中,往往通过整数坐标来指定屏幕上显示的元素。如果要素(如,线或标记)的实数坐标没有准确地位于整数坐标上,则将对其取整(上舍入或下舍入)。此操作可能会导致某些误差,特别是在线非常细或者线具有非常细的元素(如下管线)的情况下。在指定的缩放级别或显示范围内,大小小于一个像素的线将被上舍入为一个像素。
在底图图层和地图服务中,绘制引擎可以使用亚像素坐标在地图上放置和绘制要素。这使得要素放置和符号系统更加准确。
但是,如果地图的符号系统初始是在 ArcMap,中设计的,那么底图图层或地图服务中的外观可能会有所不同。这种情况在线符号系统中特别明显。
有关上述问题以及如何设计适合指定目标分辨率的线符号的详细信息,请参阅地图服务中的线锯齿。在大多数情况下,在底图图层中不会出现此问题,因为底图图层会自动修正这个问题。
底图图层和地图服务中的简单符号
简单符号(简单线符号、简单填充符号和简单标记符号)有时在 ArcMap 中显示不一致,因此在底图图层或地图服务中的绘制方式可能与在 ArcMap 中的不同。准备窗口中的某个分析器可能会告知您其中的一些差异。
例如,使用虚线或点划线模式的简单线符号将不依据地图的参考比例,而是依据所请求的 dpi,通过不同的间距进行绘制。但在底图图层或地图服务中,这些符号将依据地图参考比例,而且不会随所请求的 dpi 发生更改。
对于简单填充符号,ArcMap 用户界面未提供“样式”属性,但是许多开发实例与其他第三方代码片段可能在地图中创建这些符号。除了 esriSFSSolid 之外的其他样式在底图图层或地图服务中均不受支持,并且分析时会出现错误警告。
对于简单标记符号,简单标记行为会随着标记显示的大小而更改,这会在大小和形状上引起一些变化。
底图图层和地图服务始终以所请求的大小来显示标注符号。在 ArcMap 中,当简单标记符号大小低于某个阈值时,它不会以比阈值小的任何方式绘制这种标记符号。这意味着,当到达此阈值时,底图图层或地图服务将继续以准确的大小来显示这些符号。而 ArcMap 不会这样,因此会导致明显的不匹配。
底图图层和地图服务中的线整饰
当线整饰(如线箭头)大于所整饰的要素的线长度时,ArcMap 中包含线整饰的线符号将不会绘制线整饰。而对于底图图层和地图服务所使用的绘制引擎,无论线的大小如何,都会始终绘制线整饰。在某些比例时,这会导致比 ArcMap 中更加凌乱的外观,但线整饰的绘制方式是一致的,也是可预测的。
底图图层和地图服务中的颜色
底图图层和地图服务使用的绘制引擎使用了一种颜色管理引擎。因此,某些颜色可能与 ArcMap 中所显示的外观颜色无法准确匹配。
ArcMap 不使用颜色管理。特别是使用以下两项时,您会发现颜色上的区别:
- 在 RGB 以外的颜色空间中定义的颜色(例如,在 HSV、CMYK 或灰度中定义的颜色)
- 使用 HSV、CIELab 或 LABLch 算法的算法色带
查看 ArcMap 中的底图图层或使用通过服务编辑器打开的预览窗口,您可以对地图外观进行评估,并确定颜色和符号系统是否是可接受的。
当您创作用于地图服务的地图时,将地图服务中的颜色差异最小化的一种方法是在 ArcMap 中更改显示器设置。
要访问显示器设置,在任何符号属性对话框中,单击颜色样本上的下拉菜单,然后选择更多颜色。
在颜色选择器对话框中,单击右上角的箭头按钮,选择显示器设置。
在显示器设置对话框中,将 Gamma 设置更改为 2.2,然后单击确定关闭对话框。
这会指示 ArcMap 使用与底图图层和地图服务的绘制引擎所使用的颜色配置文件更为匹配的 gamma 值。
底图图层和地图服务中的字体处理差异
与 ArcMap 相比,底图图层或地图服务中的字体处理略有不同。有两个主要差异:
- 底图图层和地图服务无法绘制仿斜体或仿粗体样式。对地图文档进行分析时,将触发警告。
- 当某个特殊字符集或字型不可用时,底图图层和地图服务不提供字体回退。
仿斜体或仿粗体是指字体在粗体或斜体样式中不可用的情况,或者属性组合没有安装相应字体的情况。例如,用户可能具有 Verdana 粗体和 Verdana 斜体,但是没有 Verdana 粗斜体。
在这些情况下,ArcMap 会试图对原始字体以图形的方式进行倾斜(斜体)或加粗(粗体),从而模拟这些属性。
这种处理方式通常与实际粗体或斜体版本的字型在视觉上是不对应的。对于某些字体(如作为标注符号而设计使用的 Esri 字体),以粗体或斜体样式对其进行显示是没有意义的。底图图层和地图服务仅通过系统中可用的字体和字体样式进行显示。
始终使用预览窗口验证文本是否按预期的方式进行渲染。如果在文本中没有发现粗体或斜体属性,请确认系统中有特定的字型样式可用。
字体连接和字体回退
字体包含许多特殊字符(拉丁字母 A,汉字 [qian] 等)的定义。这些特殊字符位于由创建者确定的字符集(如西欧或拉丁)中。字体回退和字体连接方法用于显示在请求的字体中并不存在的字符,这些方法采用包含这些字符的另一个相似字体来对这些字符进行绘制。这些方法通常使用仅包含东亚字符的字体显示拉丁字符,反之亦然。
在这些情况下,ArcMap 显示将使用 Windows GDI(图形设备接口,内置于 Windows 的图形系统)来试图连接其他包含缺少字形的字体,这样即使缺少字符,也可以对文本字符串进行显示。在许多情况下,除了在原始字体与所连接的回退字体之间有一些区别之外,上述处理方式还会由于字距或其他特征的不匹配而导致奇怪的外观或行为(参阅下图)。
由于上述问题,不推荐用户对任何地图采用字体回退的方式渲染专属字形。在底图图层或地图服务中,将不会渲染所请求的字体中不存在的字形。预览 ArcMap 中的底图图层或预览窗口中的地图服务可以确定发生这种情况的位置。
通常,最佳方法是使用包含要使用字符集字形的字体。在上例中,所选的 Arial Unicode MS 字体缺少 Thaana 字符集。为确保文本正确渲染,使用内嵌文本格式化标签来切换至包含 Thaana 字符的字体,如 MV Boli。
确定字体是否发生回退的一个方法是复制文本并将其粘贴至写字板中,然后选择您怀疑使用了字体回退的文本。如果字体名称相对于字符串中鼠标指针的放置位置发生更改,那么可使用该字体来替换 ArcMap 中指定的字体。
字体替换
字体替换是一种相似性技术。这种技术方法在系统中不存在所请求字体的情况下使用不同的字体显示文本。例如,如果某个地图包含了使用 Helvetica 字体的文本,但是计算机中并没有安装 Helvetica 字体,那么该文本将以 Arial 字体代替显示。
底图图层和地图服务可以使用与 ArcMap 相同的字体替换方式。但是,通常它只是一个用于确保地图所用字体在使用该地图的计算机上可用的好方法。