通过在标准 工具条上单击地理处理 > 地理处理选项,您可控制工具是在前台还是后台执行。
后台处理面板用于控制工具在前台模式还是后台模式下执行。
- 如果选中启用,工具会在后台执行,并且您可在工具执行时继续使用 ArcMap(或其他 ArcGIS 应用程序,例如 ArcGlobe)。文档底部将出现一个进度条显示当前所执行工具的名称。工具执行完毕后,系统托盘中将显示一个弹出通知。可通过移动通知滑块来控制通知消息出现的时间长度,也可通过将滑块移至最左端来禁用消息。
- 如果未选中启用,工具会在前台执行。当一个工具在前台模式下执行时,您必须先等到工具停止执行,然后才能继续进行其他工作。
后台处理
在使用工具的对话框或在 Python 窗口中执行工具时,您将看见如下所示的工具进度。
此外,您还可在 结果 窗口中跟踪进度。可通过以下方式打开结果窗口:
- 通过单击地理处理 > 结果打开结果窗口。
- 单击 ArcMap 窗口底部的状态栏(如上图所示)打开当前执行工具的结果窗口。
- 单击成功或失败弹出消息直接在工具的执行消息中打开结果窗口。
当某个工具正在后台运行时,您可通过使用工具对话框来提交更多计划运行的工具。在后台仅能运行一个工具,其他所有工具都将挂起(等待运行)。某个工具执行完成后,将开始执行下一个挂起的工具。
如果有多个工具在后台运行,则将无法开始编辑会话。如果有多个工具在后台运行,则会显示一个消息框来通知编辑会话无法开始。必须先让所有在后台运行的地理处理工具完成操作(或将其取消),然后才能开始编辑会话。
在使用后台处理的情况下,如果您在 Python 窗口中执行工具,则在工具已完成执行之前,您将无法使用 Python 窗口。
默认情况下,自定义模型和脚本工具在前台运行
默认情况下,即使您已启用后台处理,您的自定义模型和脚本工具仍会在前台运行。要使自定义工具在后台运行,必须执行以下两项操作:
- 确保您的工具遵循在后台运行自定义(模型或脚本)工具中所指定的指导原则。
- 右键单击您的自定义模型或脚本工具,然后单击属性。在常规选项卡上,取消选中始终在前台中运行。
当工具在后台运行时,受影响的 ArcMap 图层将会被锁定
当地理处理工具的输出是地图中的一个图层(如使用按属性选择图层工具)时,或者工具修改了输入数据(如添加字段工具或编辑工具箱中的任一工具)时,图层将会在工具正在运行时被锁定。一个锁图标将会出现在内容列表的图层上方,以表示该图层被锁定以进行处理。在图层被锁定时对地图显示进行的任何刷新都将导致该图层不被绘制。工具已完成处理后,地图显示即会刷新,并且您可重新开始使用该图层。
取消在后台运行的工具执行操作
要取消在后台运行的工具执行操作,请打开结果 窗口,然后查找当前正在执行的工具(该工具的旁边会显示一个沙漏图标或处理时钟图标)。右键单击所找到的工具,接着单击取消。此方法还可用于取消尚未运行的排队任务。
当工具收到取消指令时,会尝试做一些清除工作,删除所创建的所有数据并发出警告消息。根据工具所执行的清理工作类型,取消操作可能会花费一些时间。
系统工具可在前台执行(即使已启用后台)
在以下情况下,即使已启用后台处理,工具仍会在前台执行:
- 如果您正在编辑数据,则所有地理处理工具都在前台执行。即使地理处理工具并不使用正在编辑的数据,ArcGIS 仍会在前台执行所有工具。这是为了防止出现正在后台运行的工具修改您正在编辑的数据的情况。
- 如果打开“模型构建器”窗口并运行模型,则模型中的所有进程都在前台执行。在“模型构建器”窗口中进行的操作与一个编辑会话相类似。任何在前台执行的进程都会执行这样的操作,以防出现因更改工作流而导致不良后果的情况。
- 由于数据锁定和完整性的需要,某些系统工具(如升级地理数据库工具)始终在前台运行。如果其他系统工具需要访问当前地图文档,则这些工具可能会在前台运行。
将内存工作空间与后台处理配合使用
内存工作空间具有许多与文件地理数据库相同的属性,但在保存要素和栅格内存方面截然不同。当应用程序处于活动状态时,数据存储在系统的内存 (RAM) 中。使用内存工作空间通常有助于提升性能,因为系统无需向磁盘写入任何内容。将内存工作空间与后台处理配合使用时切记以下几点:
- 后台处理是和 ArcMap 或 ArcCatalog 分开的单独流程。这些流程无法共享内存 (RAM)。执行工具时,工具所使用的数据必须由后台流程打开。因此,输入要素类将直接由后台流程打开,但 ArcMap 中的图层必须采用其他方法。例如,假设您在 ArcMap 中拥有一个输入点要素图层,并且想要使用写入 ArcMap 内存工作空间的输出来缓冲这些点。当在后台执行缓冲区工具时,输入要素将写入磁盘,后台流程将它们从磁盘读取到内存中,从而执行缓冲区;缓冲区随即将输出写入其自身的后台内存工作空间,输出随后被写入磁盘,以便 ArcMap 将缓冲输出重新读取到其相应的内存工作空间中。这样做的结果是,在使用将输出写入内存工作空间的单个工具时,不会有任何性能提升。然而,运行多个工具并将中间数据写入内存工作空间的模型或脚本的处理速度很可能更快,因为无需在两个不同的内存工作空间之间传输数据。因此,请为工作流程创建模型或脚本,不要再在使用后台处理的同时通过 ArcMap 每次执行一个工具。
- 大部分创建工具(如创建文件 GDB 和创建要素类)使用两个输入参数(工作空间和名称)派生出一个新的输出。这些工具允许您输入 in_memory 作为工作空间。但是,在后台执行时,新创建的输出始终会返回磁盘上的一个位置作为结果,即使使用 in_memory 作为工作空间也是如此。最好将这些工具用作“模型构建器”或 Python 脚本工具中工作流的一部分,在这种情况下,内存工作空间可用于工具的整个执行过程。
当工具在后台等待或运行时退出应用程序
在 ArcMap、ArcGlobe 或 ArcScene 中,您可在工具正在运行或挂起时退出并保存文档。如果退出,则所有正在运行的工具都将会停止。在已保存的文档的结果窗口中,正在运行和挂起的工具的状态将被更改为“未运行”。这些条目将具有沙漏图标,并可通过右键单击该结果和单击重新运行来进行运行。
退出 ArcCatalog 时,正在运行或挂起的工具将会立即停止。工具的结果将被移至结果窗口的未运行部分。工具可通过以前提到的相同方式进行返回。
前台处理
当后台处理不可用时,工具会在前台执行,并且您必须先等待进程完成,然后才能重新使用应用程序。工具开始执行后,即会显示进度对话框,如下所示。单击详细信息以查看执行消息。
警告消息将在工具的消息中以绿色文本的形式进行显示,且其前面加有 WARNING 后跟数值代码。警告意味着输出可能不包含您所期望的内容。在如下所示的情况中,工具创建了空输出。数值代码是超链接,您可单击此超链接来查看对于警告和可能的解决方案的完整描述。
错误消息以红色文本显示,且其前面加有 ERROR 后跟数值代码。
在执行工具并关闭进度对话框后,您即可在结果 窗口中从各个方面查看工具的执行情况。
取消在前台运行的工具执行操作
在工具执行期间,您可通过在进度对话框中单击取消按钮取消执行。
当工具收到取消指令时,会尝试做一些清除工作,删除所创建的所有数据并发出警告消息。根据工具所执行的清理工作类型,取消操作可能会花费一些时间。
性能注意事项
后台处理可被视为另一个 ArcMap 会话在计算机上运行,只是 ArcMap 窗口并未打开。这种额外进程(会话)会在工具首次于后台执行时启动,并一直保持到您退出 ArcMap 会话时为止。当后台进程启动时,您会注意到在第一次工具执行时会出现短暂的延迟。
在使用大型数据集时,某些地理处理工具,尤其是那些使用切片处理的工具,需要可供使用的足量计算机资源(内存和 CPU)。如果您所提交的用于后台处理的工具因可用内存不足而失败(错误“000426:内存不足”或错误“999998:异常错误”),则可尝试执行以下操作:
- 识别并退出占用大量内存但并不重要的应用程序。
- 通过地理处理选项 对话框(地理处理 > 地理处理选项)禁用后台处理。这将关闭后台进程并释放资源。
- 重新运行此工具。
通过执行以上步骤,可绕过后台处理;额外后台进程将不会启动,并且该进程所消耗的资源现已可供工具使用。当工具正在执行时,请避免启动任何占用大量内存的应用程序。