Работа с операторами в Алгебре карт
Доступно с лицензией Spatial Analyst.
Доступно с лицензией Image Analyst.
В Алгебре карт операторы служат для применения математической операции к входным растрам и числам.
В целом, операторы помещаются между двумя входными значениями данных (операндами) для выполнения математической операции (например, outVar = 3 + 7). В Алгебре карт операндами могут являться растры или числа. Чтобы использовать оператор вместе с растром, растр должен являться объектом Raster.
Приведенная ниже таблица может служить кратким справочником по реализации текущих операторов Алгебры карт в отношении операторов Python.
|
Операция |
Оператор Python |
Оператор Алгебры карт |
Инструмент геообработки |
|
|---|---|---|---|---|
|
Арифметическая |
||||
|
Сложение |
+ |
+ |
Сложить |
|
|
Деление |
/ |
/ |
Разделить |
|
|
Целочисленное деление |
// |
// |
Н/Д |
|
|
Остаток |
% |
% |
Остаток |
|
|
Умножение |
* |
* |
Проекция Таймс |
|
|
Степень |
** |
** |
Степень |
|
|
Вычитание |
|
|
Вычесть |
|
|
Унарный минус |
|
|
Изменить знак |
|
|
Унарный плюс |
+ |
+ |
Н/Д |
|
|
Boolean |
||||
|
Булев оператор And |
Н/Д |
& |
Булев оператор And |
|
|
Логическое дополнение |
Н/Д |
~ |
Булев оператор Not |
|
|
Логический исключающий оператор Or |
Н/Д |
^ |
Булев оператор XOr |
|
|
Булев оператор Or |
Н/Д |
| |
Булев оператор Or |
|
|
Относительный |
||||
|
Равно |
== |
== |
Равно |
|
|
Больше |
> |
> |
Больше чем |
|
|
Больше и равно |
>= |
>= |
Больше или равно |
|
|
Меньше |
< |
< |
Меньше чем |
|
|
Меньше и равно |
<= |
<= |
Меньше или равно |
|
|
Не равно |
!= |
!= |
Не равно |
|
|
Побитовые |
||||
|
Побитовый оператор And |
& |
Н/Д |
Побитовый оператор And |
|
|
Побитовое дополнение |
~ |
Н/Д |
Побитовый оператор Not |
|
|
Побитовый исключающий оператор Or |
^ |
Н/Д |
Побитовый оператор XOr |
|
|
Побитовый оператор Left Shift |
<< |
<< |
Побитовый оператор Left Shift |
|
|
Побитовый оператор Or |
| |
Н/Д |
Побитовый оператор 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 |
|
+, - |
|
|
*, /, //, % |
|
|
+, -, ~ |
|
|
** |