2015-04-24 1 views
2

Можно ли написать взвешивание на основе направления? Я вижу, что есть параметр reverse, но что это значит и как его вычислить?Графический маршрут, ориентированный на маршрут

Например, у меня есть прямой маршрут с юга на север

(0) 
| 
| 
| 
(1) 

мне нужен разный вес от (1) до (0) и от (0) до (1).

==== Обновление

Я вычисленное направление базируется на двух последних точках автомобиля:

  1. ввода являются две последние точки транспортного средства
  2. База на двух последних точек, I» м угол вычисления
  3. Нахождение края в месте, где находится транспортное средство
  4. Вычислительный угол кромки на основе геометрии
  5. Сравнение двух ребер

Вот код: в Scala

def isReverseDirection(target: Point, previous: Point) = { 
    val angle = RouteUtils.angleFromCoordinate(previous.lat, previous.long, target.lat, target.long) 
    val edgeState = findEdge(target.lat, target.long) 
    val pl = edgeState.fetchWayGeometry(3) 

    val edgeAngle = RouteUtils.angleFromCoordinate(pl.getLat(0), pl.getLongitude(0), pl.getLat(pl.getSize - 1), 
     pl.getLongitude(pl.getSize - 1)) 

    Math.abs(edgeAngle - angle) > 90 
} 

Я проверил это решение, и это, кажется, работает. Мне нужно реализовать Car2FlagEncoder. В красном пятне я получил данные блокировки от движения транспортного средства (0) -> (1). И тогда я вычисляя маршруты с обеих сторон:

(0) -> (1)

(1) -> (1)

ответ

1

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

Фон: флаги уже правильно заменены в зависимости от 0-> 1 или 1-> 0, это делается в рамках реализации EdgeIterator в GraphHopperStorage.

Ещё параметр reverse еще не повлиял. Этот параметр может быть true и false только для двунаправленного алгоритма (для алгоритмов unidir всегда будет false), и поэтому вам нужно дополнительно ухаживать за взвешиванием для обратного поиска, что вы читаете обратную скорость.

+0

Итак, если я буду использовать алгоритм 'dijkstrabi', я получу правильные обратные параметры? И как я могу вычислить это значение вручную, на случай, если я захочу изменить скорость во время выполнения, основан ли он на угле? –

+0

Какое значение, значение скорости? Вы можете сделать это в зависимости от сохраненных значений на край, да – Karussell

+0

Нет. Я имел в виду 'reverse', у меня есть движущийся автомобиль, как я могу вычислить его направление, соответствующее этому параметру? –

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

  • Нет связанных вопросов^_^