Доступно с лицензией Spatial Analyst.
Доступно с лицензией Image Analyst.
Сводка
Выполняет булеву операцию "And" над значениями ячеек двух исходных растров.
Иллюстрация
Описание
Оператор & выполняет булеву операцию And-, когда одно или несколько входных значений (операндов) являются растрами. Если оба входных значения (операнда) & являются числами, оператор & выполняет побитовую операцию And. Дополнительную информацию о работе с операторами можно найти в разделе Работа с операторами.
Если в выражении используется несколько операторов, они не обязательно выполняются слева направо. Оператор с высшим значением приоритета будет выполнен первым. Более подробно о приоритете операторов см. в таблице приоритета операторов. Порядок выполнения можно изменить с помощью скобок.
Уровень приоритета Булевых операторов (~, &, ^, |) выше, чем у операторов сравнения (<, <=, >, >=, ==, !=). Поэтому, если в одном выражении используются Булевы и реляционные операторы, в первую очередь выполняются булевы операторы. Чтобы изменить порядок выполнения, используйте скобки.
Если Булевы и/или реляционные операторы последовательно используются в одном выражении, в некоторых случаях его выполнение может завершиться неудачей. Во избежание потенциальных проблем, используйте соответствующие скобки в выражении, чтобы четко определить порядок выполнения операторов. Для получения более подробной информации см. Правила комплексного оператора.
Для выполнения Булевой операции необходимо наличие двух входных значений.
Для этого оператора не важен порядок входных данных.
Если входными данными служат значения с плавающей точкой, они преобразуются в целые числа путем усечения до выполнения Булевой операции. Выходные значения всегда целочисленные.
Также булеву операцию And можно выполнять a &= b, что является альтернативным способом написания a = a & b.
Если оба входных растра одноканальные либо входные данные - одноканальный растр и константа, выходной растр будет одноканальным.
Если оба входных растра многоканальные либо входные данные - многоканальный растр и константа, выходной растр будет многоканальным. Число каналов всех многоканальных растров должно быть одинаковым.
Оператор выполнит операцию для каждого канала одного входного растра и соответствующего канала другого входного растра. Если один из входных растров многоканальный, а другие входные данные - константа, оператор выполнит операцию с постоянным значением для каждого канала многоканального растра.
Синтаксис
in_raster_or_constant1 & in_raster_or_constant2
Операнд | Объяснение | Тип данных |
in_raster_or_constant1 | Первый входной растр для выполнения булевой операции And. Если одно из входных значений растровое, а другое — скалярное, создается выходной растр с оценкой, выполняемой для каждой ячейки во входном растре. | Raster Layer | Constant |
in_raster_or_constant2 | Второй входной растр для выполнения булевой операции And. Если одно из входных значений растровое, а другое — скалярное, создается выходной растр с оценкой, выполняемой для каждой ячейки во входном растре. | Raster Layer | Constant |
Значение отраженного сигнала
Name | Объяснение | Тип данных |
out_raster | Объект выходного растра. Выходное значение должно быть 0 или 1. | Raster |
Пример кода
В этом примере выполняется булева операция And на двух входных растрах.
import arcpy
from arcpy import env
from arcpy.ia import *
env.workspace = "C:/iapyexamples/data"
outBooleanAnd = Raster("degs") & Raster("negs")
outBooleanAnd.save("C:/iapyexamples/output/outbooland.img")
В этом примере выполняется булева операция And на двух входных растрах.
# Name: Op_BooleanAnd_Ex_02.py
# Description: Performs a Boolean And 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 BooleanAnd
outBooleanAnd = inRaster1 & inRaster2
# Save the output
outBooleanAnd.save("C:/iapyexamples/output/outbooland")