Привязать к дороге с указанием направления - PullRequest
2 голосов
/ 11 июля 2010

Я пытаюсь добавить функцию привязки к дороге во все мое специальное программное обеспечение GPS.Там есть несколько тысяч дорог с сотнями тысяч узлов (широчайших точек).Я прочитал все эти вопросы в SO с «ближайшей точкой на линии» как хорошее решение.Однако, что я делаю, так это привязываюсь к ближайшей дороге в том же направлении, что и машина.Я так запутался, как этого добиться.Простая процедура очень мне поможет.(Также обратите внимание на сотни тысяч или проблемных узлов как производительность.)давай, дай мне подсказку.

1 Ответ

2 голосов
/ 11 июля 2010

Во-первых, найдите заголовок дороги, которую вы хотите проверить, то есть, сколько градусов к северу от нее, используя тригонометрию: найдите две определяющие точки широты для этого отрезка и назовите их point1 и point2: (в псевдокоде)

double roadDrctn = Math.Atan2(point2.y - point2.y, point2.x - point1.x)

затем определите ориентацию вашего автомобиля / GPS и посмотрите, будет ли это то же самое или что вы хотите с ним сделать. Не забудьте также проверить его на + 180 градусов (или Math.Pi, если он использует радианы), потому что вы можете идти по дороге в обе стороны! Мое единственное беспокойство по поводу этого метода заключается в том, что функции триггера довольно дороги с точки зрения производительности.

Надеюсь, что ответит на ваш вопрос.

...