我正在研究一个项目,该项目使用连接到坚固PC的校准行程计算机来测量道路或高速公路的状况。操作员在沿预定路线行进时键入缺陷代码。
我需要在地图屏幕上显示一个指示器,显示车辆的当前位置,并考虑行程计算机的距离数据。
我知道在每个路段的起点处确切的纬度坐标,并且道路由一系列点组成。
问题是:我如何计算车辆的纬度坐标,假设它已经在路线上继续并且行驶了一定距离(例如1.4km)。坐标将被“锁定”在路线上,如下图中的蓝色所示。
谢谢, 亚历
答案 0 :(得分:1)
这是一些Java-ish伪代码,给出了在点之间使用线性插值的解决方案。
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
}
}
您可能还想考虑样条插值,这可能更准确。这将需要更多的数学,但仍然可以应用上述想法。