Вычисление координат точки на заданном расстоянии - PullRequest
1 голос
/ 03 июня 2010

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

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

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

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

Road diagram

Спасибо, Alex

1 Ответ

1 голос
/ 07 июня 2010

Вот некоторый псевдокод на языке 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
  }
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...