Расчёт расстояний по автодорогам России

Он работает на чьём-то домашнем компе и загибается от любого сложного запроса. Я спрашивал владельца, он сказал, что огромные сложные машруты на нём считать не получится.

Насчёт CM, на заметку: с одного IP не больше 2500 роутов в сутки. С одного ключа API не больше 25 000 роутов в месяц.

Я тут гонял скрипт, вытягивал сотню городов с Яндекса. Ключ API взял с мусорного сайта, который вываливается по поиску “карта (имя города)”. После сотни запусков АПИ перестал отвечать, пришлось другой ключ искать :slight_smile:

Так какие ещё есть варианты? Как пробить дистанцию по дорогам России, если есть географические координаты (долгота и широта)?

Могу скинуть в личку сайт со свежими базами, если надо :slight_smile:

Если нужна дистанция именно по дорогам, то по взрослому это делается примерно так:

  1. Скачивание дампа России.
  2. Фильтрация интересующих городов (при помощи osmosis)
  3. Фильтрация интересующей дорожной сети + restriction-ы для них (при помощи osmosis)
  4. Конвертация дорожной сети в направленый граф для алгоритма маршрутизации (писать самому или искать готовую реализацию)
  5. Написание алгоритма маршрутизации по этому графу (писать самому или искать готовую реализацию)
  6. Запуск алгоритма для координат городов (полученых на шаге 2)

Граф для маршрутизации удобно хранить в postgresql/postgis
Для простоты алгоритм маршрутизации можно взять из дейкстровского семейства, например A*.

Алгоритму A* на таком графе уже поплохеет. Есть open source routing machine, там используется модификация A*, которая предварительно считает иерархии и работает в 100-1000 раз быстрее.

Смотря какой граф. Если оставить только primary и выше - то может и прокатить. Правда связность, конечно, нужна. Мы ведь её стараемся поддерживать, правда? :wink:

Заодно и проверим.

Сейчас написал скрипт на js, который считывает города с Яндекса и роутит по CloudMade. Пример результата: http://dl.dropbox.com/u/6721960/pairs_read.json (расстояние - в метрах).

Кто-нибудь может выложить в этой теме подробную инструкцию, как и что делать? Буду очень благодарен. Я сам в pgsql запросах не разбираюсь, поэтому не знаю как это реализовать. У меня есть базы городов с координатами, вот здесь есть дампы слоёв http://gis-lab.info/data/osm/russia/
Что мне из этого можно сделать и как? Спасибо.

Я сравнил по ati.su (незнаю, насколько точные данные у них) но разница есть, посмотрите сами.

А я в первом посте приводил ссылки на документы майкрософта, Reach for A*, там упоминаются научные работы немцев, которые потом легли в основу open source routing machine. Так вот, этот алгоритм предварительно считает иерархию дорог, то есть какие дороги важнее, после чего по огромному графу он находит маршруты так же быстро, как A* по сильно фильтрованному графу. То есть скорость возрастает на порядки, там до 1000 раз на больших графах ускорение, а точность при этом не теряется вообще.

Изучайте научные работы, в них очень много полезного бывает. По крайней мере не будет как у меня - сидел часа 2 строго доказывал на бумаге, что маршрутизация двунаправленным алгоритмом оптимальна (как только маршруты с двух точек встретятся), а оказалось, что это уже доказано в 60-м году.

Из того, где сам бывал: Братск-Ачинск: мой маршрут короче на 20 км. Их маршрут, видимо, обходит Канск по длинному объезду, не учитывает новый мост в Красноярске, и въезжает в Ачинск тоже через объезд.

Таким образом получается, что CloudMade считает правильно, но данные выводит в метрах, а не километрах или милях?

Да, в метрах. По ближайшим городам я знаю расстояния, всё сходится.

А между Москвой и Санкт-Петербургом, к примеру? Сходится?

Не мерил.

Пробовал через http://sit-trans.com/calculation_of_distance вроде правильно показывает.

Как узнать расстояние между городами России или любыми другими городами и странами на географической карте мира.

Воспользуйтесь нашим сайтом расчета расстояния - http://distcalc.ru
и вы всегда сможете узнать точное расстояние между любыми городами во всем мире.

Наш калькулятор сможет рассчитать расстояние как по прямой так и по автомобильной дороге!
По прямой линии - расчет расстояния идет так как если бы вы летели на самолете.
По дорогам - наш калькулятор выбирается всегда самый оптимальный маршрут по автомобильным дорогам.
Пешком - в данном случае расчет расстояния идет по дорогам общего пользования.
На велосипеде - в данном случае расчет расстояния ведется по дорогам общего пользования.

Уникальная особенность нашего калькулятора в том что он может рассчитать маршрут только по бесплатным дорогам
в данном случае вам не нужно будет платить деньги за проезд по дорогам, в Европе
много платных дорог, но есть и бесплатные автомобильные дороги - этот маршрут будет проложен только
по бесплатным дорогам и вы сможете сэкономите деньги.

Также вы получите дополнительную информацию: примерное время в пути, цена и количество топлива
что вы потратите на этом маршруте, расстояние в километрах и милях.

Вы сможете создать даже сложный маршрут который будет проходить только через те города что вам нужно
(которые вы укажите) вы сможете добавить до 10 промежуточных городов и ваш маршрут будет построен только через эти города.
у калькулятора расчета расстояния есть дополнительные поля, вы сможете самостоятельно
указать сколько литров топлива потребляет ваш транспорт на 100км пути, и указать стоимость топлива за 1 литр
указать ваш скоростной режим движения по дорогам и многое другое.

На географической карте мира вы увидете подробный маршрут и сможете детально его рассмотреть, а также
под географической картой маршрута, вы получите детальные указания куда вам нужно ехать на автомобиле и где вы должны поворачивать, указатели со всеми дорожными знаками.

Сделайте API. Я хочу рассчитать пешеходную доступность школ, где надо проложить маршрут от каждого домика (а лучше подъезда) в городе до всех школ.

irnakrotsova, самолеты прямо НЕ летают. :wink:
Движение воздушных судов (ВС) осуществляется по воздушным трассам (ВТ) с соблюдением вертикального и горизонтального эшелонирования по поворотным пунктам маршрута. Добавьте сюда и временной интервал при следовании на одной высоте и по одному маршруту. Вы располагаете действующей схемой ВТ на территории РФ и за её пределами?