Особенности использования рабочей области in_memory

Приложения ArcGIS ArcGIS Pro, ArcMap и ArcGIS Server содержат системную рабочую область, использующую оперативную память, в которую могут записываться выходные классы объектов, таблицы и наборы растровых данных – рабочую область in_memory. Рабочую область in_memory можно использовать в качестве альтернативы записи выходных данных в файлы либо файловые и многопользовательские базы геоданных. Запись в рабочую область in_memory обычно, но не всегда, выполняется быстрее. Данные, которые записываются в рабочую область in_memory, являются временными и будут потеряны при закрытии приложения, что делает in_memory подходящим вариантом для хранения временных данных, которые создаются моделями и инструментами-скриптами Python.

Для записи в эту виртуальную рабочую область укажите путь к выходному набору данных, начав с in_memory, к примеру, in_memory/outputParcels.

Внимание:
Рабочая область in_memory не поддерживает такие элементы базы геоданных, такие как подтипы, домены, представления, топологии, геометрические сети, наборы сетевых данных и наборы данных.

Использование рабочей области in_memory в ArcGIS Pro

ArcGIS Pro – 64-битное многопоточное приложение. Любое 64-битное приложение может использовать больше оперативной памяти, чем 32-битное, ограничение которого – 3 Гб. Запуск инструмента геообработки на панели Геообработка и в окне Python – не лучшее использование рабочей области in_memory: это может стоить вам потери производительности. Поскольку ArcGIS Pro – многопоточное приложение, оно может задействовать несколько CPU для одновременного выполнения нескольких задач. Операция геообработки, записывающая в рабочую область in_memory, держит результат выполнения операции в части оперативной памяти, недоступной для других потоков. Выходные данные должны сохраниться на диске (в папке или базе геоданных), чтобы все потоки могли работать с выходными данными. Если вы записываете выходные данные одной операции геообработки в in_memory, выходные данные создаются там, а затем копируются в базу геоданных перед отображением в приложении. Как уже было сказано ранее, рабочую область in_memory нужно использовать только для создания промежуточных данных моделей и скриптов. Модель или инструмент-скрипт выполнит один поток, и у него будет доступ к той же области in_memory. Ряд последовательных инструментов, как правило, будет выполняться быстрее, чем набор инструментов, выполняющих чтение и запись на диск.

Управление рабочей областью in_memory

При использовании рабочей области in_memory любые промежуточные данные лучше удалять как можно быстрее, чтобы освободить системную память. Для удаления данных из рабочей области in_memory можно использовать инструмент Удалить. Для очистки содержания рабочей области можно удалять как отдельные наборы данных, так или всю рабочую область целиком. Пустая область in_memory будет снова доступна для последующей работы.

Использование in_memory в моделях

При создании моделей инструменты соединяются через входные и выходные параметры. Выходные данные одного инструмента, использующиеся в качестве входных для последующей обработки другим инструментом, обычно называют промежуточными данными. Запись промежуточных выходных данных в рабочую область in_memory может привести к уменьшению времени выполнения модели при работе в ArcGIS Pro. Дополнительным преимуществом создания модели, использующей рабочую область in_memory, является то, что при ее публикации в качестве веб-инструмента ArcGIS Enterprise она будет продолжать использовать рабочую область in_memory при ее выполнении на сервере.

Выходные данные, заданные, как параметры, по умолчанию добавляются на карту при выполнении модели, как инструмента. Эти выходные данные могут быть записаны в рабочую область in_memory, но будут при этом конвертированы в класс объектов локальной базы геоданных при выполнении инструмента. Вместо создания выходных данных в рабочей области in_memory и, следовательно, их конвертации в класс объектов, вы можете записать параметры модели в свою %scratchGDB% или другое место на диске, чтобы конвертация происходила только один раз.

Примечание:
Нельзя использовать параметр Добавить к отображению при записи в in_memory. Выходные данные геообработки нужно записать на диск или в базу геоданных, чтобы показать их на карте.

Использование in_memory в Python и arcpy

С помощью рабочей области in_memory в инструментах-скриптах Python вы можете получить те же преимущества, что и в случае с моделями. Запись промежуточных данных в область in_memory обычно выполняется быстрее, чем на диск. В следующем примере в рабочей области in_memory создаются наборы данных для инструментов Буфер и Стирание. FinalOutput инструмента Слияние по атрибутам создает класс объектов в базе геоданных Habitat, как это задано в настройке рабочей области.

Создание выходных данных в рабочей области in_memory

import arcpy
# Set the geoprocessing workspace
arcpy.env.workspace = r"C:\Data\Habitat.gdb"
# Buffer a Roads layer, writing output to in_memory 
arcpy.Buffer_analysis("Roads", "in_memory/Buffers", 1000)
# Erase the buffers from a Vegetation layer
arcpy.Erase_analysis("Vegetation", "in_memory/Buffers", "in_memory/Erased")
# Dissolve the in_memory output of Erase to make a final output
arcpy.Dissolve_management("in_memory/Erased", "FinalOutput")