1

我正在开展一个项目,该项目使用连接到坚固型 PC 的校准行程计算机来调查道路或高速公路的状况。操作员在缺陷代码沿预定路线行驶时键入缺陷代码。

我需要在地图屏幕上显示一个指示器,显示车辆当前位置,同时考虑到来自行车电脑的距离数据。

我知道每个路段起点的确切纬度坐标,并且道路由一系列点组成。

问题是:假设车辆继续沿路线行驶并行驶了一定距离(例如 1.4 公里),我如何计算车辆的经纬度坐标。坐标将“锁定”在道路线上,如下图蓝色所示。

路图

谢谢,亚历克斯

4

1 回答 1

1

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.

于 2010-06-07T07:39:16.767 回答