2010-06-03 207 views
1

我的工作,使用连接到凹凸PC校准的行车电脑考察了道路或公路的条件项目的路径上的点的坐标。当运营商沿着预先定义的路线行驶时,运营商输入缺陷代码。计算给定的距离

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

我知道确切的纬度经度在道路的每个部分的起点坐标,道路是由一系列点构成。

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

Road diagram

谢谢, 亚历

+1

您可以插值道路的给定段的车辆的位置。因此,首先计算车辆已经完成了多少段,以及车辆当前段的位置。 – barrycarter 2010-06-03 14:18:37

回答

1

下面是一些Java肥胖型伪码,给使用点之间的线性内插中的溶液。

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

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

+0

非常好,稍微调整这个作品完美无瑕。点直接锁定在线上,所以精确度非常高。 我不得不的[*(1.0 - α)]开关和[*α-在LAT经度计算到结束,否则它去向后和每个线段之间跃升周围。 – 2010-06-07 11:40:35