Учитывая две координаты цифровой модели рельефа (ЦМР), как рассчитать фактическое расстояние, пройденное между двумя точками, исходя из того, что маршрут проложен по прямой линии? Как изменение разрешения моей ЦМР повлияет на результаты?
Если у вас нет этой возможности, встроенной в вашу ГИС, но вы можете выполнять некоторые базовые сеточные операции («алгебра карты»), решение все еще остается.
Расчет сводится к нахождению наклона маршрута в каждой точке. Если бы вы знали это точно , без ошибки дискретизации, вы бы интегрировали секущий уклон. На сетке интеграл оценивается путем получения среднего значения секущей для ячеек, перехваченных маршрутом, и умножения среднего значения на длину маршрута. (В алгебре на карте это будет «среднее значение по зонам», умноженное на длину маршрута.)
Наклон трассы не совпадает с уклоном матрицы высот! Это зависит от того, как именно маршрут прорезает поверхность. Таким образом, вам нужна полная информация о «направлении» поверхности, которая может быть описана в терминах удара и наклона, наклона и аспекта или с помощью единичного вектора нормали ( то есть трехмерного векторного поля, перпендикулярного поверхности). Самый надежный способ - свести проблему к той, в которой вы знаете нормальное векторное поле. Это означает, что у вас есть три числа в каждой ячейке - конечно, представленные в виде трех отдельных сеток - которые я назову (Nx, Ny, Nz). Направление маршрута (в плоскости) может быть представлено в виде единичного вектора (x, y, t), где (x, y) дает свое направление на карте. Значение t представляет собой «подъем» в вертикальном направлении:скорость, с которой маршрут должен подняться, чтобы оставаться на поверхности . Таким образом, поскольку 2D скорость маршрута - его «пробег» - равна Sqrt (x ^ 2 + y ^ 2), наклон определяется как
(1) tan (наклон) = подъем / бег = t / Sqrt (x ^ 2 + y ^ 2) .
В вычислениях t будет сеткой, а знаменатель Sqrt (x ^ 2 + y ^ 2) - просто число. Если вы вычисляете его по формуле (4) ниже, она будет равна 1, поэтому вы можете забыть об этом: t будет касательной сетки наклона маршрута, а sec (slope) = sqrt (1 + t ^ 2) будет сетка, чей зональный средний вы вычисляете.
Это легко найти т. По определению вектор направления (x, y, t) перпендикулярен вектору нормали. Это означает
0 = x * Nx + y * Ny + t * Nz, так
(2) t = - (x * Nx + y * Ny) / Nz .
В расчете Nx, Ny и Nz являются сетками, но x и y являются числами. Следовательно, t является сеткой, как и предполагалось. (С делением проблем не возникнет, потому что это невозможно при Nz = 0: это будет совершенно вертикальный утес, который не может быть представлен на ЦМР.)
Итак: как найти вектор нормали (Nx, Ny, Nz) и вектор направления (x, y)? Как правило, ГИС будет вычислять сетки наклона (ов) и аспектов (а) из матрицы высот. Выразите каждый как угол. Это в основном сферические координаты для единичного нормального вектора. Для аспектов к востоку от севера единичная нормаль получается путем обычного преобразования сферических в декартовы координаты,
(3) (Nx, Ny, Nz) = (sin (s) * sin (a), sin (s) * cos (a), cos (s)) .
В этом расчете s и a являются сетками , поэтому он описывает три отдельных выражения алгебры карт для создания трех сеток Nx, Ny и Nz.
В качестве проверки обратите внимание, что когда наклон равен нулю (s = 0), вектор нормали равен (0,0,1) и направлен прямо вверх, как и должно быть. Когда аспект равен нулю, вектор нормали равен (0, sin (s), cos (s)), который, очевидно, указывает на север (направление y) и наклоняется от вертикали на угол s, что подразумевает наклон поверхности от горизонталь под углом s: это действительно ее наклон.
Наконец, пусть направление маршрута будет b (постоянный угол к востоку от севера). Вектор направления
(4) подшипник = (x, y) = (sin (b), cos (b)).
Обратите внимание, что буква представляет собой пару чисел , а не пару сеток, поскольку она описывает направление маршрута.
По мере того как разрешение DEM увеличивается, вы можете наблюдать более локальные вариации на склонах, вызывая увеличение предполагаемого наклона, как отмечает @johanvdw. Я изучил это явление, последовательно огрубляя матрицы высот высокого разрешения и сравнивая матрицы высот одной области, полученные из разных источников. Я обнаружил, что в районах с высоким уклоном различия в оценках уклона могут быть существенными . Это приведет к существенным различиям в оценках длины сухопутного маршрута. В противном случае в областях с равномерно низким уклоном различия могут не иметь никакого значения.
Один из способов оценить эффект разрешения для вашей ЦМР - провести аналогичное исследование. Это занимает мало усилий. Например, оцените длину сухопутного маршрута, используя матрицу высот, затем повторно оцените длину после объединения этой матрицы высот в 2 × 2 блока (укрупнение в 2 раза). Если между двумя оценками есть несущественная разница, с вами все будет в порядке; если разница имеет значение, то, возможно, стоит получить DEM с более высоким разрешением для вашей работы. (Существуют более сложные методы для улучшения оценок наклона и длины, используя имеющуюся у вас матрицу высот, но мне потребуется слишком много времени, чтобы описать их здесь.)
SAGA GIS имеет модуль для этого: Интерактивный профиль
http://www.saga-gis.org/saga_modules_doc/ta_profiles/index.html
Полученные точки будут содержать расстояние и расстояние по суше. Если матрица высот имеет более грубое разрешение, расстояние по суше всегда будет немного ниже (если только у вас нет странных граничных условий), но в действительности это различие, скорее всего, не важно. Если область довольно плоская, даже расстояние по суше и нормальное расстояние будут почти одинаковыми: если наклон между двумя точками вдоль вашей линии составляет, например, 20%, расстояние по суше будет только на 2% выше, чем нормальное расстояние (sqrt ( 1 ^ 2 + 0,2 ^ 2) = 1,019).