Алгоритм Рамера-Дугласа-Пекера с GPS
У меня есть данные GPS, которые могут быть близко к северному / южному полюсу и могут перемещаться на тысячи километров.
Если я строю матрицу расстояний, например, с:
from geographiclib.geodesic import Geodesic
p1_lat, p1_lon = 43.374880, -78.119956
p2_lat, p2_lon = 43.374868, -78.119666
geod = Geodesic.WGS84
g = geod.Inverse(p1_lat, p1_lon, p2_lat, p2_lon)
print("Distance is {:.2f}m".format(g['s12']))
Могу ли я применить алгоритм Рамера-Дугласа-Пекера к нему?
Я всегда вижу массив координат x, y как вход алгоритма RDP, но в моем случае преобразование, которое сохраняет расстояния, не существует.
1 ответ
Дрянной ответ: Да, вы можете применить алгоритм. Тем не менее, вывод, вероятно, не то, что вы хотите...
Я предполагаю, что вы хотите упростить траектории GPS, которые близки к любому из полюсов. (Который облажает Ramer-Douglas-Peucker, чтобы координаты перепрыгнули через все место)
Существует целый ряд исследований, посвященных упрощению траекторий для различных применений. Например, имеет ли значение, если высота / высота сохраняется? Важна ли скорость (например, скорость вдоль траектории)?
Существуют конкретные алгоритмы для таких случаев.
Простой подход, который, вероятно, действительно имеет дело с упомянутыми выше соображениями, состоит в том, чтобы просто преобразовать широту / долготу в координаты XYZ, а затем применить алгоритм RDP.
(См. Этот ответ, чтобы узнать, как преобразовать в XYZ: ответ Стивена Куана)