2010-06-03 3 views
1

Я работаю над проектом, который исследует состояние дороги или шоссе с помощью откалиброванного бортового компьютера, подключенного к прочному ПК. Ключи оператора в кодах дефектов при движении по заранее определенному маршруту.Расчет координаты точки на пути, заданном расстоянием

Мне нужно показать индикатор на экране карты, который показывает текущее положение транспортных средств, с учетом данных о расстоянии от бортового компьютера.

Я знаю точную координату лат-лона в начальной точке каждого участка дороги, а дорога состоит из нескольких точек.

Вопрос: как я могу рассчитать координаты лат-лота транспортного средства, предположив, что он продолжил движение по маршруту и ​​проехал определенное расстояние (например, 1,4 км). Координаты будут «заперты» на дорожной линии, как показано на рисунке ниже.

Road diagram

Спасибо, Alex

+1

Вы можете интерполировать позицию автомобиля для данного участка дороги. Итак, сначала подсчитайте, сколько сегментов завершено, и где на текущем сегменте автомобиль. – barrycarter

ответ

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 - alpha)] и [* alpha] в вычислениях lat lon до конца, иначе он пошел назад и прыгнул между каждым сегментом линии. –

Смежные вопросы