З огляду на місцевість, як намалювати шлях потоку потоку?


23

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

Місцевість задається у вигляді трикутної неправильної мережі (TIN), яка має кожну точку p (x, y) az значення. Як використовувати цю інформацію для побудови шляху потоку потоку? Що за цим стоїть фізика?

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

Відповіді:


26

Можливі різні реалізації, але більшість процедур починається з сітки, а не з TIN.

Найпростіша, швидше за все, процедура D8: ви обчислюєте напрямок, куди б стікала вода. Є 8 можливостей, 8 комірок, які знаходяться поруч із центральною коміркою сітки. Ви можете спочатку обчислити ці вказівки, ніж те, як з'єднані комірки, і нарешті ви можете намалювати лінії). Проста реалізація знайдена в SAGA, вона майже читається як псевдокод: http://saga-gis.svn.sourceforge.net/viewvc/saga-gis/trunk/saga-gis/src/modules_terrain_analysis/terrain_analysis/ta_channels/D8_Flow_Analysis. cpp? revision = 911 & view = розмітка

Хоча це дуже просто, але це не дуже реально: у вас не буде потоку, що починається у кожній комірці. Більш просунуті алгоритми зазвичай спочатку закривають ями (особливо якщо у вас є детальна DEM), потім обчислюють площу водозбору на клітинку, тобто кількість комірок, які подають воду до певної комірки, а потім використовують поріг для визначення того, чи є потік присутній.

SAGA GIS реалізує багато цих методів водозбору, їх опис ви можете знайти в цьому посібнику http://sourceforge.net/settings/mirror_choices?projectname=saga-gis&filename=SAGA%20-%20Documentation/SAGA%20Documents/ SagaManual.pdf

