Временные данные — это данные, используемые инструментом и удаляемые после завершения работы инструмента. В ModelBuilder временные данные называются промежуточными данными. Данные, которые помечаются как промежуточные (intermediate) в ModelBuilder, автоматически удаляются после завершения работы инструмента-модели. Однако в скриптах разработчик сам несет ответственность за удаление временных данных.
Если доступ предоставляется к набору инструментов, содержащему модель и инструменты-скрипты, необходимо место — папка или база геоданных — в которую инструменты смогли бы записывать промежуточные и временные данные. Существует две среды, доступные только для чтения, временная база геоданных (Scratch GDB) и временная папка (Scratch), доступные для записи промежуточных и временных данных. Эти две среды были представлены в ArcGIS 10.1.
Промежуточные данные в моделях
Все промежуточные данные должны быть помечены соответствующим образом и записаны или во временную папку, или во временную базу геоданных. На приведенной ниже иллюстрации показана переменная данных Пересечение центров тяжестей, помеченная как промежуточная, и ее выходное местоположение во временной базе геоданных (%scratchGDB%). Знаки процентов (%) означают замену переменной — значение scratchGDB расширяется при выполнении инструмента модели, и класс poly_Intersect записывается во временную базу геоданных. Аналогичным образом используется %scratchFolder% для записи данных на основе файлов, например файлов .lyr или .txt.
- Дополнительные сведения о промежуточных данных в моделях
- Дополнительные сведения о замене переменных в моделях
- Примеры подстановки встроенных переменных модели
При записи промежуточных классов объектов может возникнуть желание записать шейп-файлы во временную папку. Однако этого следует избегать, данные объектов необходимо записывать во временную базу геоданных, так как шейп-файлы имеют достаточно жесткие ограничения и могут повлиять на гибкость разрабатываемых инструментов. Дополнительные сведения о шейп-файлах и связанных с ними ограничениях см. в разделе Особенности геообработки с выходными данными в формате шейп-файла.
Можно также записать промежуточные данные в рабочую область, расположенную в оперативной памяти.
Дополнительные сведения о рабочей области в оперативной памяти
Управление временными данными в инструментах-скриптах
Временные данные в инструментах-скриптах должны быть записаны или во временную базу геоданных, или во временную папку. В приведенном ниже коде показано копирование класса объекта во временную базу геоданных и удаление этого класса после завершения обработки.
import arcpy
import os
inFC = arcpy.GetParameterAsText(0)
tempFC = arcpy.env.scratchGDB + os.path.sep + "tempFC"
arcpy.CopyFeatures_management(inFC, tempFC)
# Do some work here...
# Clean up when done...
#
arcpy.Delete_management(tempFC)
При работе скрипта можно также записывать данные в рабочую область, расположенную в оперативной памяти. Например:
import arcpy
table = arcpy.CreateTable_management("in_memory", "table1")
arcpy.AddField_management(table, "Field1", "TEXT", field_length=20)
cursor = arcpy.da.InsertCursor(table, ["Field1"])
cursor.insertRow(["Hello World"])
Рабочая область in_memory подходит только для инструментов геообработки; она не является виртуальной папкой общего назначения, в которую можно записывать любые данные.
Временная рабочая область
Параметр среды Временная рабочая область используется преимущественно приложением ModelBuilder для размещения промежуточных и выходных данных. Эта среда может быть задана разработчиком (или пользователем инструмента) как любое местоположение: папка, база геоданных или даже набор классов объектов в базе геоданных. Использование среды временной рабочей области для общедоступных инструментов не рекомендуется, так как пользователь инструмента может задать в качестве среды временной рабочей области папку, базу геоданных или набор классов объектов. Например, разработчик ожидал определения в качестве временной рабочей области папку, в которую можно выкладывать файл слоя, однако пользователь инструмента задал в качестве временной рабочей области базу геоданных. При выполнении инструмент завершит работу со сбоем, так как не сможет записать файл слоя в базу геоданных. Основная причина, по которой временная база геоданных и временная папка были введены в версии 10.1 — предоставить специальную базу геоданных и специальную папку для записи данных.