Запись выходных данных геообработки в память компьютера

Запись выходных данных геообработки в память компьютера - альтернатива хранению выходных данных в базе геоданных или других файлах. Она обычно происходит со значительно большей скоростью, чем запись на диск. Данные, записанные в память, являются временными и удаляются при закрытии приложения. Виртуальная рабочая область — идеальное место для записи промежуточных данных в модели ModelBuilder или скрипте Python.

Рабочие области в памяти

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

виртуальная рабочая область

Рабочая область memory - это рабочая область на основе памяти, которая поддерживает выходные классы пространственных объектов, таблицы и наборы растровых данных.

Для записи в рабочую область memory укажите путь к выходному набору данных, начав с memory\ и без расширения файла - например, memory\tempOutput.

Наборы данных memory можно добавлять на карту в ArcGIS Pro.

Рабочая область in_memory

Прежние версии:

Рабочая область in_memory - новая рабочая область в памяти, разработанная для ArcMap и поддерживающая выходные классы пространственных объектов, таблицы и наборы растровых данных.

Для записи в рабочую область in_memory укажите путь к выходному набору данных, начав с in_memory\ и без расширения файла - например, in_memory\tempOutput.

Примечание:

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

Копирование в базу геоданных проекта не выполняется, если виртуальные наборы данных являются временными и не добавляются на карту.

В отличие от рабочей области memory, рабочая область in_memory не поддерживает подтипы или домены.

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

Управлять данными в рабочей области memory можно только с помощью инструментов геообработки, которые не отображаются на панели Каталог или в окне Каталог. Чтобы увидеть, какие слои на карте имеют источник данных в оперативной памяти, на панели Содержание нажмите кнопку По источнику данных По источнику данных. Источники данных в оперативной памяти будут перечислены под рабочей областью InMemoryDB\GPProMemoryWorkspace.

Вы также можете получить список наборов данных в пространстве memory, используя функции списков ArcPy.

# Set the workspace and list the data saved to memory
arcpy.env.workspace = "memory"

print(f"Memory Feature Classes: {arcpy.ListFeatureClasses()}")
print(f"Memory Rasters: {arcpy.ListRasters()}")
print(f"Memory Tables: {arcpy.ListTables()}")

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

Использование рабочей области в оперативной памяти в 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")

Ограничения

Рабочие области в памяти характеризуются следующими ограничениями:

  • Рабочие области в памяти не поддерживают такие элементы баз геоданных, как наборы данных, классы отношений, правила атрибутов, зависящие значения, группы полей, пространственные или атрибутивные индексы, представления, топологию, геометрические сети и наборы сетевых данных.
  • Инструмент Копировать не поддерживает входные или выходные наборы данных из виртуальной рабочей области. Для копирования наборов данных в виртуальную рабочую область используйте инструменты Копировать объекты и Экспорт объектов.
  • Инструмент Сократить таблицу не поддерживает входные данные из виртуальных рабочих областей.
  • Поскольку рабочие области хранятся в физической памяти вашей системы, то есть в оперативной памяти (RAM), этой памяти может не хватить при записи в эту рабочую область больших наборов данных. Это может негативно повлиять на производительность обработки данных.
  • В рабочих областях в памяти нельзя создавать папки.
  • Виртуальные рабочие области поддерживают ограниченные изменения полей атрибутов и схем с помощью инструмента Изменить поле и других инструментов. Вы можете изменять псевдонимы, но не имена и другие свойства полей.