Алгоритм Рамера-Дугласа-Пекера с 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: ответ Стивена Куана)

Другие вопросы по тегам