Алгебра карт - Map algebra

Алгебра карт - это алгебра на основе множеств для управления географическими данными , предложенная доктором Даной Томлин в начале 1980-х годов. Это набор примитивных операций в географической информационной системе (ГИС), позволяющий двум или более растровым слоям («картам») схожих размеров создавать новый растровый слой (карту) с использованием алгебраических операций, таких как сложение, вычитание и т. Д.

В зависимости от пространственного соседства преобразования ГИС подразделяются на четыре класса: локальные , фокусные , глобальные и зональные . Локальные операции работают с отдельными ячейками растра или пикселями . Фокусные операции работают с ячейками и их соседями, тогда как глобальные операции работают со всем слоем. Наконец, зональные операции работают с областями ячеек, которые имеют одинаковое значение. Входные и выходные данные для каждого оператора являются отображением, операторы могут быть объединены в процедуру или сценарий для выполнения сложных задач.

Когда алгебра карт выполняется в ячейках из локальных операций, могут использоваться различные типы операций:

  • В арифметических операциях используются основные математические функции, такие как сложение, вычитание, умножение и деление.
  • Статистические операции используют статистические операции, такие как минимум, максимум, среднее и медианное значение.
  • В реляционных операциях ячейки сравниваются с помощью таких функций, как больше, меньше или равно.
  • Тригонометрические операции используют синус, косинус, тангенс, арксинус между двумя или более растровыми слоями.
  • Экспоненциальные и логарифмические операции используют функции экспоненты и логарифма.

Несколько основных ГИС-систем используют концепции алгебры карт, включая ERDAS Imagine и ArcGIS . ArcGIS 10 реализует алгебру карт на Python ; функции импортируются из методов Python, а возможности Python по перегрузке используются для операторов. Например, растры можно умножать с помощью арифметического оператора «*».

Вот несколько примеров в MapBasic :

# demo for Brown's Pond data set
# Give layers
#  altitude
#  development – 0: vacant, 1: major, 2: minor, 3: houses, 4: buildings, 5 cement
#  water – 0: dry, 2: wet, 3: pond

# calculate the slope at each location based on altitude
slope = IncrementalGradient of altitude

# identify the areas that are too steep
toosteep = LocalRating of slope
  where 1 replaces 4 5 6
  where VOID replaces ...

# create layer unifying water and development
occupied = LocalRating of development
  where water replaces VOID

notbad = LocalRating of occupied and toosteep
  where 1 replaces VOID and VOID
  where VOID replaces ... and ...

roads = LocalRating of development
  where 1 replaces 1 2
  where VOID replaces ...

nearread = FocalNeighbor of roads at 0 ... 10

aspect = IncrementalAspect of altitude

southface = LocalRating of aspect
  where 1 replaces 135 ... 225
  where VOID replaces ...

sites = LocalMinimum of nearroad and southface and notbad

sitenums = FocalInsularity of sites at 0 ... 1

sitesize = ZonalSum of 1 within sitenums

bestsites = LocalRating of sitesize
  where sitesize replaces 100 ... 300
  where VOID replaces ...

Внешние ссылки

Рекомендации

  1. ^ Лонгли; и другие. (9 августа 2010 г.). Географические информационные системы и наука . John Wiley & Sons, Inc., стр. 414–7. ISBN   978-0-470-72144-5 .
  2. ^ «3.4. Имена специальных методоⶻ . Справочник по языку Python . Дата обращения 3 мая 2015 .
  3. ^ Esri, Inc. «Справка по ArcGIS 10.0» .
  • Б. Э. Дэвис ГИС: Визуальный подход (2001 Cengage Learning), стр. 249 и далее.