Краткий обзор использования алгебры карт в Image Analyst

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

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

Алгебра карт предоставляет вам доступ к операторам, функциям и классам через алгебраические выражения. В самом простом виде выходной растр указывается перед знаком равенства (=), а инструменты, операторы и их параметры - после него. Ниже приведен пример:

from arcpy.ia import *
elevationPlus100 = Plus("inelevation", 100)

Приведенное выше выражение прибавляет 100 единиц к набору данных высот и создает объект Raster с именем elevationPlus100 для хранения результатов.

Алгебра карт может выполнять простые выражения, но вся мощь языка проявляется при создании сложных выражений и моделей. Поскольку Алгебра карт интегрирована в Python, разработчику модели доступна вся функциональность Python и ArcPy, а также их расширения (модули, классы, функции и свойства).

По мере роста ваших запросов вы будете открывать для себя все новые возможности алгебры карт. Ниже даны основные сведения для начала работы.

Основы алгебры карт

Есть три способа применения Алгебры карт:

  • Инструмент Калькулятор растра
  • Окно Python
  • Интегрированная среда разработки (IDE) Python

Калькулятор растра

Инструмент Калькулятор растра выполняет выражения алгебры карт. В инструменте есть интерфейс калькулятора, в котором с помощью кнопок можно создать большинство выражений алгебры карт. Этот инструмент можно использовать как самостоятельный инструмент, а также в ModelBuilder. Тем самым инструмент позволяет интегрировать возможности алгебры карт в ModelBuilder.

Пользовательский интерфейс инструмента Калькулятор растра

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

Инструмент Калькулятор растра не предназначен для замены других инструментов Image Analyst или Spatial Analyst. Используйте другие инструменты для соответствующих вычислений. Например, используйте инструмент Взвешенная сумма для наложения нескольких взвешенных растров. Инструмент Калькулятор растра предназначен для выполнения однострочных алгебраических выражений.

Как упоминалось выше, инструмент Калькулятор растра может быть интегрирован в ModelBuilder. Более подробную информацию см. в разделах:

Окно Python

Используя интерактивную консоль окна Python, вы можете запускать код Python непосредственно изArcGIS AllSource через интерпретатор Python, не требуя файла скрипта. Код Python, который вы запускаете из этого окна, может состоять из одной строки или быть сложным многострочным блоком кода. В следующем видео представлен обзор окна Python.

Чтобы открыть окно Python, нажмите кнопку Python Показать окно Python в группе Геообработка на вкладке Анализ или в группе Окна на вкладке Вид.

Пример окна Python

В приведенной выше последовательности выражений импортируются пакет ArcPy, параметры среды геообработки и модули Image Analyst; задается рабочая область и запускается инструмент Классифицировать растр. После ввода символа возврата каретки в конце выражения оно немедленно выполняется.

Окно Python имеет встроенную функцию автозаполнения строки, позволяет использовать переменные и обеспечивает доступ к функциональности Python и ArcPy.

Интегрированная среда разработки Python

Хотя в окне Python в ArcGIS AllSource нет ограничения на число вводимых выражений, оно может оказаться неудобным для создания сложных моделей. Инструменты Image Analyst, операторы, функции и классы модуля могут быть также доступны из IDE. Откройте вашу IDE и введите нужные выражения.

В приведенном ниже скрипте импортируются: ArcPy; параметры среды геообработки и модуль Image Analyst; устанавливаются переменные; проверяется дополнительный модуль; запускается инструмент Классифицировать растр и сохраняются выходные данные.

# Name: Image Classification
# Description: 
# Requirements: Image Analyst Extension


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

# Check out the ArcGIS Image Analyst extension license
arcpy.CheckOutExtension("ImageAnalyst")

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

# Set local variables
inRaster = "Landsat8_Redlands.tif"
classification_file = "LandCover.ecd"

# Run Classify Raster
outLandCover = ClassifyRaster(inRaster, classification_file)

# Save the output
outLandCover.save("C:/data/Landcover.tif")

Как и окно Python, IDE обеспечивает доступ ко всей имеющейся функциональности Python и ArcPy.

Операторы

Алгебра карт поддерживает ряд операторов (например, +, – и *). Эти же операторы имеются и в Python, но в Алгебре карт они модифицированы для работы с объектами Raster. Например, в следующем выражении сложение двух чисел дает значение переменной:

# set outVar to 14 using the Python + operator
outVar = 5 + 9

Для того, чтобы указать, что это выражение должно работать с растрами (то есть, для использования оператора алгебры карт), необходимо квалифицировать набор данных как объект Raster. В приведенном ниже примере оператор алгебры карт + используется для сложения двух растров:

outRas = Raster("inras1.tif") + Raster("inras2.tif")

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

outRas = Raster("inras1.tif") + 8

Сложные выражения

В одном выражении можно связать инструменты и операторы. В приведенном ниже примере в каждом выражении выполняется несколько инструментов и операторов:

outRas = Slope("indem" * 2) / 57
outdist = EucDistance(ExtractByAttributes("inras", "Value > 105"))

Для определения последовательности выполнения можно использовать скобки. В двух примерах ниже используются одинаковые операторы, однако результат получается разным из-за добавления в первом примере скобок:

outRas1 = (Raster("inras1") + Raster("inras2")) / Raster("inras3")

и

outRas2 = Raster("inras1") + Raster("inras2") / Raster("inras3")

В первом выражении inras1 складывается с inras2 и сумма делится на inras3. Во втором выражении (без скобок) inras2 делится на inras3, а затем результат деления складывается с inras1.

Рекомендации для выражений алгебры карт

Во всех примерах Алгебры карт, приведенных ниже, результатом является объект Raster. Объект Raster указывает на временный набор растровых данных, который будет удален, если только он не сохранен явно, по окончании сеанса ArcGIS. Чтобы сохранить временный набор данных, для объекта Raster необходимо вызвать метод save (см. два примера ниже).

В следующем примере демонстрируется параметр среды рабочей области:

import arcpy 
from arcpy import env 
from arcpy.ia import *

env.workspace = "C:/data" 

outLandCover = ClassifyRaster("Landsat8_Redlands", "LandCover.ecd")

outLandCover.save("RedlandsLandcover")

В приведенном выше выражении задана рабочая область, и RedlandsLandcover будет сохранен в C:/data.

Дополнительная информация

Чтобы узнать больше о ArcPy, изучите разделы:

Более подробную информацию о геообработке в Python см. в разделах:

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