Интерполировать дополнительные точки между двумя точками GPS на основе заданного интервала - PullRequest
0 голосов
/ 12 января 2019

Мой модуль 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
...