Работа с операторами в Алгебре карт
В Алгебре карт операторы служат для применения математической операции к входным растрам и числам.
В целом, операторы помещаются между двумя входными значениями данных (операндами) для выполнения математической операции (например, outVar = 3 + 7). В Алгебре карт операндами могут являться растры или числа. Чтобы использовать оператор вместе с растром, растр должен являться растровым объектом.
Приведенная ниже таблица может служить кратким справочником по реализации текущих операторов Алгебры карт в отношении операторов Python и операторов Алгебры карт в предыдущих версиях 9.x.
Операция | Оператор Python |
Оператор Алгебры карт |
Оператор Алгебры карт версии 9.x * |
Инструмент Spatial Analyst GP |
---|---|---|---|---|
Арифметическая (Arithmetic) | ||||
Добавление | + | + | + | |
Деление | / |
/ |
/, div | |
Целочисленное деление | // |
// |
недоступно |
недоступно |
По модулю (Modulo) | % | % | Остаток (Mod) | |
Умножение | * |
* |
* | |
Степень (Power) | ** |
** |
недоступно | |
Вычитание | - |
- |
- | |
Унарный минус | - |
- |
- | |
Унарный плюс | + |
+ |
недоступно |
недоступно |
Логический | ||||
Булев оператор And (И) | недоступно |
& |
&, and | |
Логическое дополнение | недоступно |
~ |
^, not | |
Логический исключающий оператор Or | недоступно |
^ |
!, xor | |
Булев оператор Or | недоступно |
| |
|, or | |
Отношение | ||||
Равно (Equal To) | == | == | ==, eq | |
Больше | > | > | >, gt | |
Больше и равно | >= |
>= |
>=, ge | |
Меньше | < | < | <, lt | |
Меньше и равно | <= |
<= |
<=, le | |
Не равно | != |
!= |
^=, <>, ne | |
Побитовые (Bitwise) | ||||
Побитовый оператор And | & | недоступно | && | |
Побитовое дополнение | ~ | недоступно | ^^ | |
Побитовый исключающий оператор Or | ^ | недоступно | !! | |
Побитовый оператор Left Shift (Сдвиг влево) | << | << | << | |
Побитовый оператор Or | | | недоступно | || | |
Побитовый оператор Left Shift (Сдвиг вправо) | >> | >> | >> |
Правила операторов
- При использовании операторов только с числами, результатом будет являться число.
# outVar will be assigned 10 outVar = 3 + 7
- При использовании операторов с растрами, результатом будет являться растровый объект.
outRas = Raster("inraster1") + Raster("inraster2")
- При использовании растра в качестве операнда, результатом будет являться растровый объект.
# 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, который также может быть использован в выражении Алгебры карт.
- Некоторые операторы могут предваряться растровым объектом или числом.
outRas = -Raster("inraster")
- Логические операторы (~, &, ^, |) служат для выполнения логической операции, если один или несколько входных объектов (операндов) является растром. Если оба входных объекта (операнда) являются числами, то эти операторы приводят к выполнению побитовых операций.
Пробелы между операторами не являются необходимыми, но рекомендуются для удобства читаемости.
Инструменты и операторы могут вкладываться для создания сложных выражений.
Приоритет выражения в скобках
Значение приоритета определяет порядок выполнения операторов. Оператор с более высоким значением приоритета будет обрабатываться первым. Если два оператора имеют одинаковое значение приоритета, они обрабатываются в выражении слева направо.
Можно использовать скобки для переопределения приоритета действий в операции, начиная с последнего уровня вложенных скобок независимо от используемого оператора.
В следующей таблице приведены операторы Алгебры карт в порядке использования от самого низкого до самого высокого приоритета. Все операторы, приведенные в одной строке, имеют одинаковый приоритет.
Оператор Алгебры карт |
Литература |
---|---|
<, <=, >, >=, ==, != |
Меньше, Меньше или равно, Больше, Больше или равно, Равно, Не равно |
| |
|
^ |
|
& |
|
<<, >> |
Побитовый оператор Left Shift (Сдвиг влево), Побитовый оператор Right Shift (Сдвиг вправо) |
+, - |
|
*, /, //, % |
|
+, -, ~ |
|
** |