Учитывая ландшафт, как нарисовать путь потока потока?

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. каст? пересмотр = 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/
johanvdw
источник
5

Оригинальный подход предложен в этой статье :

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

Он предлагает метод, основанный на нечетком и многомасштабном представлении. Я не уверен, но этот метод может быть реализован в LandSerf .

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

жюльен
источник
Ссылка на документ выше не доступна
Graviton
@Graviton: ссылка была исправлена!
Жюльен
4

Если у вас есть доступ к Spatial Analyst в ArcGIS, у вас есть ряд инструментов для вычисления путей потока. Полный рабочий приводится в качестве ссылки ESRI, но типичный рабочий процесс включает в себя:

  1. Преобразуйте свой TIN в растр высот.
  2. Рассчитать направление потока.
  3. Заполните маленькие раковины.
  4. Рассчитать накопление потока
  5. Используя порог, выберите только ячейки с заданным количеством потока.
  6. Используйте инструмент Stream to Feature, чтобы экспортировать потоки в векторный шейп-файл.

Конечно, существует множество научных статей, описывающих различные методы, но этот метод прост для всех, кто имеет доступ к Spatial Analyst.

Патрик
источник
Мне пришлось бы писать код с нуля, поэтому я не могу использовать этот программный пакет.
Гравитон
Ну, похоже, это процедура, используемая большинством пакетов ГИС. TerraFlow - это опция с открытым исходным кодом, но я никогда не использовал ее. Что вы планируете использовать для обработки ИНН?
Патрик
1
Я думаю о написании своего собственного алгоритма потокового потока, поэтому упомянутые вами программные пакеты не применимы ко мне
Graviton
2
Хорошо. Когда вы сказали: «Мне не совсем понятно, как выполнить это», я предположил, что вам нужен практический совет, как это сделать. Предположительно рабочий процесс, используемый этими программными пакетами, может служить руководством для общей структуры вашего алгоритма. Оттуда я предлагаю вам обратиться к академической литературе о специфике. Например, Тарботон, 1997 год упоминался несколько раз в моем поиске алгоритмов направления потока.
Патрик
3

В основанных на сетке цифровых моделях рельефа надежные определения линий наклона обеспечиваются методом 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.

Стефано Орландини
источник
1

Кажется, что это будет настоящая работа, чтобы написать инструмент с нуля. ESRI был в этом на протяжении десятилетий, и они до сих пор не имеют права.

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

В двух словах, входной растр матрицы высот (где каждая ячейка имеет значения X, Y, Z) используется в качестве входных данных, и алгоритм вычисляет квотирование «накопленного потока (как накопленный вес) всех ячеек, поступающих в каждую ячейку нисходящего склона во входном растре. " Продукт представляет собой растр, в котором каждая ячейка имеет значение накопления потока. Чтобы идентифицировать сеть потока, вы затем изолируете ячейки с высоким потоком, которые являются областями «концентрированного потока». Существуют и другие соображения, такие как необязательный весовой коэффициент, правильная гидрологическая входная матрица высот и т.д.

Я просто добавлю несколько идей: в терминах «механики» такого алгоритма, я полагаю, он может быть довольно простым; рекурсивно и для каждой ячейки определите местоположение и высоту всех окружающих ячеек и, основываясь на их возвышении, сложите количество ячеек, втекающих в нее. Что касается TIN, вы, вероятно, могли бы построить линию из двух точек в каждом треугольнике (самая высокая и самая низкая вершины), а затем объединить все это вместе в сеть.

Якуб Сисак География
источник
1
Осложнения возникают при работе с раковинами и плоскими участками. В качестве крайнего примера рассмотрим матрицу высот, представляющую горное озеро, так что большая часть матрицы высот идеально ровная. Как именно рекурсивная реализация направит весь приток в озеро к его точке (точкам) оттока?
whuber