2010-06-03 218 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