我的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