Як розрахувати викривлення рельєфу?


29

У мене растр висоти, і я хотів би отримати деякі базові змінні рельєфу, такі як нахил, нерівномірність, аспект або кривизна.

Проблема в тому, що я, здається, не маю можливості обчислити кривизну з аналітиком місцевості:

введіть тут опис зображення

Хтось може мені сказати, чому цього показника немає у списку? Як я можу це обчислити інакше?

Відповіді:


20

Кривизна - це складна похідна місцевості для обчислення; використовуване рівняння залежить від роздільної здатності вхідних даних, оскільки ви повинні переконатися, що результати викривлення, які ви обчислюєте, можна відрізнити від шуму в даних.

Нещодавно було проведено багато досліджень обчислень кривизни за даними LiDAR з високою роздільною здатністю, які показали, що масштабний розрив існує з роздільною здатністю приблизно 2 або 3 метри, і вище цього моменту потрібно використовувати більше різних алгоритмів (з якими я не такий знайомий). . Найкраща інформація про обчислення топографічної кривизни, ймовірно, походить від Hurst et al 2012 та посилань на них.

Основний принцип обчислення кривизни, як і при нахилі та аспекті, полягає в тому, щоб пропустити рухоме вікно над поверхнею висоти і встановити значення висоти на 6-кратну поліноміальну функцію, коефіцієнти якої даватимуть нахил, аспект та кривизну центру комірка рухомого вікна.

ArcGIS використовує вікно пошуку 3х3, яке дасть хороші результати лише на територіях, повністю позбавлених рослинності, що робить інструмент досить марним, якщо люди не знають про це обмеження, це може підказати, чому його немає в QGIS.

Математика була виведена спочатку (я думаю) в Евансі (1980) та була спрощена на кількох сторінках у Принципах географічних інформаційних систем (посилання Amazon), які я можу порекомендувати як хороший посібник щодо такого аналізу місцевості на базовому рівні.

Один із способів обчислити кривизну DEM - це перетворити DEM в растр ascii, прочитати його в масивний масив, а потім виконати поліноміальну підгонку в рухомому вікні, що проходить через дані. Це зробити досить просто, але це дуже повільно виконувати і потребує неабиякої оптимізації (такі операції часто переносяться на c ++, щоб пришвидшити їх).

Для виконання операції в QGIS можна використовувати плагін GRASS r.slope.aspect, який також обмежений фіксованим вікном 3x3.

Я усвідомлюю, що це не проста відповідь, на яку ви, без сумніву, сподівалися, але я сподіваюся, що ви розумієте, що кривизна складна, щоб вийти змістовно. Всього найкращого.

Evans, I. S. (1980), An integrated system of terrain analysis and slope mapping, Z. Geomorphol., 36, 274–295.

Дякую за весь розвиток! Однак мене заінтригувало те, що варіант "Кривизна" відсутній у списку в аналітиці растрових місцевостей QGIS. Це нормально? Я перевстановив свою версію QGIS 1.8, щоб бути впевненим, але її все ще немає: - /
Damien

1
зауважте, що в GRASS ви можете використовувати "r.param.scale", який обчислює похідні місцевості, такі як кривизна, з визначеним користувачем розміром для оператора вікон (не лише 3x3 за замовчуванням).
користувач1013346

12

Версія ESRI з Raster Analysis для обчислення кривизни може бути корисною для розробки плагіна для QGIS.

Для кожної комірки поліном четвертого порядку форми:

введіть тут опис зображення

Z = Ax²y² + Bx²y + Cxy² + Dx² + Ey² + Fxy + Gx + Hy + I

підходить до поверхні, що складається з вікна 3х3. З цієї поверхні обчислюються коефіцієнти a, b, c тощо.

Співвідношення між коефіцієнтами та дев'ятьма значеннями висоти для кожної комірки, пронумерованої, як показано на схемі, є наступними: Діаграма значень кривизни Діаграма значень кривизни

A = [(Z1 + Z3 + Z7 + Z9) / 4 - (Z2 + Z4 + Z6 + Z8) / 2 + Z5] / L4

B = [(Z1 + Z3 - Z7 - Z9) / 4 - (Z2 - Z8) / 2] / L3

C = [(-Z1 + Z3 - Z7 + Z9) / 4 + (Z4 - Z6)] / 2] / L3

D = [(Z4 + Z6) / 2 - Z5] / L2

