Краткая информация
Получить значение на основе заданного выражения Python.
Использование
Этот инструмент предназначен для использования в ModelBuilder, а не в скриптах Python.
Параметр Тип данных используется в ModelBuilder, чтобы упростить связывание выходных данных инструмента Вычислить значение с другими инструментами. Например, если вы используете инструмент Вычислить значение, чтобы вычислить расстояние для использования в качестве входных данных для параметра Буферное расстояние инструмента Буфер, задайте Линейные единицы для параметра Тип данных.
В этом инструменте можно использовать переменные, созданные в ModelBuilder, но переменные, которые желательно использовать в параметре выражения, нельзя соединить с инструментом Вычислить значение. Чтобы использовать их в выражении, заключите имя переменной в знаки процента (%). Например, если вы хотите разделить переменную Input на 100, выражение будет таким %Input%/100.
Примечание: в предыдущем выражении если Input = 123, результатом выражения будет 1. Чтобы получить десятичные знаки, добавьте десятичный разделитель в выражение. Например: %Input%/100.00 вернет 1.23. Следующий рисунок показывает другой пример использования переменных в выражении.
Выражения могут быть созданы только на языке Python; другие языки написания скриптов не поддерживаются.
Инструмент Вычислить значение может вычислить простые математические выражения. Ниже приведены примеры:
- 3+5
- 9*8
- 4+(9/3)
Инструмент Вычислить значение позволяет использовать математический модуль Python для выполнения более сложных математических операций. Можно получить доступ к математическому модулю, поставив перед нужной функцией math. Ниже приведены примеры:
- math.sqrt(25)
- math.cos(0.5)
Константы также поддерживаются математическим модулем. Пример:
- math.pi
Функция arcgis.rand() поддерживается. Функция arcgis.rand() была создана для инструментов ArcGIS, ее не следует путать с функцией Python Rand(). Примеры использования arcgis.rand():
- Вычислить случайное значение из равномерного распределения целых чисел между 0 и 10: arcgis.rand("Integer 0 10")
- Вычислить случайное значение из нормального распределения со средним значением 10 и стандартным отклонением 3: arcgis.rand("Normal 10 3")
Как правило, вы будете задавать выражения в параметре Выражение. Более сложные выражения, такие как мультилинейные вычисления или логические операции (если такие будут), требуют использования параметра Блок кода. Параметр Блок кода нельзя использовать сам по себе, его нужно использовать только вместе с параметром Выражение.
Выражение может ссылаться на переменные, заданные в параметре Блок кода.
В параметре Блок кода можно задавать функции и вызывать их из выражения. В приведенном ниже примере, функция выдает строку направления ветра на основе случайного входного значения. В Python функции задаются с помощью ключевого слова def, за которым следует имя функции и входные параметры функции. В нашем случае это функция getWind с одним параметром, wind. Значения возвращаются из функции с помощью ключевого слова return.
Вы можете передать переменную через параметр Выражение и использовать логику если-то с встроенными переменными в блоке кода, как показано ниже. Блок кода проверяет, является ли пустой переменная Входной размер ячейки, затем возвращает значение на основании этого условия.
Методы Python могут применяться непосредственно в параметре Выражение этого инструмента. Например, если у вас имеется входное значение с десятичным числом (в данном случае – значение поля входной таблицы), и вы хотите использовать это значение в выходном имени другого инструмента посредством подстановки встроенной переменной, о это десятичное число можно заменить, используя метод Python replace в выражении инструмента Вычислить значение.
В параметре блока кода можно вызвать модули Python и объединить или собрать методы, такие, как replace. В приведенном ниже примере модуль time импортирован в блоке кода, который возвращает текущие дату и время, например, Fri Mar 19 2010 09:42:39. Это полученное значение используется в качестве имени папки в инструменте Создать папку. Поскольку имя папки не может содержать пробелы и знаки препинания, метод Python replace используется с помощью накопления метода для каждого элемента, который требуется заменить. В данном примере папка получит имя FriMar192010094239.
Если вы будете вычислять значение в модели и захотите использовать полученные значения с такими инструментами, как Буфер, для которого необходимо значение буферного расстояния и линейные единицы измерения, необходимо сделать следующее:
- Возвратить линейную единицу в блок кода вместе со значением расстояния.
- Изменить тип данных возвращенных значений, как показано ниже.
- Установить параметр типа данных на линейные единицы, чтобы результат выражения был преобразован в значение, выраженное в линейных единицах.
Выходные данные инструмента Вычислить значение можно использовать непосредственно с любым инструментом Spatial Analyst, который принимает растровые или постоянные значения, таким как Сложить, Больше и Меньше (эти инструменты находятся в наборе инструментов Spatial Analyst /группа инструментов Математические). Для того, чтобы использовать выходные данные инструмента Вычислить значение, измените тип выходных данных на формализованный растр. Этот формат типа выходных данных представляет собой растровую поверхность, значения ячеек которой представлены формулой или константой.
В синтаксисе Python поддерживаются отступы. Уровень отступа (два пробела или четыре пробела) не имеет значения, поскольку соответствует всем кодам блокировки.
Вам не доступны переменные модели из кода блокировки. Такие переменные должны быть переданы в блок кода из выражения. Этого можно достичь, создав определение в параметре Блок кода и сославшись на определение в параметре Выражение.
Переменные модели типа list не должны использоваться в параметре Выражение. В силу особенностей работы переменных list в ModelBuilder, инструмент Вычислить значение будет выполнен один раз с первым значением переменной списка, другие значения не будут переданы в инструмент Вычислить значение.
Синтаксис
CalculateValue_mb (expression, {code_block}, {data_type})
Параметр | Объяснение | Тип данных |
expression | Выражение Python, по которому будет произведено вычисление. | SQL Expression |
code_block (Дополнительный) | Дополнительный код Python. На код в коде блокировки можно сослаться в параметре Выражение . | String |
data_type (Дополнительный) | Тип данных, полученных в результате вычисления. Этот параметр следует использовать в ModelBuilder, чтобы связать в последовательность инструмент Вычислить значение и другие инструменты. | String |
Производные выходные данные
Name | Объяснение | Тип данных |
value |
Параметры среды
Этот инструмент не использует параметры среды геообработки
Информация о лицензиях
- ArcGIS Desktop Basic: Да
- ArcGIS Desktop Standard: Да
- ArcGIS Desktop Advanced: Да