Подход тепловой карты:
Этот подход требует больше времени из-за времени вычисления этапов обработки. Это можно рассматривать как идею, возможно, чтобы приблизиться к более общему решению.
Тестовые данные:
- QGIS 2.18.16, GRASS GIS 7
- 4 трека GPS
- в пределах сетки 1x1 км
Я.)
Создавайте точки вдоль ваших 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.
Вы можете видеть, что полученная строка представляет более вероятную позицию следа, чем в моем первом ответе. Специально для изгиба на севере средняя линия следует за тремя дорожками, которые находятся ближе друг к другу. То же самое для изгиба на востоке.
Преимущества подхода:
- разумные хорошие результаты исключительно с использованием QGIS
Недостатки:
- время обработки больших наборов данных
- вы должны попробовать параметры априори (радиус карты тепла, мин / макс значения)
- сложно автоматизировать этапы обработки
- не проверено на узкие изгибы / кривые и на треки, которые действительно выходят за пределы линии
Если кто-то может оптимизировать этапы обработки, добро пожаловать!