Web 地图高级打印
ArcGIS Web API 中的 PrintingTools 服务及其客户端打印小组件用于在小尺寸纸张上的基本打印。如果想要绘制大于 11 x 17 英寸的地图,考虑使用 Python 脚本,将 Web 地图转换为地图文档 (MXD)。ArcGIS 的 Python 包中提供了多个 arcpy.mapping 函数,用于以 MXD 作为输入,将其导出为各种幅面以便在大尺寸纸张上打印或纳入地图册。
使用 Python 将 Web 地图转换为地图文档
ArcGIS 中的 Web 地图打印取决于将要表示为 JSON(即 JavaScript 对象表示法)的 Web 地图的能力。Esri 已创建 ExportWebMap 规范,该规范定义如何使用打印范围和图层信息将 Web 地图构建 JSON 表达式。ArcGIS Web API 能够读取您当前的 Web 地图并为您制作 JSON 表达式。在简单打印情况下,ArcGIS Server 的 PrintingTools 服务读取 JSON 并返回可打印的地图图像。
在复杂打印情况下,不必将 Web 地图 JSON 发送至 PrintingTools 服务。相反,您可以将 JSON 转换为 MXD。要执行此操作,请使用 Python 函数 arcpy.mapping.ConvertWebMapToMapDocument。然后可以将生成的 MXD 用于其他 arcpy.mapping 函数(如 ExportToPDF 或 ExportToPNG),以准备要打印的地图。您甚至可以选择在打印地图前将其添加至地图册,或用您自己的矢量图层切换地图中的一些切片图层以便获得较高分辨率的图像。ConvertWebMapToMapDocument 参考主题中介绍了这些技术。
从网站上调用您的脚本
写入用于打印的 arcpy.mapping 脚本后,如何从 Web 应用程序中使用该脚本?ArcGIS Server 提供了各种地理处理服务,允许将您的脚本、工具和模型以 Web 服务的形式暴露出来。这样便可以从 ArcGIS Web API 中轻松地调用它们。
如果您已经获取了一个为打印操作而准备地图的 Python 脚本后,可以选择在地理处理脚本工具中封装该脚本。尝试运行您的工具,然后将结果作为 ArcGIS Server 地理处理服务发布出来。ArcGIS Web API 具有能够帮助您调用这些服务的类,例如针对 JavaScript 的 ArcGIS API 中的“地理处理器 (Geoprocessor)”类。
开发此类地理处理脚本工具最简单的方法是确保它所显示的参数与开箱即用的 PrintingTools 服务的参数相同,或为其子集。输入的 JSON 参数是所需最小要求参数。如果您这样设计您的服务,ArcGIS Web 制图 API 和 Web 查看器中的打印微件将能够使用您的服务,而无需通过您获取自定义编码。另一方面,如果您将参数添加至不在 PrintingTools 中的工具,Esri 打印微件将与您的工具不兼容,您将需要写入您自己的编码或微件以调用您的工具。