Доступно с лицензией Spatial Analyst.
Доступно с лицензией Image Analyst.
В Алгебре карт операторы служат для применения математической операции к входным растрам и числам.
В целом, операторы помещаются между двумя входными значениями данных (операндами) для выполнения математической операции (например, outVar = 3 + 7). В Алгебре карт операндами могут являться растры или числа. Чтобы использовать оператор вместе с растром, растр должен быть Raster object.
Приведенная ниже таблица может служить кратким справочником по реализации текущих операторов Алгебры карт в отношении операторов Python.
Операция | Оператор Python | Оператор Алгебры карт | Инструмент геообработки | |
---|---|---|---|---|
Арифметика | ||||
Сложение | + | + | Сложить | |
Деление | / | / | Разделить | |
Целочисленное деление | // | // | N/A | |
Модуль | % | % | Mod | |
Умножение | * | * | Умножить | |
Степень | ** | ** | Степень | |
Вычитание | – | – | Вычесть | |
Унарный минус | – | – | Изменить знак | |
Унарный плюс | + | + | N/A | |
Логические | ||||
Булев оператор And | N/A | & | Булев оператор And | |
Логическое дополнение | N/A | ~ | Булев оператор Not | |
Логический исключающий оператор Or | N/A | ^ | Булев оператор XOr | |
Булев оператор Or | N/A | | | Булев оператор Or | |
Относительные | ||||
Равно | == | == | Равно | |
Больше | > | > | Больше чем | |
Больше и равно | >= | >= | Больше или равно | |
Меньше | < | < | Меньше | |
Меньше и равно | <= | <= | Меньше или равно | |
Не равно | != | != | Не равно | |
Побитовые | ||||
Побитовый оператор And | & | N/A | Побитовый оператор And | |
Побитовое дополнение | ~ | N/A | Побитовый оператор Not | |
Побитовый исключающий оператор Or | ^ | N/A | Побитовый оператор XOr | |
Побитовый оператор Left Shift | << | << | Побитовый оператор Left Shift | |
Побитовый оператор Or | | | N/A | Побитовый оператор Or | |
Побитовый оператор Right Shift | >> | >> | Побитовый оператор Right Shift |
Правила операторов
- При использовании операторов только с числами результатом будет являться число.
# outVar will be assigned 10 outVar = 3 + 7
- При использовании операторов с растрами, растр должен быть объектом Raster.
outRas = Raster("inraster1") + Raster("inraster2")
- При использовании растра в качестве операнда, результатом будет являться объект Raster.
# In the following statement, 4 is added to each cell value in inraster1 outRas = Raster("inraster1") + 4 outRas2 = Raster("inraster") + math.pi
В приведенном выше выражении pi берется из модуля math в Python. Модуль math также включает основание натурального логарифма, math.e, который также используется в выражении Алгебры карт.
- Некоторые операторы могут предваряться объектом Raster или числом.
outRas = -Raster("inraster")
- Логические операторы (~, &, ^, |) служат для выполнения логической операции, если один или несколько входных объектов (операндов) является растром. Если оба входных объекта (операнда) являются числами, то эти операторы приводят к выполнению побитовых операций.
Подсказка:
Пробелы между операторами не являются необходимостью, но рекомендуются для удобочитаемости.
Инструменты и операторы могут вкладываться для создания сложных выражений.
Правила оператора Многомерный растр
- Когда оператор используется с многомерным растром и с числом, результатом является многомерный объект Raster с теми же переменными и размерностями, что и входные данные.
# In the following statement, 100 is added to each cell in # each slice of in_multidem_raster out_multidem_raster = in_multidem_raster + 100
- Когда оператор используется с многомерным растром и с не многомерным растром, результатом является многомерный объект Raster с теми же переменными и размерностями, что и входные данные.
Если входные объекты Raster не перекрываются, результат не возвращается.
# In the following statement, the cell values from in_raster are added to # the cell values in each slice of in_multidem_raster. out_multidem_raster = in_multidem_raster + in_raster
- Когда оператор используется с двумя многомерными растрами, результатом будет многомерный объект Raster, содержащий только переменные и размерности, общие для обоих входных данных. Например, если один многомерный растр содержит данные дневных температур за 1995–2015, а другой - за 2001–2005 годы, результатом работы оператора будут данные дневных температур за 2001–2005.
Если входные многомерные объекты Raster не содержат общих переменных и измерений, результат не возвращается.
# In the following statement, the cell values in each slice from in_multidem_raster1 # are added to the cell values in each slice from in_multidem_raster2, only where variables and # dimensionality overlap. out_multidem_raster = in_multidem_raster1 + in_multidem_raster2
Приоритет выражения в скобках
Значение приоритета определяет порядок выполнения операторов. Оператор с более высоким значением приоритета будет обрабатываться первым. Если два оператора имеют одинаковое значение приоритета, они обрабатываются в выражении слева направо.
Можно использовать скобки для переопределения приоритета действий в операции, начиная с последнего уровня вложенных скобок независимо от используемого оператора.
В следующей таблице приведены операторы Алгебры карт в порядке использования от самого низкого до самого высокого приоритета. Все операторы, приведенные в одной строке, имеют одинаковый приоритет.
Оператор Алгебры карт | Справка |
---|---|
<, <=, >, >=, ==, != | Меньше, Меньше или равно, Больше, Больше или равно, Равно, Не равно |
| | |
^ | |
& | |
<<, >> | Побитовый оператор Left Shift, Побитовый оператор Right Shift |
+, - | |
*, /, //, % | |
+, -, ~ | |
** |