地图服务的绘制方式

底图图层和地图服务通过使用高性能的绘制引擎来实现更好的性能和绘制质量。此绘制引擎为所有受支持的符号类型提供了极佳的性能。

ArcMap 中显示的街道地图(左图)和显示为地图服务的街道地图(右图)
地图服务绘制引擎(右图)包含多个用于改进外观的功能(如抗锯齿)。

此绘制引擎与 ArcMap 中所使用的绘制引擎不同,因此您应该了解绘制为地图服务的地图在外观上所存在的一些重要差异。准备 窗口中的“警告”用于告知您其中所存在的许多差异。

显示有关绘制差异信息的“准备”窗口
对于许多绘制差异,“准备”窗口都会显示对应的警告信息。

以下各部分内容描述了绘制中的某些差异,以及这些差异产生的原因。

文本和字符标记抗锯齿

在 ArcMap 中,由字体平滑设置参数来控制文本和字符标记的抗锯齿效果,这在计算机的显示设置中进行配置。这些设置是针对每个用户而设置的,并没有配置为地图服务的一部分。

“Windows 性能选项”对话框,可对字体平滑属性进行更改

在地图服务中,这些设置是针对服务进行配置的,并且存储为服务定义 (.sd) 文件的一部分。这些文本抗锯齿设置是在服务编辑器参数选项卡上设置的。

底图图层中所绘制的文本始终通过强制选项进行绘制。请注意,底图图层中的标注将始终使用 ArcMap 中的显示进行绘制,并且将遵守上述的计算机设置。

因为底图图层和地图服务绘制引擎使用不同的方式来启用文本和字符抗锯齿,而且用于执行抗锯齿的算法也是不同的,因此与 ArcMap 显示相比,文本和字符标记的渲染可能会显示出一些差异。

使用文本抗锯齿与不使用文本抗锯齿(在 ArcMap 中)的效果对比图片
左图:ArcMap(无字体平滑)。右图:将字体抗锯齿设置为强制的地图服务。

坐标取整差异

在 ArcMap 中,往往通过整数坐标来指定屏幕上显示的元素。如果要素(如,线或标记)的实数坐标没有准确地位于该整数坐标上,那么将对其取整(上舍入或下舍入)。此操作可能会导致某些误差,特别是在线非常细或者线具有非常细的元素(如下管线)的情况下。在指定的缩放级别或显示范围内,大小小于一个像素的线将被上舍入为一个像素。

对于 ArcMap,在 96 dpi 时的两个线符号
对于 ArcMap,在 96 dpi 时,2.6 磅(左图)和 1.9 磅(右图)的两个线符号之间没有视觉上的差异。

在底图图层和地图服务中,绘制引擎可以使用亚像素坐标在地图上放置和绘制要素。这使得要素放置和符号系统更加准确。

磅值为 2.6 和 1.9 的地图服务预览窗口的图像
在底图图层和地图服务中,2.6 磅的图像(左图)和 1.9 磅的图像(右图)差别非常显著。

但是,如果地图的符号系统初始是在 ArcMap 中设计的,那么底图图层或地图服务中的外观可能会有所不同。这种情况在线符号系统中特别明显。

修正前后的线锯齿
左图:在地图服务中渲染的高速公路符号的初始线宽度。右图:修正后的线外观。请注意,在修正后的版本中,下管线不再显示为虚线。

有关上述问题以及如何设计适合指定目标分辨率的线符号的详细信息,请参阅地图服务中的线锯齿。在大多数情况下,在底图图层中不会出现此问题,因为底图图层会自动修正这个问题。

底图图层和地图服务中的简单符号

ArcMap 中提供的简单符号(简单线符号、简单填充符号和简单标注符号)的显示方式有时可能不一致。由于简单符号中所存在的这些不一致,导致在底图图层或地图服务中有时可以不同方式进行绘制。准备 窗口中的某个分析器可能会告知您其中的一些差异。

例如,使用虚线或点划线模式的简单线符号将不依据地图的参考比例,而是依据所请求的 dpi,通过不同的间距进行绘制。但在底图图层或地图服务中,这些符号将依据地图参考比例,而且不会随所请求的 dpi 发生更改。

对于简单填充符号,“样式”属性实际上在 ArcMap 用户界面中是不可用的,但是许多开发实例与其他第三方代码片段可能在地图中创建这些符号。除了 esriSFSSolid 之外的其他样式在底图图层或地图服务中均不受支持,并且分析时会出现错误警告。

对于简单标记符号,简单标记行为会随着标记显示的大小而更改,这会在大小和形状上引起一些变化。

底图图层和地图服务始终以所请求的大小来显示标注符号。在 ArcMap 中,当简单标记符号大小低于某个阈值时,它不会以比阈值小的任何方式绘制这种标记符号。这意味着,当到达此阈值时,底图图层或地图服务将继续以准确的大小来显示这些符号。而 ArcMap 不会这样,因此会导致明显的不匹配。

底图图层和地图服务中的线整饰

当线整饰(如线箭头)大于所整饰的要素的线长度时,ArcMap 中包含线整饰的线符号将不会绘制线整饰。而对于底图图层和地图服务所使用的绘制引擎,无论线的大小如何,都会始终绘制线整饰。在某些比例时,这会导致比 ArcMap 中更加凌乱的外观,但线整饰的绘制方式是一致的,也是可预测的。

底图图层和地图服务中的颜色

底图图层和地图服务使用的绘制引擎使用了一种颜色管理引擎。因此,某些颜色可能与 ArcMap 中所显示的外观颜色无法准确匹配。

