将地理处理输出写入内存是将输出写入地理数据库或基于文件的格式的替代方法。 这种方法通常比写入磁盘的格式要快得多。 写入内存的数据是临时数据,在应用程序关闭时会被删除。 内存工作空间是写入 ModelBuilder 模型或 Python 脚本中间数据的理想位置。
基于内存的工作空间
ArcGIS 提供了两种基于内存的工作空间,可以在其中写入地理处理输出。
警告:
- 基于内存的工作空间不支持地理数据库元素,如要素数据集、制图表达、拓扑、几何网络以及网络数据集。
- 由于基于内存的工作空间存储在系统的物理内存或 RAM 中,因此在向工作空间写入大型数据集时,系统在内存上的运行速度可能会变得较慢。 这会对处理性能产生不利影响。
- 无法在基于内存的工作空间中创建文件夹。
内存
memory 工作空间是基于内存的工作空间,支持输出要素类、表和栅格数据集。
要写入 memory 工作空间,请指定以 memory\ 开头的输出数据集路径,并注意不要包含文件扩展名,例如 memory\tempOutput。
您可以将 memory 数据集添加到 ArcGIS Pro 中的地图。
in_memory
旧版本:
in_memory 工作空间是针对 ArcMap 构建的基于内存的旧版工作空间,支持输出要素类、表和栅格数据集。
要写入 in_memory 工作空间,请指定以 in_memory\ 开头的输出数据集路径,并注意不要包含文件扩展名,例如 in_memory\tempOutput。
注:
in_memory 数据集无法在 ArcGIS Pro 地图上显示。 如果通过地理处理窗格或 Python 窗口运行地理处理工具并将输出数据集写入到 in_memory 中,则在处理后输出数据集将复制到工程地理数据库中并会将此数据集添加到地图中。 如果 in_memory 数据集为中间数据集,且没有添加到地图,则不会写入工程地理数据库。
要在 ArcGIS Pro 地图中显示基于内存的数据,您可以使用 memory 工作空间。
与 memory 工作空间不同,in_memory 工作空间不支持子类型或属性域。
管理内存工作空间
使用基于内存的工作空间时,应尽快删除所有中间数据,以便释放它们占用的系统内存资源。 可以使用删除工具来删除基于内存的工作空间中的数据。 删除单个数据集或整个工作空间以清除工作空间内容。
在 Python 中使用内存工作空间
在 Python 中使用基于内存的工作空间仅对地理处理工具有效。 内存不是可以写入文件或其他数据的通用虚拟目录。
按以下代码示例所示使用 memory 工作空间:
import arcpy
# Set the geoprocessing workspace
arcpy.env.workspace = r"C:\Data\Habitat.gdb"
# Buffer a Roads layer, writing output to memory
arcpy.analysis.Buffer("Roads", r"memory\Buffers", 1000)
# Erase the buffers from a Vegetation layer
arcpy.analysis.Erase("Vegetation", r"memory\Buffers", r"memory\Erased")
# Dissolve the memory output of Erase to make a final output in the gdb workspace
arcpy.management.Dissolve(r"memory\Erased", "FinalOutput")