Я только что реализовал нечто подобное в своем приложении. У меня есть список координат широты и долготы с устройства GPS, и мне нужно было создать маршрут на основе этих данных.
Я начал с сопоставления каждой позиции GPS с узлом в моей уличной сети. Затем я удалил «последовательно повторяющиеся» узлы, чтобы отфильтровать те последовательные позиции, которые находятся в одном и том же узле. Затем я начал «ходить» по своей уличной сети, начиная с первого узла. Я проверил первый узел и второй узел и проверил для общего сегмента улицы. Если я нашел один, отлично. Если нет, я создаю кратчайший путь между двумя узлами и вместо этого использую эти дороги. Я продолжаю делать это, пока не рассмотрю все узлы. В конце этого процесса у меня есть список отрезков, по которым проезжал автомобиль, и порядок их следования.
К сожалению, я использую другую карту, другой язык программирования и другую базу данных. Таким образом, совместное использование кода вообще не поможет вам. Надеюсь, что процесс, который я описал выше, поможет вам выполнить вашу задачу.