Существуют различные возможные реализации, но большинство процедур будет начинаться с сетки, а не с 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. каст? пересмотр = 911 & просмотр = разметки
Хотя это очень просто, это не очень реалистично: у вас не будет потока, начинающегося в каждой ячейке. Более продвинутые алгоритмы обычно сначала закрывают ямы (особенно если у вас есть подробная матрица высот), затем вычисляют площадь водосбора на ячейку, то есть количество ячеек, которые подают воду в конкретную ячейку, а затем используют порог, чтобы определить, является ли поток настоящее.
SAGA GIS реализует множество этих методов области охвата, описание которых вы можете найти в этом руководстве http://sourceforge.net/settings/mirror_choices?projectname=saga-gis&filename=SAGA%20-%20Documentation/SAGA%20Documents/ SagaManual.pdf
Он был написан для более старой версии SAGA GIS, но описание алгоритмов все еще довольно точное, и я скопирую его здесь для быстрого ознакомления (это примерно на странице 120), так как оно с открытым исходным кодом, вы можете проверить детали реализации, глядя на код.
- Детерминист 8 (D8): классический. Поток идет от центра клетки к центру одной (и только одной) окружающей клетки. Поэтому направления потока ограничены кратными 45 °, что является основной причиной большинства недостатков метода. (О'Каллаган и Марк 1984).
- Rho8: То же, что и выше, но со стохастическим компонентом, который должен его улучшить. Направление потока определяется случайным аргументом, который зависит от разницы между аспектом и направлением двух соседних соседних ячеек. Не очень полезно. , , (Fairfield & Leymarie 1991).
- Детерминированная бесконечность (D∞): поток идет от одной ячейки к двум смежным окружающим ячейкам, таким образом рассматривая двумерный поток и преодолевая недостатки метода D8. (Tarboton 1998).
- Braunschweiger Digitales Reliefmodell: еще один алгоритм множественного направления потока. Поток разделен между окружающей ячейкой, чья ориентация является ближайшей к аспекту центральной ячейки, и двумя соседними ячейками. (Bauer, Bork & Rohdenburg 1985).
- FD8 (встречается в SAGA просто как Multiple Flow Direction): алгоритм маршрутизации двумерного потока, полученный из D8. (Quinn et al 1991).
- Алгоритм кинематической маршрутизации (KRA). Одномерный алгоритм трассировки потока. Поток ведет себя как шар, катящийся по ЦМР, не ограничивая свое положение центром ячеек. (Лиа 1992).
- Сеть цифровых моделей рельефа (DEMON): самая сложная. Двумерный алгоритм трассировки потока. Довольно много времени. (Costa-Cabral & Burgess 1994).
Еще больше моделей были добавлены в последнее время:
- Треугольное направление множественного потока - Seibert, J. / McGlynn, B. (2007): «Новый алгоритм треугольного множественного направления потока для вычисления площадей с наклоном из цифровых моделей рельефа с сеткой», Water Resources Research, Vol. 43, W04501. Это может быть интересно для вас, потому что это может также работать непосредственно на TIN
- Метод Mass-Flux (MFM) для расчета накопления потока на основе DEM, предложенный Gruber and Peckham (2008). Грубер С., Пекхэм С. (2008): Параметры земной поверхности и объекты в гидрологии. В: Hengl, T. и Reuter, HI [ред.]: Геоморфометрия: концепции, программное обеспечение, приложения. Развитие почвоведения, Elsevier, Bd.33, S.293-308.
- Дополнительный алгоритм: http://watershed.montana.edu/Hydrology/Home_files/2010WR009296.pdf, и его код также есть на его веб-сайте: http://thomasgrabs.com/side-algorithm/
Если у вас есть доступ к Spatial Analyst в ArcGIS, у вас есть ряд инструментов для вычисления путей потока. Полный рабочий приводится в качестве ссылки ESRI, но типичный рабочий процесс включает в себя:
Конечно, существует множество научных статей, описывающих различные методы, но этот метод прост для всех, кто имеет доступ к Spatial Analyst.
источник
В основанных на сетке цифровых моделях рельефа надежные определения линий наклона обеспечиваются методом D8-LTD:
Orlandini, S., G. Moretti (2009). Определение путей поверхностного потока по данным сетки высот, Water Resour. Res., 45 (3), W03417, doi: 10.1029 / 2008WR007099.
Orlandini, S., G. Moretti, M. Franchini, B. Aldighieri, B. Testa (2003), Основанные на путях методы определения недисперсионных направлений дренажа в цифровых моделях рельефа на основе сетки, Water Resour. Res., 39 (6), 1144, doi: 10.1029 / 2002WR001639.
В цифровых моделях рельефа на основе контуров линии наклона могут быть определены автоматически путем решения сложных топографических структур с использованием (сложной) модели, описанной в следующей статье:
Moretti, G., S. Orlandini (2008), Автоматическое разграничение водосборных бассейнов на основе данных о высоте контура с использованием методов построения каркаса, Water Resour. Res., 44 (5), W05403, doi: 10.1029 / 2007WR006309.
источник
Кажется, что это будет настоящая работа, чтобы написать инструмент с нуля. ESRI был в этом на протяжении десятилетий, и они до сих пор не имеют права.
AutoCAD (Civil 3D) может это использовать с помощью TIN. Я не знаю, что там происходит за кулисами, но в ArcGIS идентификация потоковых сетей обрабатывается с помощью растрового анализа.
В двух словах, входной растр матрицы высот (где каждая ячейка имеет значения X, Y, Z) используется в качестве входных данных, и алгоритм вычисляет квотирование «накопленного потока (как накопленный вес) всех ячеек, поступающих в каждую ячейку нисходящего склона во входном растре. " Продукт представляет собой растр, в котором каждая ячейка имеет значение накопления потока. Чтобы идентифицировать сеть потока, вы затем изолируете ячейки с высоким потоком, которые являются областями «концентрированного потока». Существуют и другие соображения, такие как необязательный весовой коэффициент, правильная гидрологическая входная матрица высот и т.д.
Я просто добавлю несколько идей: в терминах «механики» такого алгоритма, я полагаю, он может быть довольно простым; рекурсивно и для каждой ячейки определите местоположение и высоту всех окружающих ячеек и, основываясь на их возвышении, сложите количество ячеек, втекающих в нее. Что касается TIN, вы, вероятно, могли бы построить линию из двух точек в каждом треугольнике (самая высокая и самая низкая вершины), а затем объединить все это вместе в сеть.
источник