在共享模型和脚本工具中管理中间(临时)数据

临时数据是您的工具使用的数据,在工具运行后会被删除。在模型构建器中,临时数据又称为中间数据。在模型构建器中标记为临时的数据在您的模型工具运行后会被自动删除。然而在脚本中,是由您来负责删除您脚本内的临时数据。

注注:

如果您要使用地理处理包或服务共享您的工具,您不需要对您的模型或脚本进行任何修改来管理临时或中间数据。下述方法仅当您共享您的自定义工具箱时适用 - 也就是说,您共享的不是一个包或服务,而是您的工具箱(.tbx 文件)。这种情况下,您需要通过将临时和中间数据写入某个位置的方式确保您的工具可移植,这个位置存在于所有执行您工具的计算机中。

无论何时您同别人共享一个含有您的模型和脚本工具的工具箱时,您都需要一个位置 - 一个文件夹或地理数据库 - 在其中,您的工具可以写入您的临时或中间数据。有两种只读环境可供您写入中间和临时数据,即临时 GDB(临时地理数据库)和临时文件夹。在 ArcGIS 10.1 中涵盖这两个环境的介绍。

模型中的中间数据

所有中间数据都应如此标记,并被写入至临时文件夹或临时地理数据库。下图表示被标记为中间数据的质心相交数据变量,其输出位置是临时地理数据库 (%scratchGDB%)。百分号 (%) 表示变量替换 - 运行模型工具时展开 scratchGDB 的值,然后将名为 poly_Intersect 的要素类写入临时地理数据库。类似地,您可使用 %scratchFolder% 来写入基于文件的数据,例如 .lyr.txt 文件。

在模型中使用 %scratchGDB%

写入中间要素类时,您可能希望将 Shapefile 写入临时文件夹。应避免这种做法,并将要素数据写入临时地理数据库,因为 Shapefile 有某些相当重要的限制,这可能影响工具的可移植性。有关 Shapefile 及其限制的详细信息,请参阅 Shapefile 输出的地理处理注意事项

您也可以将中间数据写入内存工作空间。

了解有关内存工作空间的详细信息

管理脚本工具中的临时数据

脚本工具中的临时数据应被写入到临时地理数据库或临时文件夹中。以下代码显示的是将要素类复制到临时地理数据库并在完成后将其删除。

import arcpy
import os
inFC = arcpy.GetParameterAsText(0)

tempFC = arcpy.env.scratchGDB + os.path.sep + "tempFC"
arcpy.CopyFeatures_management(inFC, tempFC)

# Do some work here...

# Clean up when done...
#
arcpy.Delete_management(tempFC)

在脚本内,您也可以将数据写入内存工作空间。例如:

import arcpy

table = arcpy.CreateTable_management("in_memory", "table1")
arcpy.AddField_management(table, "Field1", "TEXT", field_length=20)

cursor = arcpy.da.InsertCursor(table, ["Field1"])
cursor.insertRow(["Hello World"])

in_memory 工作空间仅对地理处理工具有效;它不是可以写入任何数据的通用虚拟目录。

临时工作空间

临时工作空间环境主要被模型构建器用作写入临时和输出数据的位置。此环境可以由您(或工具用户)设置为任意位置 - 文件夹、地理数据库或地理数据库中的要素数据集。建议不要借助要共享的工具使用临时工作空间环境,因为工具用户可能将临时工作空间环境设置为文件夹、地理数据库或要素数据集。例如,您可能期望将临时工作空间设置为文件夹,这样可以输出图层文件,但工具用户却将临时工作空间设置为地理数据库。运行工具时失败,因为您无法将图层文件写入地理数据库。在 10.1 中介绍临时地理数据库和临时文件夹环境的主要原因即在于此 - 为您提供用来写入数据的已知地理数据库和已知文件夹。

相关主题

9/15/2013