Запись выходных данных геообработки в память компьютера - альтернатива хранению выходных данных в базе геоданных или других файлах. Она обычно происходит со значительно большей скоростью, чем запись на диск. Данные, записанные в память, являются временными и удаляются при закрытии приложения. Виртуальная рабочая область — идеальное место для записи промежуточных данных в модели 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 в базу геоданных проекта при следующих условиях:
- Выходные данные in_memory являются промежуточными, такими как в рабочих процессах Python или ModelBuilder.
- Выходные данные не добавляются на открытую карту, если опция геообработки Добавить выходные наборы данных к открытой карте не отмечена или если в ModelBuilder не выбрана опция Добавить к изображению.
В отличие от рабочей области memory, рабочая область in_memory не поддерживает подтипы или домены.
Управление рабочей областью в памяти
Управлять данными в рабочей области memory можно только с помощью инструментов геообработки, которые не отображаются на панели Каталог или в окне Каталог. Чтобы увидеть, какие слои на карте имеют источник данных в оперативной памяти, на панели Содержание щелкните кнопку По источнику данных ; Источники данных в оперативной памяти будут перечислены под
Memory.
Вы также можете получить список наборов данных в пространстве 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")
# Delete any intermediate datasets from memory
arcpy.management.Delete(r"memory\Erased")
arcpy.management.Delete(r"memory\Buffers")
Ограничения
Рабочие области в памяти характеризуются следующими ограничениями:
- Рабочие области в памяти не поддерживают такие элементы баз геоданных, как наборы данных, классы отношений, правила атрибутов, зависящие значения, группы полей, пространственные или атрибутивные индексы, представления, топологию, геометрические сети и наборы сетевых данных.
- Инструмент Копировать не поддерживает входные или выходные наборы данных из виртуальной рабочей области. Для копирования наборов данных в виртуальную рабочую область используйте инструмент Копировать объекты или Экспорт объектов.
- Инструмент Сократить таблицу не поддерживает входные данные из виртуальных рабочих областей.
- Поскольку рабочие области хранятся в физической памяти системы, то есть в оперативной памяти (RAM), этой памяти может не хватить при записи в эту рабочую область больших наборов данных. Это может негативно повлиять на производительность обработки данных.
- В рабочих областях в памяти нельзя создавать папки.
- Виртуальные рабочие области поддерживают ограниченные изменения полей атрибутов и схем с помощью инструмента Изменить поле и других инструментов. Вы можете изменять псевдонимы, но не имена и другие свойства полей.