我的 Erlang 模块加载一个 GPX 文件并为文件中的每组纬度/经度坐标执行特定的功能。我想通过在现有点之间填充更多 GPS 点来提高 GPX 文件的分辨率。例如,GPX 文件可能每 100 英尺有一个点,甚至是随机间隔的点,我可能希望每 10 英尺有一个一致的点。我不想实际修改 GPX 文件;我只希望我的脚本在运行时计算这些中点。
我不关心插值速度或其他任何事情;只有常规的 GPS 坐标。
正如您在下面的函数中看到的,我正在使用 egpx 模块从 GPX 文件中提取纬度/经度点。我还发现了 geolib 等可以执行地理计算的模块,但是我在这方面的知识有限,无法独自解决这个问题。
在 Erlang 中,如何根据预定间隔(例如 10 英尺)在两个坐标之间插入更多 GPS 坐标?
编辑:我在 Stack Overflow 上发现了这个问题,这可能是相关的,但我仍然需要帮助理解和应用解决方案:如何在两个已知点之间生成坐标
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