Мой модуль Erlang загружает файл GPX и выполняет определенную функцию для каждого набора координат широты / долготы в файле. Я хочу увеличить разрешение, так сказать, файла GPX, добавив больше точек GPS между существующими точками. Например, файл GPX может иметь точки через каждые 100 футов или даже точки через случайные интервалы, и я могу хотеть иметь точки последовательно через каждые 10 футов. Я не хочу на самом деле изменить файл GPX; Я хочу, чтобы мой скрипт вычислял эти средние точки только во время выполнения.
Мне нет дела до интерполяции скорости или чего-либо еще; только обычные координаты GPS.
Как вы можете видеть в моей функции ниже, я использую модуль egpx для извлечения длинных / длинных точек из файла GPX. Я также обнаружил такие модули, как geolib, которые могут выполнять географические расчеты, но мои ограниченные знания в этой области не позволяют мне самостоятельно решить эту проблему.
В Erlang, как я могу интерполировать больше GPS-координат между двумя координатами на основе заранее определенного интервала, например, 10 футов?
РЕДАКТИРОВАТЬ: Я нашел этот вопрос о переполнении стека, который может быть уместным, но мне все еще нужна помощь в понимании и применении решения: Как создать координаты между двумя известными точками
get_gpx_points([], _) -> ok;
get_gpx_points([H|T], Acc) ->
Lat = egpx:get_lat(H), % Egpx converts GPX trackpoints to lat/long
Long = egpx:get_lon(H),
% I want to interpolate more lat/long points here based on a set interval, like 10 feet
LatList = io_lib:format("~.6f",[Lat]), % Converts to list of no. with six decimal points
LongList = io_lib:format("~.6f",[Long]),
do_something(LatList, LongList), % Run a certain function for every coordinate
get_gpx_points(T, Acc + 1). % Recurse until no more trackpoints found