^ (Boolean XOr) operator

Доступно с лицензией Spatial Analyst.

Доступно с лицензией Image Analyst.

Краткая информация

Выполняет логическую операцию Исключающее ИЛИ над значениями ячеек двух исходных растров.

Иллюстрация

Иллюстрация Булев XOr
OutRas = Raster("InRas1") ^ Raster("InRas2")

Обсуждение

Оператор ^ выполняет булеву операцию XOr, когда одно или несколько входных значений являются растрами. Если оба входных значения являются числами, оператор ^ выполняет побитовую булеву операцию XOr. Дополнительную информацию о работе с операторами можно найти в разделе Работа с операторами.

Если в выражении используется несколько операторов, их необязательно выполнять слева направо. Оператор с наивысшим значением приоритета будет выполнен первым. Более подробно см. таблицу приоритета операторов в разделе Работа с операторами в Алгебре карт. Порядок выполнения операторов можно изменить с помощью скобок.

У булевых операторов (~, &, ^ и |) уровень приоритет более высокий, чем у операторов сравнения (<, <=, >, >=, == и !=). Поэтому если булевы операторы используются в выражении вместе с операторами сравнения, логические операторы будут выполняться первыми. Для изменения порядка выполнения операторов нужно использовать скобки.

Если в выражении последовательно используется несколько операторов сравнения и/или булевых операторов, в некоторых случаях оно может не выполниться. Чтобы избежать подобной проблемы, используйте в выражении соответствующие круглые скобки, чтобы явно задать порядок выполнения операторов. Более подробно изучите правила сложных выражений в разделе Построение сложных выражений.

Для выполнения Булевой операции необходимо наличие двух входных файлов.

Для этого оператора не важен порядок растров во входном списке.

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

Также булеву операцию XOr можно выполнять a ^= b, что является альтернативным способом написания a = a ^ b.

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

Если оба входных растра являются многоканальными, оператор будет выполнен для каждого канала, а выходной растр будет многоканальным. Число каналов всех многоканальных растров должно быть одинаковым.

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

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

Если у обоих входных данных одна переменная, но разные имена, установите False для среды геообработки matchMultidimensionalVariable, чтобы выполнить операцию.

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

Параметры

ОперандОписаниеТип данных
in_raster_or_constant1

Первый входной растр для выполнения операции Булев XOr.

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

Raster Layer | Constant
in_raster_or_constant2

Второй входной растр для выполнения операции Булев XOr.

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

Raster Layer | Constant

Пример кода

^ (Булев XOr), пример 1 (окно Python)

В этом примере выполняется булева операция XOr на двух входных растрах.

import arcpy
from arcpy import env
from arcpy.ia import *
env.workspace = "C:/iapyexamples/data"
outBooleanXOr = Raster("degs") ^ Raster("negs")
outBooleanXOr.save("C:/iapyexamples/output/outboolxor.tif")
^ (Булев XOr), пример 2 (автономный скрипт)

В этом примере выполняется булева операция XOr на двух входных растрах.

# Name: Op_BooleanXOr_Ex_02.py
# Description: Performs a Boolean Exclusive Or operation on the
#              cell values of two input rasters
# Requirements: Image Analyst Extension

# Import system modules
import arcpy
from arcpy import env
from arcpy.ia import *

# Set environment settings
env.workspace = "C:/iapyexamples/data"

# Set local variables
inRaster1 = Raster("degs")
inRaster2 = Raster("negs")

# Execute BooleanXOr
outBooleanXOr = inRaster1 ^ inRaster2

# Save the output 
outBooleanXOr.save("C:/iapyexamples/output/outboolxor")

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