计算给定距离的路径上的点的坐标

时间:2010-06-03 11:49:28

标签: geometry latitude-longitude

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

我需要在地图屏幕上显示一个指示器,显示车辆的当前位置,并考虑行程计算机的距离数据。

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

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

Road diagram

谢谢, 亚历

1 个答案:

答案 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
  }
}

您可能还想考虑样条插值,这可能更准确。这将需要更多的数学,但仍然可以应用上述想法。