@jul вірно, що "вам потрібно обчислити поверхню тренду, а потім відняти її від початкової DEM, щоб отримати" знешкоджений ", але це здається, що в цьому випадку потрібні більш прості процедури для" збереження прогалин ". Якщо "поверхня тренда" занадто уважно слідує за початковою DEM, то залишки не зберігатимуть локальних характеристик поверхні. Таким чином, серед методик, яких слід уникати, є всі локальні (сплайни, фільтри та, особливо - кригінг), а ті, що надають перевагу, - глобальні.
Простий, надійний, прямий підхід - це встановлення літака до DEM в районі річки. Це не потребує фантазійних технологій і важких обчислень, оскільки (за Евклідом) площину визначають три (неколинеарні) точки в просторі. Відповідно, виберіть одну точку (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. Отримана DEM гарантовано матиме однакове піднесення (а саме z0 ') у кожній із трьох точок, які ви вибрали спочатку; що вона робить в інших місцях, залежить від самої DEM!
(Я сподіваюсь, що деякі читачі оцінюють, як такий підхід уникає всіх посилань на тригонометрію чи найменше обладнання квадратів. :-)