Использование текущей и временной области

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

E:\Data\D052753_a\infrastructure\BK16_c1\approved.gdb\roads\mjrst

Ввод такого имени набора данных занимает много времени, и здесь легко допустить ошибку. Поэтому среда геообработки позволяет вам перетаскивать наборы данных или слои в поля диалогового окна инструмента, а также использовать кнопку Обзор (Browse) Открыть для навигации к набору данных, а также выбирать слои из ниспадающего списка. Кроме того, существуют еще два параметра, которые помогают указать входной и выходной набор данных – это установки среды текущая рабочая область и временная рабочая область.

Ниже приводится краткое описание текущей и временной рабочих областей:

Установка параметра среды текущей рабочей области

Шаги:
  1. В ArcMap перейдите в пункт меню Геообработка (Geoprocessing) > Параметры среды (Environments). Откроется окно Параметры среды (Environment Settings).
  2. Разверните категорию Рабочая область (Workspace) и укажите путь к рабочей области. На рисунке ниже видно, что в качестве текущей рабочей области выбран путь D:\ArcTutor\BuildingaGeodatabase\Montgomery.gdb\Landbase к набору классов объектов в базе геоданных.

    Установка параметра среды текущей рабочей области

    В качестве текущей рабочей области вы можете установить папку, базу геоданных или набор классов объектов в базе геоданных.

  3. Нажмите кнопку ОК.
  4. Вы также можете перейти к базе геоданных в окне Каталог (Catalog), щелкнуть правой кнопкой мыши на базе геоданных и выбрать База геоданных по умолчанию (Make Default Geodatabase). Текущая и временная рабочие области будут определены в этой базе геоданных по умолчанию.

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

Подробнее о параметрах среды

Использование основных имен

Смысл параметра текущей рабочей области в том, чтобы, один раз задав рабочую область, при указании пути для входных и выходных данных использовать только основное имя набора данных. Имя набора данных состоит из нескольких частей - имени рабочей области и самого имени набора данных, как показано ниже.

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

Пример использования имен самих наборов данных

На рисунке ниже показана база геоданных, которая используется в качестве текущей рабочей области. В качестве текущей рабочей области выбран набор классов объектов D:\BuildingaGeodatabase\Montgomery.gdb\Landbase.

Содержание набора данных Montgomery.gdb

Как только рабочая область будет выбрана, вы сможете просто вводить имя набора данных, когда это необходимо. Ниже приводится пример использования инструмента Вырезать (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. Это может привести к снижению производительности, поскольку вы можете производить запись временных данных в головную базу данных вашей организации. Рекомендуется всегда использовать файловую базу геоданных (а не персональную базу геоданных или папку для шейп-файлов) для временной рабочей области.

Автоматически создаваемые пути к выходным данным

Все инструменты произведут создание имени выходного набора данных. Логика для создания выходного имени выглядит следующим образом:

Связанные темы

9/11/2013