Для каждого инструмента определен набор параметров, который он использует для выполнения операции. Некоторые из этих параметров являются общими для всех инструментов, например, допуск или выходное местоположение. Эти параметры могут получать свои параметры по умолчанию из среды геообработки, которая используется всеми инструментами во время работы. При работе инструмента текущие параметры среды могут также использоваться как общие значения входных параметров. Такие параметры, как область интереса, пространственная привязка выходного набора данных и размер ячейки нового набора растровых данных, можно задать с помощью сред геообработки.
Скрипт может выполняться несколькими разными способами. Его можно запустить как инструмент скрипта в приложении ArcGIS. Его также можно запустить из другого скрипта или самого по себе из окна Python. Когда скрипт выполняется в инструменте из приложения ArcGIS или другого скрипта геообработки, параметры среды, используемые вызывающим приложением, передаются ему. Эти параметры становятся параметрами по умолчанию, используемыми скриптом инструмента, когда последний выполняется. Вызванный скрипт может изменить параметры, переданные ему, но эти изменения используются только в данном скрипте или любом другом инструменте, которого он может вызвать. Изменения не передаются обратно вызывающему скрипту или приложению. Для описания модели среды наилучшим образом подходит определение каскадная, где значения переходят любому процессу, в котором используется среда геообработки.
Получение и установка параметров среды
Параметры среды представлены как свойства в классе env. Эти свойства можно применять для получения текущих значений или их установки. К параметрам среды можно получить доступ как к свойствам чтения/записи из класса параметров среды как arcpy.env.<environmentName>.
import arcpy
arcpy.env.workspace = "c:/data"
Пример 1. Установка значений среды
import arcpy
# Set the workspace environment setting
#
arcpy.env.workspace = "c:/St_Johns/data.gdb"
# Set the XYTolerance environment setting
#
arcpy.env.XYTolerance = 2.5
# Calculate the default spatial grid index, divide in half, then
# set the spatial grid 1 environment setting
#
grid_index = arcpy.CalculateDefaultGridIndex_management("roads")[0]
arcpy.env.spatialGrid1 = float(grid_index) / 2
# Clip the roads by the urban area feature class
#
arcpy.Clip_analysis("roads", "urban_area", "urban_roads")
Пример 2. Получение и установка значения среды
import arcpy
# Check the current raster cell size and make sure it is a certain size
# for standard output
#
arcpy.env.workspace = "c:/avalon/data"
if arcpy.env.cellSize < 10:
arcpy.env.cellSize = 10
elif arcpy.env.cellSize > 20:
arcpy.env.cellSize = 20
arcpy.HillShade_3d("island_dem", "island_shade", 300)
Использование параметров среды для обработки временных данных
Параметры среды 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)
result = arcpy.Buffer_analysis(inputFC, tempData, "50 METERS")
arcpy.Clip_analysis(clipFC, result, outputFC)
Параметр среды scratchFolder устанавливается следующим образом:
- Если параметр scratchWorkspace не установлен, то параметр scratchFolder по умолчанию устанавливается на текущий каталог временных файлов пользователя.
- Если параметр scratchWorkspace ссылается на базу геоданных, то параметр scratchFolder будет являться папкой, содержащей базу геоданных.
- Если scratchWorkspace установлен на папку, то scratchFolder будет тем же самым, что и scratchWorkspace.
Параметр среды scratchGDB устанавливается следующим образом:
- Если параметр scratchWorkspace не установлен, то параметр scratchGDB устанавливается по умолчанию на базу геоданных с именем scratch.gdb в текущем каталоге временных файлов пользователя.
- Если scratchWorkspace ссылается на базу геоданных, то scratchGDB будет тем же самым, что и scratchWorkspace.
- Если параметр scratchWorkspace установлен на папку, то scratchGDB будет установлен на базу геоданных с именем scratch.gdb в папке scratchWorkspace.
Сброс параметров сред
Поскольку параметры среды геообработки могут значительно повлиять на производительность инструмента и выходные значения, важно удерживать треки настройки среды и сбрасывать параметры среды в случае необходимости к значениям по умолчанию.
Функцию ResetEnvironments можно использовать для восстановления значений параметров среды по умолчанию, а функцию ClearEnvironment можно использовать для сброса параметров среды.
import arcpy
# Reset geoprocessing environment settings
arcpy.ResetEnvironments()
# Reset a specific environment setting
arcpy.ClearEnvironment("workspace")