OpenStreetMap Forum

The Free Wiki World Map

You are not logged in.

#1 2009-05-04 12:20:43

alexandertut
Member
Registered: 2009-05-04
Posts: 2

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

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

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

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

Offline

#2 2009-05-04 12:48:15

liosha
Member
From: Moscow
Registered: 2008-03-04
Posts: 8,446
Website

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

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

Last edited by liosha (2009-05-04 12:53:41)

Offline

#3 2009-05-04 13:24:12

Plaxinia
Member
Registered: 2009-02-17
Posts: 5

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

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

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

Last edited by Plaxinia (2009-05-04 13:32:33)

Offline

#4 2009-05-04 14:02:46

alexandertut
Member
Registered: 2009-05-04
Posts: 2

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

Plaxinia wrote:

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

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

Offline

Board footer

Powered by FluxBB