ArcGIS 提供了一个可写入输出要素类和表的内存工作空间。作为将地理处理输出写入磁盘上的某个位置或网络位置的备选方案,可将输出写入内存工作空间中。通常,将数据写入内存工作空间要明显快于写入其他格式(如 shapefile 或地理数据库要素类)。但写入内存工作空间的数据是临时性的,将在关闭应用程序时被删除。
要将数据写入内存工作空间,使用路径 in_memory,如下所示。
在决定将输出写入内存工作空间时,必须注意以下事项:
管理内存工作空间
将数据写入内存工作空间时,会占用计算机的物理内存 (RAM)。如果写入此工作空间的数据太多,则可能会用尽所有计算机的内存,从而无法将其他数据写入内存中。此外,如果将大部分或所有计算机内存用于存储此工作空间中的数据,可能没有足够的内存用来有效地执行计算量非常大的应用程序(如 ArcGIS)。这种情况下,应用程序中的所有任务执行起来可能会非常慢。
某些情况下,使用内存工作空间带来的计算优势会与应用程序的减速相抵消。出现这种情况时,受影响在还包括系统中运行的其他应用程序以及可用物理内存的起始量。当应用程序会因待写入的数据过大而减速时,应避免使用内存工作空间。
使用内存工作空间时,应尽快删除所有中间数据,以便释放它们占用的系统内存资源。可使用“删除”工具来删除内存工作空间中的数据。既可删除单个表或要素类,也可删除整个工作空间以便清除所有工作空间内容。
内存工作空间位置
写入内存工作空间的表、要素类或栅格的源位置将为 GPInMemoryWorkspace,如下图所示。
GPInMemoryWorkspace 后面用大括号 {} 括起的长字符串是由 ArcGIS 创建和使用的唯一标识符。
在 Python 中使用 in_memory
您也可以在 Python 中使用 in_memory 工作空间,如以下代码示例所示。
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 工作空间仅对地理处理工具有效;它不是可以写入任何数据的通用虚拟目录。
在脚本中,可使用删除工具来删除内存工作空间中的数据。既可删除单个表或要素类,也可删除整个工作空间以便清除所有工作空间内容。