根据预定间隔在两个GPS点之间插入附加点

时间:2019-01-11 22:28:14

标签: gps erlang coordinates gpx great-circle

我的Erlang模块加载一个GPX文件,并对文件中的每组经纬度坐标执行特定的功能。可以这么说,我想通过在现有点之间填充更多GPS点来提高GPX文件的分辨率。例如,GPX文件可能每100英尺就有一个点,甚至是随机间隔的一个点,而我可能希望每10英尺始终有一个点。我不想实际修改GPX文件。我只希望我的脚本在运行时计算这些中点。

我不在乎插补速度或其他任何东西;只有常规的GPS坐标。

正如您在下面的函数中看到的那样,我正在使用egpx模块从GPX文件中提取纬度/经度。我还发现了诸如geolib之类的模块可以执行地理计算,但是我在这一领域的有限知识使我无法自行解决此问题。

在Erlang中,如何基于预定间隔(例如10英尺)在两个坐标之间插入更多GPS坐标?

编辑:我在堆栈溢出上发现了这个问题,可能是相关的,但我仍然需要帮助来理解和应用解决方案:How to generate coordinates in between two known points

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

0 个答案:

没有答案