Доступно с лицензией Spatial Analyst.
Доступно с лицензией Image Analyst.
Инструмент Условие (Con) позволяет контролировать выходное значение для каждой ячейки на основе того, оценивается ли значение ячейки как Истина или как Ложь в заданном высказывании условия.
Если ячейка оценивается как Истина, ей будет присвоено одно значение; если она оценивается как Ложь, ей будет присвоено другое значение. Значения, которые должны быть присвоены ячейке, если она оценивается как Истина, заданы Входным истинным растром или константным значением. Значения, которые должны быть присвоены ячейке, если она оценивается как Ложь, заданы Входным ложным растром или константным значением.
Концептуально, в процессе выполнения инструмент Условие (Con) анализирует каждую ячейку и, основываясь на значении ячейки и высказывании условия, определяет, оценивается ли ячейка как Истина или как Ложь. Если ячейка оценивается как Истина, выходное значение для этого местоположения определяется в истинных входных данных. Если ячейка оценивается как Ложь, выходное значение для этого местоположения определяется в ложных входных данных.
В среде геообработки определить, оценивается ли расположение ячейки как Истина или как Ложь можно двумя способами: по входному растру или по входному растру, к которому применяется дополнительное входное выражение. Если используется только входной растр, все ненулевые значения входного растра считаются истинными, а все нулевые - ложными. Ячейки, которым было присвоено значение NoData, на выходных данных также будут иметь значение NoData. NoData и Ложь - разные понятия.
Для создания входного растра условия можно использовать несколько инструментов Spatial Analyst. В частности, могут использоваться логические инструменты в наборе Математические, где инструмент Критерий особенно полезен.
Использование инструмента Условие (Con) в Алгебре карт
Чтобы выполнить условную оценку на наборе растровых данных в Алгебре карт, введите набор растровых данных как растр условия в инструмент Условие. Введите истинный растр, чтобы задать значения, которые будут выдаваться, если условная оценка истинна. Введите ложный растр, чтобы задать значения, которые будут выдаваться, если условная оценка ложна. Параметр выражения «где?» определяет выражение, которое будет оцениваться в отношении входного условного растра.
Пример
Например, если вы хотите присвоить значение 10 (истинная постоянная) как подходящее для строительства, и значение 1 (ложная постоянная) как неподходящее для строительства на основе уклона в ячейке (определено входным растром условия), где уклон менее 15 процентов считается подходящим, вы должны ввести выражение "value < 15". Если уклон ячейки меньше 15 процентов, ей будет присвоено значение Истина (в данном случае 10); в противном случае ей будет присвоено значение Ложь (в данном случае 1).
OutRas = Con(SlopeRas, 10, 1, "VALUE < 15")
Использование сложных выражений с инструментом Условие (Con) в Алгебре карт
В Map Algebra могут быть достигнуты дополнительные возможности с выражением, в отличие от простого логического условия. С помощью сложного выражения у вас может быть, например, несколько отдельных выражений, которые могут быть вложены в сложное, вы можете задать несколько растров или использовать другие инструменты и операторы.
Любое корректное выражение Алгебры карт, которое приводит к созданию растра, может использоваться в качестве аргумента для входных данных условного, истинного или ложного растров.
Обратите внимание, что параметр "выражение условия (<where_clause>)" должен быть опущен, если входное выражения условного растра используется в сложном выражении. В этом случае синтаксис инструмента Условие берется на следующей генерализованной форме:
Con(in_conditional_raster, true_raster, {false_raster})Параметр <where_clause> в этом случае опускается, т.к. условный растр предоставляется выражением алгебры карт, которое выдаст набор растровых данных, например, со значениями 0 и 1, если это была логическая операция.
Примеры
- Пример использования сложного выражения в инструменте Условие (Con):
В приведенном выше выражении, если значение ячейки в InRas меньше 15, ячейке на выходном растре будет присвоено значение 10; (истина) в противном случае, значениям ячеек, которые больше или равны 15, на выходном растре будет присвоено значение 1 (ложь).OutRas = Con(InRas < 15, 10, 1)
- Если для ложных выражений не задано значение или выражение:
Результаты будут аналогичны выходным данным выше за исключением ячеек со значением 15 или больше, которым будет присвоено значение "Нет данных (NoData)".OutRas = Con(InRas < 15, 10)
- Вместо значения для аргументов <true_expression> и <false_expression> может использоваться любое корректное выражение.
В выражении выше вычисляются синус всех значений больше 5 и косинус всех значений, равных или меньших 5, и результаты отправляются в OutRas.OutRas = Con(InRas1 > 5, Sin(InRas1), Cos(InRas1))
- В инструменте Условие (Con) может использоваться несколько условных высказываний, но каждое должно иметь значение или выражение <true_expression>, которое может использоваться для присвоения значений выходным ячейкам, если результат оценки условия – "Истина (true)". Может применяться исходное значение или выражение {false_expression}, если ни один из результатов оценки условий не является Истиной.
В выражении выше вычисляется синус для значений больше 5, и вычисляется косинус для значений, равных или больших 5 и меньших 20, значениям, равным или большим 20, но меньшим или равным 50, присваивается значение 0, а значениям больше 50 присваивается значение 100.OutRas = Con(InRas1 < 5, Sin(InRas1), Con(InRas1 < 20, Cos(InRas1), Con(InRas1 > 50, 100, 0)))
- В условном выражении инструмента Условие (Con) может использоваться несколько условий.
В выражении выше, если входное значение из InRas1 больше 5 и меньше 10, присвойте местоположению значение 5; в противном случае присвойте 100.OutRas = Con((InRas1 > 5) & (InRas1 < 10), 5, 100)
- В условном выражении к входным растрам могут применяться инструменты и операторы, и результаты оцениваются.
OutRas = Con(Sin(InRas1) > .5, 10, 100) OutRas2 = Con((InRas1 + InRas2) > 10, 100, 5) OutRas3 = Con(InRas1 > 5, Cos(InRas1), Sin(InRas1))
- Инструмент Условие (Con) может быть помещён в другой инструмент Условие (Con).
OutRas = Con(InRas1 > 23, 5, Con(InRas1 > 20, 12, Con((InRas1 > 2) & (InRas1 < 17), Sin(InRas1), 100)))
- В условном высказывании или в выражении может использоваться несколько растров для выполнения на ячейках.
Возможны входные данные нескольких растров, т.к. Инструмент Условие (Con) оценивается для каждого местоположения ячейки x,y до перемещения к следующей ячейке. Если входными данными являются несколько растров, заданный оператор или инструмент будет работать по принципу «ячейка-за-ячейкой» между несколькими растрами.OutRas = Con(InRas1 + InRas2 > 7, Sin(InRas1), Cos(InRas2)) OutRas2 = Con(InRas1 < 9, InRas1 * InRas2 + Tan(InRas3), Cos(InRas1))