E = [(Z2 + Z8) / 2 - Z5] / L2

F = (-Z1 + Z3 + Z7 - Z9) / 4L2

G = (-Z4 + Z6) / 2L

H = (Z2 - Z8) / 2L

I = Z5

Вихід інструменту «Кривизна» є другою похідною поверхні - наприклад, нахилом схилу - таким, що:

Кривизна = -2 (D + E) * 100

Повна інформація та джерело:

http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//00q90000000t000000


2
Це чудовий підсумок математики, але його можна спростити, щоб використовувати 6-членний многочлен без помітних втрат якості, якщо ваші дані мають роздільну здатність нижче 3 метрів.
sgrieve

5
Оскільки «кривизна» ESRI залежить лише від D + E, все інше зайве. Обчислення -2(D+E)*100як (100/L2)*(3*Z5 - [Z2+Z4+Z6+Z8+Z5])показує, як отримати це значення як триразове початкове значення, Z5мінус сусідню суму Z2+Z4+Z6+Z8+Z5(з використанням радіуса 1 кола), все перераховано на 100/L2. Це всього три прості операції з сіткою.
whuber

@whuber: Хто-небудь може сказати мені, що таке x і y? а Z позначає значення кривизни? то що таке -2 (D + E) * 100? Чи можливо, якщо у мене є векторний файл, що має стільки багатокутників, і я хочу знати, чи погода область всередині полігону увігнута або опукла (план і кривизна профілю)?
Хардік

Z = значення висоти та -2 (D + E) * 100 = значення кривизни en.wikipedia.org/wiki/Курватура (Osculating_Circle)
Mapperz

6

Кривизна може бути обчислена за допомогою модуля SAGA "Аналіз місцевості - Морфометрія ---> Нахил, Аспект, Кривизна"

Розрахунок можна здійснити на основі одного з таких алгоритмів:

  • Максимальний нахил (Травіс та ін., 1975)
  • Максимальний нахил трикутника (Tarboton 1997)
  • Найменші квадрати обладнані площиною (Ріг 1981, Коста-Кабрал і Бургес 1996)
  • Поліном підходить 2. ступінь (Bauer, Rohdenburg, Bork 1985)
  • Поліном підходить 2. ступінь (Heerdegen & Beran 1982)
  • Поліном Fit 2. ступінь (Zevenbergen & Thorne 1987)
  • Підходящий поліном 3. ступеня (Haralick 1983)

3

LandSerf може це зробити. Ви можете визначити розмір вікон (3 * 3, 5 * 5, 7 * 7, 11 * 11, ...), але це має бути непарне число. багатомасштабні аналізи. Ви можете розглянути масштабну залежність нахилу, аспекту та кривизни. http://www.landserf.org/ LandSerf відповідатиме квадратичному поліноміальному рівнянню для певних заздалегідь визначених вікон, але якщо визначити розмір великих вікон, таких як 50 * 50, це займе багато часу. Це залежить від вашого розміру растру та розміру Windows, який ви визначаєте. Джо Вуд написав Ландсерфу для кандидатської дисертації. Це написано на Java.

  • Кривизна профілю
  • План кривизни
  • Кривизна довготи
  • Кривизна поперечного перерізу
  • Середня кривизна
  • Мінімальна кривизна
  • Максимальна кривизна

Можна обчислити в різній шкалі в LandSerf


2

Ви також можете спробувати безкоштовний GAG SAGA (http://sourceforge.net/apps/trac/saga-gis/wiki) або TAS (http://www.uoguelph.ca/~hydrogeo/TAS/index.html).


Чи можете ви надати більш детальну інформацію про те, як ці пакети діють для обчислення кривизни? Опубліковані вами посилання є загальними посиланнями на два пакети ГІС і не мають прямого відношення до заданого питання.
sgrieve

1
Вибачте за дуже коротку відповідь. У SAGA можна знайти модуль Аналіз місцевості - Комплексний аналіз -> Стандартний аналіз місцевості. Там ви можете розрахувати кривизну, кривизну профілю, кривизну плану (детального опису всередині довідки щодо програмного забезпечення немає). Ви можете імпортувати дані в SAGA легко з asc, flt, ...
Рок

@sgrieve У TAS можна обчислити профіль, план та тангенціальну кривизну (меню: Аналіз місцевості -> Основні атрибути місцевості -> Похідні поверхні). Знову ж таки, мало опису, як це працює.
Рок
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.