Краткий обзор использования Алгебры карт в Spatial 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. Команды Python, доступные для выполнения в этом окне, могут состоять из одной строки кода или представлять собой сложные блоки кода с использованием логики. Окно Python также предоставляет место для доступа к дополнительным функциональным возможностям с помощью пользовательских или сторонних модулей и библиотек Python.

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

Пример окна Python

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

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

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

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

В приведенном ниже скрипте импортируются: 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"

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

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

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

Работа с операторами

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

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

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

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

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

outRas = Raster("inras1") + 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 см.

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