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 是每英寸磅数的转换因子。
宽度(像素)=(线宽度(磅)* 目标分辨率 (dpi))/72
如果宽度(像素)小于 1.5,则不应改变宽度。
如果宽度(像素)大于或等于 1.5,请使用以下公式来确定编辑后的宽度:
- 新宽度(磅)= (宽度(像素)+ 0.5)。
- 将新宽度(磅)四舍五入为不大于新宽度(磅)的最近整数值。
- 将最后的线宽度设置为 (四舍五入后的新宽度(磅)* 72)/目标分辨率。
例如,如果所需分辨率为 44 dpi,且线符号的宽度为 2.60,则将执行以下数学计算:
- 宽度(像素)= (2.60 * 44)/72.0。
- 宽度(像素)为 1.5888888,它大于 1.5,所以继续执行以下计算。
- 新宽度(磅)= (1.588888 + 0.5) = 2.10。
- 向下取整,得到的新宽度(磅)= 2.0。
- 最后的线宽度应设置为 (2.0 * 72)/44 = 3.27 磅。
再举一个例子,如果所需分辨率为 120 dpi,而新的线符号的宽度为 2.60,则将执行以下数学计算:
- 宽度(像素)= (2.60 * 120)/72。
- 宽度(像素)为 4.33333,它大于 1.5,所以继续执行以下计算。
- 新宽度(磅)= (4.33333 + 0.5) = 4.83。
- 新宽度(磅)将向下舍入为最近的整数 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 不会这样,因此会导致明显的不匹配。
线整饰
对于 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 一样使用字体替换。但是,通常它只是一个用于确保地图所用字体在使用该地图的计算机上可用的好方法。