Использование параметров среды в Python

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

Скрипт может выполняться несколькими разными способами. Его можно запустить как инструмент скрипта в приложении ArcGIS, в частности ArcMap. Его также можно запустить из другого скрипта или самого по себе из окна Python. Когда скрипт выполняется в инструменте из приложения ArcGIS или другого скрипта геообработки, параметры среды, используемые вызывающим приложением, передаются ему. Эти параметры становятся параметрами по умолчанию, используемыми скриптом инструмента, когда последний выполняется. Вызванный скрипт может изменить параметры, переданные ему, но эти изменения используются только в данном скрипте или любом другом инструменте, которого он может вызвать. Изменения не передаются обратно вызывающему скрипту или приложению. Для описания модели среды наилучшим образом подходит определение каскадная, где значения переходят любому процессу, в котором используется среда геообработки.

Получение и установка параметров среды

Параметры среды представлены как свойства в классе env. Эти свойства можно применять для получения текущих значений или их установки. Каждый параметр среды имеет имя и подпись. Подписи отображаются в диалоговом окне Установки (Environment Settings) в ArcGIS. Имена используются в скриптах или командной строке в приложениях ArcGIS. Ниже приведены примеры того, как использовать значения среды.

Среды можно открывать как свойства чтения/записи из класса среды как arcpy.env.<environmentName>. Кроме того, вместо добавления префикса arcpy.env к каждому имени среды можно упростить код, воспользовавшись условием Python from-import. Преимущество этой альтернативы состоит в том, что она упрощает код и облегчает его чтение.

импорт arcpy

import arcpy

arcpy.env.workspace = "c:/data"

из arcpy import env

import arcpy
from arcpy import env

env.workspace = "c:/data"

Пример 1. Установка значений среды

import arcpy
from arcpy import env

# Set the workspace environment setting
#
env.workspace = "c:/St_Johns/data.gdb"

# Set the XYTolerance environment setting
#
env.XYTolerance = 2.5

# Calculate the default spatial grid index, divide in half, then
#   set the spatial grid 1 environment setting
#
result = arcpy.CalculateDefaultGridIndex_management("roads")

env.spatialGrid1 = float(result.getOutput(0)) / 2

# Clip the roads by the urban area feature class
#
arcpy.Clip_analysis("roads","urban_area","urban_roads")

Пример 2. Получение и установка значения среды

import arcpy
from arcpy import env

# Check the current raster cell size and make sure it is a certain size
#   for standard output
#
env.workspace = "c:/avalon/data"

if env.cellSize < 10:
    env.cellSize = 10
elif env.cellSize > 20:
    env.cellSize = 20
    
arcpy.HillShade_3d("island_dem", "island_shade", 300)
ВниманиеВнимание:

Написание и регистр имеют значение при установке значений среды. Присвоение значения параметру arcpy.env.Workspace не является аналогичным настройке arcpy.env.workspace (примечание: arcpy.env.workspace является правильной формой). При возникновении ситуации, когда настроена среда, но не виден эффект в последующих инструментах, проверьте написание и регистр.

Функцию ListEnvironments можно использовать для проверки правильности имен параметров среды.

import arcpy
print arcpy.ListEnvironments()

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

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

import arcpy

inputFC = arcpy.GetParameterAsText(0)
clipFC = arcpy.GetParameterAsText(1)
outputFC = arcpy.GetParameterAsText(2)

# Use scratchGDB environment to write intermediate data
#
tempData = arcpy.CreateScratchName(workspace=arcpy.env.scratchGDB)

bufferResult = arcpy.Buffer_analysis(inputFC, tempData, "50 METERS")
arcpy.Clip_analysis(clipFC, bufferResult, outputFC)

Как настроена среда scratchFolder:

Как настроена среда scratchFolder:

Сброс параметров сред

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

Функцию ResetEnvironments можно использовать для восстановления значений параметра среды по умолчанию, или функцию ClearEnvironment можно использовать для сброса определенной среды.

# Reset geoprocessing environment settings
arcpy.ResetEnvironments()

# Reset a specific environment setting
arcpy.ClearEnvironment("workspace")

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

9/11/2013