关于地图打印
通常,地图打印比简单的文字处理文档打印或 PowerPoint 演示文稿打印涉及的问题多。地图文件可能会非常大,并且会在打印期间临时占用大量的磁盘空间。此外,地图布局的页面尺寸还可能超出打印机纸张的大小。本主题介绍的是诸多注意事项以及在 ArcGIS 中打印地图时的可用选项。
为绘图仪(大幅面打印机)设置地图打印
您的 GIS 组织很可能拥有可处理页面大小大于办公室小幅面打印机的打印机。比较重要的一个初始步骤即为在 ArcGIS 中引用该大幅面打印机。要更换打印机,可打开页面和打印设置 对话框,然后通过名称下拉列表设置当前打印机。
设置地图布局的页面大小
由于布局是指页面上要打印的各种类型地图元素的排列,因此构建布局的主要初始步骤之一即为通过页面和打印设置 对话框设置所需的页面大小。默认情况下,在 ArcMap 中创建新地图并选择空白地图时,布局页面尺寸将设置为默认的打印机页面大小。
设置布局页面大小的步骤
- 在主菜单上单击文件 > 页面和打印设置打开页面和打印设置 对话框。
- 您可按照下方图示设置布局页面大小。
默认情况下,空白地图的布局页面大小将设置为打印机的纸张大小(例如 8.5 x 11 英寸)。注:您可能需要将该打印机改为组织中使用的大幅面打印机(绘图仪)。通过名称下拉列表即可设置当前打印机。
- 要自行设置页面大小,则设置布局的页面大小时可取消选中使用打印机纸张设置复选框。如果取消选中此选项,便可选择所需的任意页面尺寸,但打印机名称不会与地图文档 (.mxd) 一同保存。
- 将首选的页面尺寸输入宽度框和高度框中即可设置页面大小。也可以从标准大小下拉列表中选择一种标准页面大小,如 ANSI C、Architectural D 或 ISO A2。
- 更改布局的页面大小后,需要调整所有地图元素的大小并将它们重新定位,以便同新的页面尺寸匹配。即使您使用的是全新的地图,并且尚未开始添加任何地图元素或图层,此操作也非常必需。
选中使用打印机纸张设置复选框后,地图页面大小便会与当前打印机的纸张大小关联。默认情况下,对于通过新建文档 或 ArcMap - 启动 对话框中的“空白地图”选项创建的新地图,此选项处于选中状态。在下例中,ArcMap 默认使用的打印机设置纸张大小为 8.5 x 11 英寸。但是,地图页面大小已经取消了与原始 8.5 x 11 大小的关联,并且设置为较大页面 22 x 34。而初始数据框放置在布局中时基于原始较小的页面大小。因此,更改地图页面大小后,需要通过 ArcMap 中的布局视图重新排列布局。重新定位数据框和各布局元素可使它们适合新的页面大小。
选择打印机引擎
ArcGIS 支持三种打印机引擎:
- Windows 打印机引擎是默认的打印机引擎,并且应该是打印时的首选。Windows 打印机引擎是使用打印机本地驱动程序的必由之路,已由制造商写入打印机。这通常是进行打印时的最简单方案。但如果较大的地图文件(尤其是包含栅格数据的文件)也使用 Windows 打印机引擎,则可能会消耗大量资源。此外还要注意,Microsoft 提供的打印机通用驱动程序属于 Windows 的一部分,通常适用于各种常规任务。但还是建议您从打印机制造商的网站获得最新的驱动程序。
- 如果需要为出版和商业打印生成专用的输出(例如色版分离和规矩线),可以使用 PostScript 打印机引擎。
- ArcPress 打印机引擎则提供由 Esri 编写或由 Esri 协同精选的打印机制造商编写的打印机驱动程序。ArcPress 主要适用于中幅面打印机和大幅面打印机。ArcPress 的优势之一是,在计算机上处理大量地图打印工作时卸载可能造成打印机因超负荷而悬挂的工作任务。由于购置的打印机具有不同的板载处理能力、RAM、磁盘空间(也可能包括 PostScript 解释程序、板载栅格化程序等),因此地图可能会超出打印机的处理能力。
如果在工作组中的专用计算机上使用 ArcPress,还可使众多人员得以在一台指定打印机上同时打印。这将减轻打印机处理各打印作业任务的负担,使得打印机在一段时间内可以打印更多的地图。
如果您的打印机具有 ArcPress 打印机引擎驱动程序,而地图的页面大小较大且包含以下任一项,则应该使用 ArcPress 打印机引擎驱动程序:
- 较大的栅格影像,如正射影像
- 透明图层
- 高度依赖掩膜或使用符号级绘制
- 基于位图图像的符号或填充内容
使用“输出图像质量”控制打印质量和速度
可通过“输出图像质量”对栅格重采样量进行控制。如果地图中不包含栅格数据或具有透明度的矢量图层,则设置输出图像质量将不会对地图的输出质量造成影响。
输出图像质量控件可用于确定输出时栅格内容的有效分辨率。例如,如果输出图像质量比率设置为 1:2 并且输出分辨率设置为 300 dpi,则栅格内容将以大约 150 dpi 的分辨率输出。
如果将输出图像质量滑块设置为最佳(例如,比率为 1:1),则不会发生重采样。在默认情况下,“输出图像质量”设置为常规。
您可能需要尝试以不同的“输出图像质量”设置来导出或打印小型地图以确定适合地图内容的最佳设置。您可以创建一个小型地图,其中包含数据样本和其他想要包含在您的地图中的地图元素样本。按照不同的设置来输出样本地图。通过试验对比可以确定适合的 dpi 与质量模式,从而可以通过最短的处理时间生成高质量的输出。
为地图打印使用平铺选项
如果某布局大于打印机的纸张设置,可以使用平铺选项打印地图。要启用平铺选项,可在页面和打印设置 对话框中取消选中使用打印机纸张设置复选框。如果地图中含有“数据驱动页面”,平铺选项将不可用。不支持“数据驱动页面”的平铺打印。
取消选中使用打印机纸张设置选项后,可将地图页面大小设置为与打印机设置的纸张大小不同的值,从而启用打印 对话框中的三个平铺选项。
选择全部或平铺选项,在多个打印机页面中打印布局。选择缩放地图以适合打印机纸张大小选项将会缩小或放大地图图像使其适合页面的大小。这将取得与在复印机上缩小或放大地图相同的效果。请注意,使用此选项时动态地图元素(如比例文本)不会更新,因此最终打印结果中可能会显示不正确的值。
测试平铺打印的效果
如果要将地图打印为多个分块,则最好先创建一个测试图。例如,您可以只打印一个或两个分块或者创建一个数据框为空且其他地图元素较少的简单布局。通过测试图可确保平铺选项的设置正确,以免在不正确的打印操作上浪费大量的纸张和墨水。
地图打印的疑难解答
了解常见的打印问题以及处理这些问题的方法。
打印地图的时间过长或在处理期间失败
如果无法打印大型地图或复杂地图,可重新启动计算机以确保清理页面文件系统。如果页面文件系统不是位于专用驱动器或分区上,需确保该驱动器已经执行过碎片整理。重新启动计算机后,立即打开 MXD 文档,在运行任何其他应用程序之前在 ArcMap 中打印地图。重新启动可释放内存分配,而不运行其他应用程序有助于避免产生内存碎片。这将有助于顺利打印地图。
打印的地图出现不均匀或像素化现象 - 栅格化
图层透明度以及基于 BMP 的图片符号可导致地图在输出时发生栅格化。栅格化的后果是包含透明度或 BMP 图片符号的数据图层下的所有图层在导出或打印假脱机文件中将转换为平坦栅格图像。同一图层组中形式为透明图层的任何图层同样会发生栅格化。要避免栅格化,应使用仅包含矢量的 EMF 图片或基于字体的字符标记符号来代替 BMP 图片符号。消除没必要使用的图层透明度也有助于弱化本不希望出现的图层栅格化。
检测栅格化图层
在 Python 窗口 中执行 arcpy.mapping 脚本将报告在打印或导出期间可能导致栅格化的地图中的所有图层。
import arcpy def DetectRasterization(): mxd = arcpy.mapping.MapDocument("CURRENT") df_list = arcpy.mapping.ListDataFrames(mxd) foundRasterization = False noneFoundMsg = "No rasterizing layers were detected." for df in df_list: lyr_list = arcpy.mapping.ListLayers(mxd, data_frame=df) for lyr in lyr_list: if lyr.isRasterizingLayer or lyr.supports("BRIGHTNESS"): foundRasterization = True if lyr.isGroupLayer and lyr.transparency > 0: print "In data frame '" + df.name + "', the group layer '" + \ lyr.longName + "' is a rasterizing layer:\r", print "\tVisibility is " + str(lyr.visible) + ".\n" + \ "\tTransparency is " + str(lyr.transparency) + " percent.\n" elif not lyr.isGroupLayer: print "In data frame '" + df.name + "', the layer '" + \ lyr.longName + "' is a rasterizing layer:\r", if lyr.transparency > 0: print "\tVisibility is " + str(lyr.visible) + ".\n" + \ "\tTransparency is " + str(lyr.transparency) + " percent.\n" else: print "\tVisibility is " + str(lyr.visible) + ".\n" + \ "\tTransparency is 0 percent, but the layer may be a\n" + \ "\traster layer or contain rasterizing symbology such\n" + \ "\tas bitmap picture symbols.\n" del lyr del lyr_list del df if not foundRasterization: print noneFoundMsg del df_list del mxd DetectRasterization()