У меня есть несколько линий линий (также они есть в нескольких точках ...), представляющих похожие пути (в данном случае горные тропы) с различной точностью GPS, в результате чего многие линии расположены близко друг к другу, но не полностью перекрываются.
Для целей этого проекта я ищу способ вычислить «среднюю» линию из всех них и сгенерировать результирующую линию наиболее вероятного положения следа.
Как бы вы поступили, используя QGIS или любой другой инструмент (я думал об OGR ...)?
Ответы:
Тестовые данные:
Я.)
Создавайте точки вдоль ваших GPS-треков с помощью плагина QGIS
Locate Points Along Lines
( https://plugins.qgis.org/plugins/LocatePoints/ ). Я использовал интервал 5 м в моем примере.II.)
Создать
Concave Hull
сProcessing > Toolbox > QGIS geoalgorithms >Vector geometry tools > Concave hull
. Я использовал порог0.1
в моем примере. Если порог слишком низкий, в выходном многоугольнике могут быть дыры.III.)
Теперь вы можете вычислить «среднюю» линию с помощью алгоритма скелета. Ищите скелет в
Processing Toolbox
. Используйтеv.voronoi.skeleton
инструмент изGRASS GIS 7 commands
.источник
Подход тепловой карты:
Этот подход требует больше времени из-за времени вычисления этапов обработки. Это можно рассматривать как идею, возможно, чтобы приблизиться к более общему решению.
Тестовые данные:
Я.)
Создавайте точки вдоль ваших GPS-треков с помощью плагина QGIS. Найдите точки вдоль линий ( https://plugins.qgis.org/plugins/LocatePoints/ ). Для подхода тепловой карты я использовал интервал 2м .
II.)
Создайте тепловую карту с помощью плагина QGIS. Я использовал радиус 40м. Я увеличиваю радиус, пока в выходном растре нет дыр. Вы должны попробовать это с разными значениями радиуса.
III.)
РЕДАКТИРОВАНИЕ Нет необходимости хранить точное значение растра тепловой карты.
Теперь я хочу прореживать растр до «белых» областей, где сосредоточено наибольшее количество точек. Для этого я пересчитываю выходной растр. Мин. / Макс. Значения выходного растра - это
0
и89.7935
. Я использую только значения выше44
. Для этого я использовал «правило большого пальца». Округлите максимальное значение и разделите его на два. Округлите это значение в другой раз.89/2 = 44,5
->44
. Я использовал OSGeo4W Shell:gdal_calc -A heatmap.tif --calc="A>=44" --NoDataValue=0 --outfile=heatmap_44_NoData.tif
.IV.)
отредактированный
а) полигонизировать пересчитанную тепловую карту с
Raster > Conversion > Polygonize ...
б) Упростить многоугольник
Vector > Geometry Tools > Simplify geometries
. Я использовал допуск2
. Более простой многоугольник сокращает время обработки скелетов.в) Рассчитать скелеты: поиск скелета в панели инструментов обработки. Используйте
v.voronoi.skeleton
инструмент из команды GRASS GIS 7.Вы можете видеть, что полученная строка представляет более вероятную позицию следа, чем в моем первом ответе. Специально для изгиба на севере средняя линия следует за тремя дорожками, которые находятся ближе друг к другу. То же самое для изгиба на востоке.
Преимущества подхода:
Недостатки:
Если кто-то может оптимизировать этапы обработки, добро пожаловать!
источник
use weight from field
. Может ли такая информация, как скорость (проходить медленно / быстро) или другие, использоваться для взвешивания данных каким-либо образом? Взвешивание может быть использовано для улучшения тепловой карты.