我正在开展一个项目,该项目使用连接到坚固型 PC 的校准行程计算机来调查道路或高速公路的状况。操作员在缺陷代码沿预定路线行驶时键入缺陷代码。
我需要在地图屏幕上显示一个指示器,显示车辆当前位置,同时考虑到来自行车电脑的距离数据。
我知道每个路段起点的确切纬度坐标,并且道路由一系列点组成。
问题是:假设车辆继续沿路线行驶并行驶了一定距离(例如 1.4 公里),我如何计算车辆的经纬度坐标。坐标将“锁定”在道路线上,如下图蓝色所示。
谢谢,亚历克斯
我正在开展一个项目,该项目使用连接到坚固型 PC 的校准行程计算机来调查道路或高速公路的状况。操作员在缺陷代码沿预定路线行驶时键入缺陷代码。
我需要在地图屏幕上显示一个指示器,显示车辆当前位置,同时考虑到来自行车电脑的距离数据。
我知道每个路段起点的确切纬度坐标,并且道路由一系列点组成。
问题是:假设车辆继续沿路线行驶并行驶了一定距离(例如 1.4 公里),我如何计算车辆的经纬度坐标。坐标将“锁定”在道路线上,如下图蓝色所示。
谢谢,亚历克斯
Here is some Java-ish pseudocode, giving a solution using linear interpolation between points.
inputs: distance, points
// construct a list of segments from the points
segments = [];
for(point in points) {
if(not first point) {
seg = new segment(last_point, point)
add seg to segments
}
last_point = point
}
// calculate current lat and lon
for(segment in segments) {
if(distance < segment.length) {
alpha = distance / segment.length
lat = segment.start.lat * (1.0 - alpha) + segment.end.lat * alpha
lon = segment.start.lon * (1.0 - alpha) + segment.end.lon * alpha
return (lat, lon)
} else {
distance = distance - segment.length
}
}
You might also want to consider spline interpolation, which could be more accurate. It will require some more maths, but the above idea can still be applied.