Він був написаний для старішої версії SAGA GIS, але опис алгоритмів все ще досить точний, і я скопію його сюди для швидкого ознайомлення (це приблизно на сторінці 120), оскільки він є відкритим кодом, ви можете перевірити деталі реалізації, переглянувши код.

  • Детермінований 8 (D8): класичний. Потік йде від центру клітини до центру однієї (і лише однієї) оточуючих клітин. Отже, напрямки потоку обмежені кратними 45o, що є основною причиною більшості недоліків методу. (O'Callaghan & Mark 1984).
  • Rho8: Те саме, що вище, але зі стохастичним компонентом, який повинен його покращити. Напрямок потоку визначається випадковим аргументом, який залежить від різниці між аспектом і напрямком двох сусідніх кліток сусідів. Не дуже корисно. . . (Fairfield & Leymarie 1991).
  • Детермінована нескінченність (D∞): Потік йде від однієї комірки до двох сусідніх оточуючих комірок, таким чином, враховуючи двовимірний потік і долаючи недоліки методу D8. (Тарботон 1998).
  • Рельєфмодель Braunschweiger Digitales: ще один алгоритм напрямку множинних потоків. Потік розділений між оточуючою клітиною, орієнтація якої найближча до аспекту центральної клітини та її двох сусідніх комірок. (Bauer, Bork & Rohdenburg 1985).
  • FD8 (зустрічається в SAGA просто як напрям множинних потоків): алгоритм маршрутизації двовимірного потоку, отриманий D8. (Quinn et al, 1991).
  • Кінематичний алгоритм маршрутизації (KRA). Невимірний алгоритм відстеження потоку. Потік поводиться як куля, що котиться по ДЕМ, не обмежуючи своє положення центром комірок. (Леа 1992).
  • Мережа цифрових висотних моделей (DEMON): найскладніша. Алгоритм відстеження двовимірного потоку. Швидше забирає багато часу. (Коста-Кабрал і Бургес 1994).

Нещодавно додано ще більше моделей:

  • Трикутний напрямок з декількома потоками - Сейберт, Дж. / МакГлінн, Б. (2007): «Новий трикутний алгоритм спрямованості множинних потоків для обчислення високих ділянок з сітчастих цифрових моделей висот», Дослідження водних ресурсів, Vol. 43, W04501. Це може бути цікавим для вас, оскільки воно також може працювати безпосередньо на TIN
  • Метод Mass-Flux (MFM) для розрахунку накопичення потоку на основі DEM, запропонований Gruber та Peckham (2008). Gruber, S., Peckham, S. (2008): Параметри наземної поверхні та об'єкти в гідрології. У: Hengl, T. and Reuter, HI [ред.]: Геоморфометрія: поняття, програмне забезпечення, програми. Розробки в ґрунтознавстві, Elsevier, Bd.33, S.293-308.
  • Бічний алгоритм: http://watershed.montana.edu/Hydrology/Home_files/2010WR009296.pdf та його код також є на його веб-сайті: http://thomasgrabs.com/side-algorithm/

5

Оригінальний підхід - такий, запропонований у цій роботі :

Фішер, П., Дж. Вуд та Т. Ченг (2004). Де Гельвелін? Нечіткість багатомасштабної морфометрії ландшафту. Операції Інституту британських географів 29, 106-128.

Він пропонує метод, заснований на нечіткому та багатомасштабному поданні. Я не впевнений, але цей метод може бути використаний у LandSerf .

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


Паперовий посилання вище недоступний
Гравітон

@Graviton: Посилання виправлено!
липень

4

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

  1. Перетворіть свій TIN в растр висоти.
  2. Обчисліть напрямок потоку.
  3. Заповніть невеликі мийки.
  4. Розрахуйте накопичення потоку
  5. Використовуючи поріг, вибирайте лише комірки із заданою кількістю потоку.
  6. Використовуйте інструмент "Потік у функцію", щоб експортувати потоки у векторний файл форми.

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


Мені доведеться написати код з нуля, тому не можу використовувати цей програмний пакет.
Гравітон

Ну, здається, це процедура, яку використовують більшість пакетів ГІС. TerraFlow - це варіант з відкритим кодом, але я його ніколи не використовував. Що ви плануєте використовувати для обробки TIN?
Патрік

1
Я думаю про створення власного алгоритму потоку потоку, тому програмні пакети, про які ви згадуєте, не стосуються мене
Graviton

2
Гаразд. Коли ви сказали "Мені менш зрозуміло, як це зробити", я припустив, що ви хочете отримати практичні поради щодо цього. Імовірно, робочий процес, що використовується в цих програмних пакетах, може бути керівництвом до загальної структури вашого алгоритму. Звідти я пропоную вам проконсультуватися з академічною літературою про особливості. Наприклад, Tarboton, 1997 кілька разів посилався на мій пошук алгоритмів напрямку потоку.
Патрік

3

У цифрових моделях висот на основі сітки надійні визначення ліній нахилу забезпечуються методом D8-LTD:

Орландіні, С. та Г. Моретті (2009), Визначення шляхів поверхневого потоку за даними сітчастих висот, Водний ресурс. Res., 45 (3), W03417, doi: 10.1029 / 2008WR007099.

Орландіні, С., Г. Моретті, М. Франчіні, Б. Олджієрі та Б. Теста (2003), Методи, засновані на контурі, для визначення недисперсних напрямків дренажу в мережевих цифрових моделях висоти, Водний ресурс. Res., 39 (6), 1144, doi: 10.1029 / 2002WR001639.

У контурних цифрових моделях висот лінії схилу можна визначати автоматично, розв’язуючи складні топографічні структури за допомогою (складної) моделі, описаної в наступній роботі:

Моретті, Г. та С. Орландіні (2008), Автоматичне відмежування дренажних басейнів від даних контурних висот за допомогою методів побудови скелету, Водний ресурс. Res., 44 (5), W05403, doi: 10.1029 / 2007WR006309.


1

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

AutoCAD (Civil 3D) може це зробити за допомогою TIN. Мені невідомо, що відбувається за лаштунками, але в ArcGIS ідентифікація потокових мереж обробляється за допомогою растрового аналізу.

У двох словах, вхідний растр DEM (де для кожної комірки мають значення X, Y, Z) використовується як вхідний сигнал, а алгоритм обчислює цитування "накопиченого потоку (як накопиченої ваги) всіх осередків, що надходять у кожну осередку, що знижується, на вхідному растрі. " Продукт - це растр, де кожна клітина має значення накопичення потоку. Щоб ідентифікувати потокову мережу, ви ізолюєте комірки з високим потоком, які є зонами "концентрованого потоку". Є й інші міркування, такі як необов'язковий коефіцієнт ваги, правильний гідрологічний вхід DEM тощо.

Я просто буду запускати кілька ідей: З точки зору "механіки" такого алгоритму, я гадаю, це може бути досить прямо; рекурсивно і для кожної клітини визначають розташування та висоту всіх оточуючих клітин і на основі її висоти складають кількість клітин, що впадають у неї. Що стосується TIN, то, ймовірно, ви могли побудувати лінію з двох точок на кожному трикутнику (найвища та найнижня вершина), а потім об'єднати всі ці разом у мережу.


1
Ускладнення виникають при поводженні з мийками та плоскими ділянками. В якості крайнього прикладу розглянемо DEM, що представляє гірське озеро, так що більша частина DEM ідеально рівна. Як саме може здійснити рекурсивна реалізація всього притоку в озеро до точки його відтоку?
whuber
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.