Работа с операторами в Алгебре карт

Доступно с лицензией 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

Приоритет выражения в скобках

Значение приоритета определяет порядок выполнения операторов. Оператор с более высоким значением приоритета будет обрабатываться первым. Если два оператора имеют одинаковое значение приоритета, они обрабатываются в выражении слева направо.

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

В следующей таблице приведены операторы Алгебры карт в порядке использования от самого низкого до самого высокого приоритета. Все операторы, приведенные в одной строке, имеют одинаковый приоритет.

Связанные разделы