@jul правильно, что «вам нужно вычислить поверхность тренда, а затем вычесть ее из исходной матрицы высот, чтобы получить« отклоненную »», но в этом случае кажется, что для «сохранения провалов» требуются более простые процедуры. Если «трендовая поверхность» слишком близко следует исходной ЦМР, то остатки не сохранят локальные характеристики поверхности. Таким образом, среди методов, которых следует избегать , все локальные (сплайны, фильтры и - особенно - кригинг) и те, которые предпочитают, являются глобальными.
Простой, надежный, прямой подход заключается в установке самолета на ЦМР в непосредственной близости от реки. Это не требует какой-либо сложной технологии или сложных вычислений, потому что (согласно Евклиду) плоскость определяется тремя (неколлинеарными) точками в пространстве. Соответственно, выберите одну точку (x1 ', y1', z1 ') = (координаты, высота) в верховьях реки, другую точку (x2', y2 ', z2') в нижнем течении и третью точку в (x0 ', y0', z0 ') по вашему выбору вдали от отрезка, соединяющего первые две точки. (Эти координаты обозначены простыми числами, потому что мы скоро их изменим.) Эта последняя точка недолжны соответствовать точке на поверхности земли или даже рядом с ней! Фактически, хорошим начальным выбором может быть установка его возвышения на среднее значение возвышений вверх и вниз по течению, z0 '= (z1' + z2 ') / 2.
Расчеты облегчаются путем принятия точки (x0 ', y0', z0 ') в качестве источника локальной системы координат. В этих координатах две другие точки находятся в
(x1,y1,z1) = (x1'-x0',y1'-y0',z1'-z0')
(x2,y2,z2) = (x2'-x0',y2'-y0',z2'-z0').
Любое произвольное местоположение в точке (x ', y') в исходной системе координат имеет координаты (x, y) = (x'-x0 ', y'-y0') в этой новой системе. Поскольку любая плоскость, проходящая через начало координат (0,0,0), должна иметь уравнение вида z = a * x + b * y, это сводит проблему к следующему:
Найти уравнение в виде z = a * x + b * y для плоскости, проходящей через точки (0,0,0), (x1, y1, z1) и (x2, y2, z2).
Уникальное решение состоит в том, чтобы вычислить
u = z1 y2 - z2 y1
v = x1 z2 - x2 z1
w = x1 y2 - x2 y1
в какие сроки
a = u/w, b = v/w.
Найдя эти два числа a и b и вспомнив две исходные координаты x0 'и y0', получим растровый расчет вида
[DEM] - a * ([X'] - x0') - b * ([Y'] - y0')
снимает «наклон» от DEM . В этом выражении [X '] относится к координатной сетке x в исходных координатах, а [Y'] относится к исходной координатной сетке y. Результирующая ЦМР гарантированно будет иметь одинаковую высоту (а именно, z0 ') в каждой из трех точек, которые вы изначально выбрали; что он делает в другом месте, зависит от самой DEM!
(Я надеюсь, что некоторые читатели оценят, как этот подход избегает любых ссылок на тригонометрию или наименьшие квадраты. :-)
Я нашел отклонение от тренда с анализом тренда неудовлетворительным для рек. Он может работать в таких регионах, как средний запад, но на западе одиночная линейная или полиномиальная поверхность, кажется, никогда не очень хорошо приближается к градиенту реки из-за сложной топографии. Вместо этого я использовал взвешенное усреднение, в котором я сравниваю высоту пикселя возвышенности со средневзвешенным для реки с использованием плотности ядра (см. Статью в Winter 2010 ArcUser). Это дает более «локализованный» результат. Все еще возможно получить некоторые отрицательные значения, но я обнаружил, что эти значения, по-видимому, ограничены руслом реки и наиболее распространены в областях с крутым уклоном. Совсем недавно я экспериментировал с путевыми подходами к картированию "высоты наводнения", но это не победило.
источник
Вам необходимо вычислить поверхность тренда, а затем вычесть ее из исходной матрицы высот, чтобы получить «отклоненную».
Для вычисления поверхности тренда можно использовать любую функцию упрощения поверхности (фильтрация, сглаживание сплайнов, кригинг и т. Д.). Этот выбор зависит от того, как вы хотите, чтобы эта трендовая поверхность выглядела.
Вот пример того, как использовать кригинг в ArcGIS 10.0 для этого.
источник