Использование текущей и временной области
Практически все инструменты геообработки производят обработку входных наборов и создают новые наборы данных. При использовании инструментов геообработки не очень удобно прописывать полностью имя и место хранения набора данных, например:
E:\Data\D052753_a\infrastructure\BK16_c1\approved.gdb\roads\mjrst
Ввод такого имени набора данных занимает много времени, и здесь легко допустить ошибку. Поэтому среда геообработки позволяет вам перетаскивать наборы данных или слои в поля диалогового окна инструмента, а также использовать кнопку Обзор (Browse) для навигации к набору данных, а также выбирать слои из ниспадающего списка. Кроме того, существуют еще два параметра, которые помогают указать входной и выходной набор данных – это установки среды текущая рабочая область и временная рабочая область.
Ниже приводится краткое описание текущей и временной рабочих областей:
- Вы указываете эти рабочие области в окне Параметры среды геообработки (Geoprocessing Environments), доступ к которому вы можете получить из меню Геообработка (Geoprocessing) > Параметры среды (Environments).
- Параметры настройки ваших текущей и временной рабочих областей, как и все параметры среды геообработки, сохраняются в вашем документе карты.
- В ArcMap текущая и временная рабочие области автоматически устанавливаются такими же, как и база геоданных по умолчанию. Вы всегда можете изменить настройки текущей и временной рабочих областей, указав другую базу данных, отличную от базы геоданных по умолчанию.
- При использовании диалогового окна инструмента или запуске инструмента из среды Python вы можете указать основное имя набора данных, и инструмент найдет его в текущей рабочей области.
- При использовании диалогового окна инструмента, имена выходных наборов данных создаются автоматически с помощью параметров текущей и временной рабочих областей.
Установка параметра среды текущей рабочей области
- В ArcMap перейдите в пункт меню Геообработка (Geoprocessing) > Параметры среды (Environments). Откроется окно Параметры среды (Environment Settings).
-
Разверните категорию Рабочая область (Workspace) и укажите путь к рабочей области. На рисунке ниже видно, что в качестве текущей рабочей области выбран путь D:\ArcTutor\BuildingaGeodatabase\Montgomery.gdb\Landbase к набору классов объектов в базе геоданных.
В качестве текущей рабочей области вы можете установить папку, базу геоданных или набор классов объектов в базе геоданных.
- Нажмите кнопку ОК.
Существует еще несколько способов установки параметров среды. Вы также можете установить параметры среды таким образом, чтобы они были использованы для всех инструментов, только для одного инструмента, модели, процесса модели или скрипта.
Использование основных имен
Смысл параметра текущей рабочей области в том, чтобы, один раз задав рабочую область, при указании пути для входных и выходных данных использовать только основное имя набора данных. Имя набора данных состоит из нескольких частей - имени рабочей области и самого имени набора данных, как показано ниже.
Пример использования имен самих наборов данных
На рисунке ниже показана база геоданных, которая используется в качестве текущей рабочей области. В качестве текущей рабочей области выбран набор классов объектов D:\BuildingaGeodatabase\Montgomery.gdb\Landbase.
Как только рабочая область будет выбрана, вы сможете просто вводить имя набора данных, когда это необходимо. Ниже приводится пример использования инструмента Вырезать (Clip).
- При добавлении к основному имени набора данных (Blocks) текущей рабочей области получается полное имя пути к набору данных (D:\BuildingaGeodatabase\Montgomery.gdb\Landbase\Blocks). Значение параметра Входные объекты (Input Features) будет замещено этим именем набора данных.
- Уникальное имя выходного набора данных будет сгенерировано автоматически. Основное имя выходного набора данных будет соответствовать основному имени входного (Blocks) с добавлением нижнего подчеркивания и имени инструмента – в данном случае Вырезать (Clip). При необходимости, для уникальности имени также будет добавлено число.
- Если вы не хотите использовать выходное имя, генерируемое автоматически, вы можете удалить его и использовать другое имя для набора данных, к которому будет автоматически добавлен полный путь, как показано ниже.
После того, как произведете запуск инструмента, вы можете обнаружить, что выходной набор данных не был записан в нужную папку, потому что при вводе пути к выходному набору данных вы допустили ошибку. Вы также можете забыть, куда была произведена запись выходных данных. В этом случае откройте окно Результаты (Results), в нем содержится информация о ходе работы инструмента, а также сведения о входных и выходных наборах данных.
Вы также можете использовать имя набора данных при запуске инструментов в пакетном режиме, как показано на рисунке ниже.
Отображение рабочей области в диалоговом окне инструмента
Если на секунду задержать указатель мыши над кнопкой Обзор (Browse), то вы увидите рабочую область, которую вы выбирали в прошлый раз, как показано на рисунке внизу.
Когда вы щелкните на кнопке обзора, диалоговое окно Обзор (Browse) откроется в текущей рабочей области.
Текущая рабочая область и имя наборов данных в коде скриптов
В окне Python в качестве рабочей области используется текущая рабочая область. После установки рабочей области вы можете использовать имя любого набора данных в этой рабочей области, как показано на рисунке ниже.
>> import arcpy
>> arcpy.env.workspace = "c:/projects/RedRiverBasin/data.mdb"
>> arcpy.Intersect_analysis("roads ; streams ", "stream_crossings", "#", 1.5, "point")
Ниже приводится пример скрипта Python, в котором используется команда для выбора рабочей области:
# Purpose: Determine the type of vegetation within 100 meters of all stream crossings
# Import the ArcPy site-package
import arcpy
try:
# Set the workspace (to avoid having to type in the full path to the data every time)
arcpy.env.workspace = "c:/projects/RedRiverBasin/data.mdb"
# Process: Find all stream crossings (points)
arcpy.Intersect_analysis("roads ; streams ", "stream_crossings", "#", 1.5, "point")
# Process: Buffer all stream crossings by 100 meters
arcpy.Buffer_analysis("stream_crossings","stream_crossings_100m", "100 meters")
# Process: Clip the vegetation feature class to stream_crossings_100m
arcpy.Clip_analysis("vegetation", "stream_crossings_100m", "veg_within_100m_of_crossings")
# Process: Summarize how much (area) of each type of vegetation is found within 100 meters of the stream crossings
arcpy.Statistics_analysis("veg_within_100m_of_crossings", "veg_within_100m_of_crossings_stats","shape_area sum","veg_type")
except:
# If an error occurred while running a tool print the messages
print arcpy.GetMessages()
Параметр среды временной рабочей области
Помимо текущей рабочей области существует параметр среды временной рабочей области. Настройка временной рабочей области производится таким же образом, как и текущая рабочая область.
В основном временная рабочая область используется в ModelBuilder. Для ModelBuilder необходима рабочая область для записи промежуточных наборов данных - наборы данных, которые будут не нужны после завершения всех процессов в модели. Хотя основное применение этого параметра - ModelBuilder, вы можете установить ее для диалоговых окон инструментов. Иногда вы можете установить временную рабочую область для запуска в ModelBuilder, а затем забыть обновить значение этого параметра перед запуском инструмента из его диалогового окна.
Если вы производите установку временной рабочей области, то инструменты будут использовать ее для автоматической генерации пути к наборам данных, а не текущую рабочую область, как показано на рисунке ниже.
Если вы введете только имя набора данных в качестве выходных данных, для создания пути к набору будет использована текущая, а не временная рабочая область.
Помните о том, что всякий раз, когда используется только основное имя набора данных, к нему будет добавлена текущая , а не временная рабочая область. Помните об этом при написании скриптов. В участке кода ниже выходной набор данных "stream_crossings" будет записан в текущую, а не в рабочую область.
arcpy.env.workspace = "c:/projects/RedRiverBasin/data.mdb"
arcpy.env.scratchWorkspace = "c:/projects/Scratch/scratch.gdb"
arcpy.Intersect_analysis("roads ; streams ", "stream_crossings", "#", 1.5, "point")
Поскольку временная рабочая область используется для временных данных, не используйте для этих целей базу геоданных ArcSDE. Это может привести к снижению производительности, поскольку вы можете производить запись временных данных в головную базу данных вашей организации. Рекомендуется всегда использовать файловую базу геоданных (а не персональную базу геоданных или папку для шейп-файлов) для временной рабочей области.
Автоматически создаваемые пути к выходным данным
Все инструменты произведут создание имени выходного набора данных. Логика для создания выходного имени выглядит следующим образом:
- Если в параметрах среды значение временной рабочей области задано, автоматически создаваемым путем выходных данных будет временная рабочая область.
- Если временная рабочая область не задана, программа обратится к текущей рабочей области. Если текущая рабочая область будет установлена, то в качестве автоматически создаваемого выходного пути будет использована текущая рабочая область.
- Если ни одна из рабочих областей не будет установлена, то в качестве автоматически создаваемого пути будет использована рабочая область одного из входных наборов данных. В этом случае имеется несколько ограничений. Например, если рабочим пространством является покрытие, а в качестве выходных данных создается класс пространственных объектов, то на выходе будет создан шейп-файл в папке на один уровень выше рабочей области покрытия. При создании выходных данных имеются и другие ограничения, например, доступ на запись. В некоторых случаях выходные данные будут записаны в системную временную папку.
- Если вы укажете для выходного набора данных имя только самого набора данных, то для создания полного пути к данным будет использована текущая рабочая область, независимо от того, была ли установлена временная рабочая область.