Ответы:
Если у вас нет этой возможности, встроенной в вашу ГИС, но вы можете выполнять некоторые базовые сеточные операции («алгебра карты»), решение все еще остается.
Расчет сводится к нахождению наклона маршрута в каждой точке. Если бы вы знали это точно , без ошибки дискретизации, вы бы интегрировали секущий уклон. На сетке интеграл оценивается путем получения среднего значения секущей для ячеек, перехваченных маршрутом, и умножения среднего значения на длину маршрута. (В алгебре на карте это будет «среднее значение по зонам», умноженное на длину маршрута.)
Наклон трассы не совпадает с уклоном матрицы высот! Это зависит от того, как именно маршрут прорезает поверхность. Таким образом, вам нужна полная информация о «направлении» поверхности, которая может быть описана в терминах удара и наклона, наклона и аспекта или с помощью единичного вектора нормали ( то есть трехмерного векторного поля, перпендикулярного поверхности). Самый надежный способ - свести проблему к той, в которой вы знаете нормальное векторное поле. Это означает, что у вас есть три числа в каждой ячейке - конечно, представленные в виде трех отдельных сеток - которые я назову (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).