Рассчитать расстояние по адресу?

только начал изучать OSM и возник вопрос - как получить расстояние между двумя объектами, если даны их адреса (улица, дом и т.д)?
первое что пришло в голову
а) экспорт зоны из http://www.openstreetmap.org/export/ в xml формат.
б) парсер этого хмл-а, нахождение нужных координат(широта/долгота) домов из нодов по адресам, к примеру ул. Космонавтов, 12 и Советская, 9
в) расчет расстояния через полученные долготы и широты.

Все бы ничего, но производительность никакая - считать весь хмл, распарсить его, найти по тегам адреса и ноды и т.п.

Может есть способ попроще и быстрее, когда даны две пары данных: улица, дом (корпус, строение) и, соответственно, населенный пункт?

можно попробовать поиграться с xapi с фильтрами по addr:street и addr:housenumber.
xml парсить придётся всё равно :sunglasses:

Я пользуюсь PGRouting, однако это вариант не проще - нужен Postgresql и установленный PostGis. Считается по нескольким алгоритмам - A*, дейстра, с указанием всех графов (дорог) по пути следования. Данные конвертируются из osm в постгрес, и там уже производится расчет. Время расчета расстояния между питером (дворцовая) и москвой (красная) занимает около 3 секунд на моем железе.
Не знаю, есть ли лучше вариант, если есть, то подскажите.

зы. Если нужно просто линейное расстояние между точками - то так же поможет PostGis. Линейное расстояние просчитает быстрее, чем по дорогам . Там есть практически все функции для гео информации.

Да, для начала действительно хватит линейного расстояния. Правда все планировалось крутиться на MySQL’e