Я использовал "in_memory" совсем недавно. Это может быть очень полезно, так как потенциально может значительно увеличить скорость обработки для определенных задач, однако, если вы работаете с очень большими наборами данных, это может привести к сбою вашей программы.
Вы можете использовать "in_memory" для определения выходных данных процесса ... часто, если я выполняю задачу в классе пространственных объектов, я сначала скопирую его в рабочую область "in_memory":
inFeature = r'C:\myDir.gdb\myFeature'
memoryFeature = "in_memory" + "\\" + "myMemoryFeature"
arcpy.CopyFeatures_management(inFeature, memoryFeature)
Обратите внимание, что вам не нужно объединять memoryFeature вместе, как я, вы можете записать это как «in_memory \ myMemoryFeature», мне просто нравится делать это таким образом, чтобы легко переключаться между «in_memory» и физическим каталогом. Затем вы можете выполнять процессы на вашей функции в памяти. Когда вы закончите, вы можете отменить процесс, чтобы сохранить его обратно в каталог.
Я могу ошибаться, но я считаю, что это не то же самое, что создание векторного слоя. Слои объектов дают вам доступ к методам выделения и другим специфическим для слоя операциям Думайте о каталоге "in_memory" как о векторном эквиваленте растровому объекту (raster = arcpy.Raster (myRasterLocation))
Для очистки после использования "in_memory" просто добавьте следующую строку кода:
arcpy.Delete_management("in_memory")
Надеюсь, это поможет.