ArcGIS Pro 使用高性能绘制引擎确保使用平滑的符号和文本快速绘制地图和场景。
此绘制引擎与 ArcMap 中所使用的绘制引擎不同,在 ArcGIS Pro 中绘制的地图导出时其外观存在一些重要差异。
以下各部分内容描述了绘制中的某些差异,以及这些差异产生的原因。
文本和字符标记抗锯齿
在 ArcMap 中,由字体平滑设置参数来控制文本和字符标记的抗锯齿效果,这可以在计算机的显示设置中进行配置。 这些设置是针对每个用户而设置的,并没有配置为应用程序的一部分。
在 ArcGIS Pro 中,这些设置在应用程序的选项中进行配置。
因为 ArcGIS Pro 绘制引擎使用不同的方式来启用文本和字符抗锯齿,而且用于执行抗锯齿的算法也是不同的,因此与 ArcMap 显示相比,文本渲染和字符标记可能会显示出一些差异。
坐标取整差异
在 ArcMap 中,往往通过整数坐标来指定屏幕上显示的元素。 如果要素(如,线或标记)的实数坐标没有准确地位于整数坐标上,那么将对其取整(上舍入或下舍入)。 此操作可能会导致某些误差,特别是在线非常细或者线具有非常细的元素(如下管线)的情况下。 在指定的缩放级别或显示范围内,大小小于一个像素的线将被上舍入为一个像素。
在 ArcGIS Pro 中,绘制引擎可以使用亚像素坐标在地图上放置和绘制要素。 这使得要素放置和符号系统更加准确。
但是,如果地图的符号系统初始是在 ArcMap 中设计的,那么 ArcGIS Pro 中的外观可能会有所不同。 这种情况在线符号系统中特别明显。
ArcGIS Pro 可以使用抗锯齿来减弱变更外观的效果,但是在有些情况下使用抗锯齿并不是最佳选择。 例如,使用抗锯齿会降低绘制性能。 根据地图要求,这可能是不可接受的。 此外,如果目标导出格式使用 8 位调色板(例如 PNG 8 或 GIF 格式),使用抗锯齿可能不是很有效,因为渲染连续的颜色渐进需要进行抖动控制。
为减弱这种效果,可手动更改多图层线符号的大小以使线粗细看起来更合适。 使用该解决方案,也可以进行转换以与目标 dpi 而非 96 dpi(例如,120 dpi 的目标分辨率)结合使用。
设计适合特定分辨率 (dpi) 的线
要确定给定分辨率的合适线宽,请在以下公式中键入多图层线符号中每个符号的大小。 建议将目标分辨率的值设置为反映使用该符号时所需的最小分辨率。 请注意,以下示例中的硬编码数 72 是每英寸磅数的转换因子。
WidthInPixels = (LineWidth in points * TargetResolution in dpi)/72
如果 WidthInPixels 小于 1.5,则不应改变宽度。 如果 WidthInPixels 大于或等于 1.5,请使用以下公式来确定编辑后的宽度:
- 计算新宽度(以磅为单位):
NewWidthInPoints = (WidthInPixels + 0.5)
- 将 NewWidthInPoints 四舍五入为不大于 NewWidthInPoints 的最近整数值。
- 将最后的线宽度设置为:
(RoundedNewWidthInPoints * 72) / TargetResolution
例如,如果所需分辨率为 44 dpi,且线符号的宽度为 2.60,则数学计算如下:
- 计算宽度(以像素为单位)。
(2.60 * 44) / 72.0 = 1.5888。 因为 WidthInPixels 大于 1.5,所以继续执行下一步。
- 计算新宽度(以磅为单位)。
NewWidthInPoints = (WidthInPixels + 0.5) = (1.5888 + 0.5) = 2.0888。
- 将结果向下舍入为最近似的整数。
NewWidthInPoints = 2.0
- 使用结果确定最终的线宽。
(2.0 * 72) / 44 = 3.27 磅。
再举一个例子,如果所需分辨率为 120 dpi,而新的线符号的宽度为 2.60,则将执行以下数学计算:
- 计算宽度(以像素为单位)。
(2.60 * 120) / 72.0 = 4.333。 因为 WidthInPixels 大于 1.5,所以继续执行下一步。
- 计算新宽度(以磅为单位)。
NewWidthInPoints = (WidthInPixels + 0.5) = (4.333 + 0.5) = 4.833。
- 将结果向下舍入为最近似的整数。
NewWidthInPoints = 4.0
- 使用结果确定最终的线宽。
(4.0 * 72) / 120 = 2.4 磅。
简单符号
在 ArcMap 中,简单符号(简单线符号、简单填充符号和简单标注符号)的显示方式有时可能不一致。 由于简单符号中存在这些不一致,因此在 ArcGIS Pro 中可能以不同的方式进行绘制。 系统可能会在导入地图时生成的日志文件中通知您其中一些差异。
例如,使用虚线或点划线模式的简单线符号将不依据地图的参考比例,而是依据所请求的 dpi,通过不同的间距进行绘制。 但在 ArcGIS Pro 中,这些符号将依据地图参考比例,而且不会随所请求的 dpi 发生更改。
对于简单填充符号,ArcMap 用户界面未提供“样式”属性,但是许多开发实例与其他第三方代码片段可能在地图中创建这些符号。 esriSFSSolid 以外的样式不适用于 ArcGIS Pro,并且会在导入日志中生成错误记录。
简单标记符号会随着标记显示的大小而更改,在大小和形状上有一些变化。
ArcGIS Pro 始终会按要求的大小显示标记符号。 在 ArcMap 中,当简单标记符号大小低于某个阈值时,它不会以比阈值小的任何方式绘制这种标记符号。 这意味着,当到达此阈值时,ArcGIS Pro 将继续以准确的大小来显示这些符号。而 ArcMap 不会这样,因此会导致明显的不匹配。
警告:
在某些情况下,这意味着在 ArcGIS Pro 中以较小的查看比例可能看不到在 ArcMap 中过分强调的较小要素。
线整饰
对于 ArcMap 中包含线整饰的线符号(如线箭头),当整饰大于所整饰的要素的线长度时,将不会绘制该整饰。 而对于 ArcGIS Pro 所使用的绘制引擎,无论线的大小如何,都会始终绘制线整饰。 在某些比例时,这会导致比 ArcMap 中更加凌乱的外观,但线整饰的绘制方式是一致的,也是可预测的。
颜色
ArcGIS Pro 使用的绘图引擎使用了一种颜色管理引擎。 因此,某些颜色可能与 ArcMap 中所显示的外观颜色无法准确匹配。
ArcMap 不使用颜色管理。 特别是使用以下两项时,您会发现颜色上的区别:
- 在 RGB 以外的颜色空间中定义的颜色(例如,在 HSV、CMYK 或灰度中定义的颜色)
- 使用 HSV、CIELab 或 LABLch 算法的算法色带
要将地图服务中的颜色差异最小化,请在 ArcMap 中更改显示器设置。 当创作要导入 ArcGIS Pro 中的地图时,这种做法十分有用。
要访问显示器设置,在任何符号属性 对话框中,单击颜色样本上的下拉菜单,然后选择更多颜色。
在颜色选择器对话框中,单击箭头按钮,选择显示器设置。
在显示器设置对话框中,将 Gamma 设置更改为 2.2,然后单击确定关闭对话框。
这会指示 ArcMap 使用与 ArcGIS Pro 的绘制引擎所使用的颜色配置文件更为匹配的 gamma 值。
注:
此设置仅影响用户所绘制的地图外观,以及执行此修改操作的计算机。
字体处理
与 ArcMap 相比,ArcGIS Pro 中的字体处理略有不同。 具体而言,文本不会提供在 ArcMap 中渲染的仿斜体或仿粗体样式。 必须使用具有斜体或粗体样式的字体才能指定斜体或粗体。 仿斜体和仿粗体是指字体在粗体或斜体样式中不可用的情况,或者属性组合没有安装相应字体的情况。 例如,您可能拥有 Verdana 粗体和 Verdana 斜体,但是缺少 Verdana 粗斜体。
在仿斜体和仿粗体样式中,原始字体将以图形的方式进行倾斜(斜体)或加粗(粗体)。
这种处理方式通常与实际粗体或斜体版本的字型在视觉上是不对应的。 对于某些字体(如作为标注符号而设计使用的 Esri 字体),以粗体或斜体样式对其进行显示是没有意义的。 ArcGIS Pro 仅通过系统中可用的字体和字体样式进行显示。
字体连接和字体回退
字体包含许多特殊字符(拉丁字母 A,汉字 [qian] 等)的定义。这些特殊字符位于由创建者确定的不同字符集(如西欧或拉丁)中。 字体回退和字体连接方法用于显示在请求的字体中实际上并不存在的字符,这些方法采用包含这些字符的另一个相似字体来对这些字符进行绘制。 这些方法通常使用仅包含东亚字符的字体显示拉丁字符,反之亦然。
在这些情况下,ArcMap 显示将使用 Windows GDI(图形设备接口,内置于 Windows 的图形系统)来试图连接其他包含缺少字形的字体,这样即使缺少字符,也可以对文本字符串进行显示。 ArcGIS Pro 使用类似的逻辑,以便仍然可以渲染字符串。 与 ArcMap 不同,ArcGIS Pro 回退将在引用字体(如 PDF 或 EPS)的输出格式中正确渲染。 在许多情况下,由于原始字体和链接的回退字体之间的字距或其他特征不匹配(见下图),依靠回退仍会导致外观不甚理想。
由于上述问题,不推荐用户对任何地图采用字体回退的方式渲染专属字形。
通常,最佳方法是使用包含要使用字符集字形的字体。 在上例中,所选的 Arial Unicode MS 字体缺少 Thaana 字符集。 为确保文本正确渲染,使用内嵌文本格式化标签来切换至包含 Thaana 字符的字体,如 MV Boli。
字体替换
字体替换是一种相似性技术。这种技术方法在系统中不存在所请求字体的情况下使用不同的字体显示文本。 例如,如果某个地图包含了使用 Helvetica 字体的文本,但是计算机中并没有安装 Helvetica 字体,那么该文本将以 Arial 字体代替显示。
ArcGIS Pro 可通过与 ArcMap 相同的方式使用字体替换。 但是,通常它只是一个用于确保地图所用字体在使用该地图的计算机上可用的好方法。