ArcMap 不使用颜色管理。特别是使用以下两项时,您会发现颜色上的区别:

查看 ArcMap 中的底图图层或使用通过服务编辑器 打开的预览 窗口,您可以对地图外观进行评估,并确定颜色和符号系统是否是可接受的。

有一项操作可使地图服务中的颜色差异最小化,即更改 ArcMap 中的显示器设置。当创作可在地图服务中使用的地图时,这种做法十分有用。

要访问显示器设置,在任何符号属性 对话框中,单击颜色样本上的下拉菜单,然后选择更多颜色

简单颜色选取器

颜色选择器 对话框中,单击右上角的箭头按钮,选择显示器设置

颜色选择器对话框

显示器设置 对话框中,将Gamma 设置更改为 2.2,然后单击确定关闭对话框。

显示器设置对话框

这会指示 ArcMap 使用与底图图层和地图服务的绘制引擎所使用的颜色配置文件更为匹配的 gamma 值。

注注:

此设置仅影响用户所绘制的地图外观,以及执行此修改操作的计算机。

底图图层和地图服务中的字体处理差异

与 ArcMap 相比,底图图层或地图服务中的字体处理略有不同。有两个主要差异:

仿斜体或仿粗体是指字体在粗体或斜体样式中不可用的情况,或者属性组合没有安装相应字体的情况。例如,用户可能具有 Verdana 粗体和 Verdana 斜体,但是缺少 Verdana 粗斜体。

在这些情况下,ArcMap 会试图对原始字体以图形的方式进行倾斜(斜体)或加粗(粗体),从而模拟这些属性。

ArcMap 中字体的仿斜体版本(左图)和未使用仿属性情况下地图服务中显示的实际字体(右图)
ArcMap 中字体的仿斜体版本(左图)和未使用仿属性情况下地图服务中显示的实际字体(右图)

这种处理方式通常与实际粗体或斜体版本的字型在视觉上是不对应的。事实上,对于某些字体(如作为标注符号而设计使用的 Esri 字体),以粗体或斜体样式对其进行显示是没有意义的。底图图层和地图服务仅通过系统中可用的字体和字体样式进行显示。

ArcMap 中字体的仿粗体版本(左图)和未使用仿属性情况下地图服务中显示的实际字体(右图)
ArcMap 中字体的仿粗体版本(左图)和未使用仿属性情况下地图服务中显示的实际字体(右图)

始终使用预览 窗口验证文本是否按预期的方式进行渲染。如果在文本中没有发现粗体或斜体属性,请检查并确保系统中有特定的字型样式可用。

字体连接和字体回退

字体包含许多特殊字符(拉丁字母 A,汉字 qian [qian] 等)的定义。这些特殊字符位于不同的字符集(如西欧或拉丁)中,是由其创建者确定的。字体回退和字体连接方法用于显示在请求的字体中实际上并不存在的字符,这些方法采用包含这些字符的另一个相似字体来对这些字符进行绘制。这些方法通常使用仅包含东亚字符的字体显示拉丁字符,反之亦然。

在这些情况下,ArcMap 显示将使用 Windows GDI(图形设备接口,内置于 Windows 的图形系统)来试图连接其他包含缺少字形的字体,这样即使缺少字符,也可以对文本字符串进行显示。在许多情况下,除了在原始字体与所连接的回退字体之间有一些区别之外,上述处理方式还会由于字距或其他特征的不匹配而导致奇怪的外观或行为(参阅下图)。

字体回退
在这种情况下,ArcMap 中的 Thaana 文本发生回退(左图)。请注意奇怪的字形间距。当字符在 Arial Unicode MS 字体中不存在时,地图服务将用方框进行渲染。

由于上述问题,不推荐用户对任何地图采用字体回退的方式渲染专属字形。在底图图层或地图服务中,将不会渲染所请求的字体中不存在的字形。预览 ArcMap 中的底图图层或预览 窗口中的地图服务可以确定发生这种情况的位置。

通常,最佳方法是使用包含要使用字符集字形的字体。在上例中,所选的 Arial Unicode MS 字体缺少 Thaana 字符集。为确保文本正确渲染,使用内嵌文本格式化标签来切换至包含 Thaana 字符的字体,如 MV Boli。

通过使用格式化标签避免字体回退
使用格式化标签确保使用合适的字体来渲染 Thaana 字符集,以在 ArcMap(左图)和地图服务(右图)中都生成较好的外观。

确定字体是否发生回退的一个方法是复制文本并将其粘贴至写字板中。然后选择您怀疑可能使用了字体回退的文本。如果字体名称相对于字符串中光标的放置位置发生更改,那么可使用该字体来替换 ArcMap 中指定的字体。

在写字板中查看字体回退
当上述的 Syriac 文本在写字板中选中时,其以 Estrangelo Edessa 字体显示。从中复制这些文本的注记被设置为 Arial Unicode MS,这种字体的变化表明发生了回退。

字体替换

字体替换是一种相似性技术。这种技术方法在系统中不存在所请求字体的情况下使用不同的字体显示文本。例如,如果某个地图包含了使用 Helvetica 字体的文本,但是计算机中并没有安装 Helvetica 字体,那么该文本将以 Arial 字体代替显示。

底图图层和地图服务可以像 ArcMap 一样应用字体替换。但是,通常它只是一个用于确保地图所用字体在使用该地图的计算机上可用的好方法。

6/13/2014