Москва. Прокладка маршрутов

имхо правильнее сделать автоповтор с настраиваемыми числом попыток и суммарным временем
дело же не в конкретном тайле, а в сервере или линии

В некоторых случаях (например при ответе BadRequest - повтор не поможет. в данном случае скорее всего нужно будет делить кусок на более мелкие, т.к. в первоначальном больше 50000 точек), а в остальных - можно повторить. Сделаю.

тогда лучше вначале создать очередь тайлов 0.5x0.5, а при получении BadRequest убирать большой тайл и добавлять две половинки :slight_smile:

Нет, 0.5х0.5 нельзя - ограничение в АПИ на 0.25х0.25, но уже 0.25 буду делить если что - на 4 части. Сейчас по проверяю как работает и выложу.

неправда ваша, ограничение уже давно подняли до 0.5х0.5 :slight_smile:

Поднять подняли, но Москву, например, такими кусками не повыкачиваешь. Видимо, срабатывает ограничение по памяти или времени. Кстати, я может что-то пропустил, но ограничение уже давно было 0.25 квадратных градуса, то есть хоть 0.5 на 0.5, хоть 0.3 на 0.8.

ну да, там ещё ограничение 50000 нод
о чём сейчас и речь, надо при отказе запрашивать кусками помельче
http://wiki.openstreetmap.org/index.php/OSM_Protocol_Version_0.5#About_bounding_boxes

Скачал Белоруссию и попробовал загрузить её вместе с Россией. В принципе, памяти пока хватает, но ничего интересного не получается - сообщения между Россией и Белоруссией нет :slight_smile:
Сделал на cooper-е загрузку всей России. Работает, но поднимается всё это уже больше получаса и работает не очень быстро. Вот, например, дорога Омск-Мурманск:
http://cooper.gpsvp.com:6789/#55.05320258537112,73.125,69.05285807666016,33.046875
Поэтому:

  • Белоруссию буду делать отдельно.
  • Обновлять данные и перезапускать маршрутизатор буду ночью, где-то между тремя и пятью часами.
  • Попробую сделать алгоритм быстрее.
    Ну и если кто не заметил, запреты поворотов у меня работают неправильно, это тоже надо доделать.
    Кстати, на карте у нас немало разрывов. Например, через Нижний на Вятку проехать нельзя:
    http://cooper.gpsvp.com:6789/#56.29215668507645,43.45916748046875,56.50040752210574,44.0277099609375

There are two restrictions on the size of bounding boxes:
They cannot enclose more than 0.25 degrees of latitude or longitude. The area covered by the largest possible bounding box (of 0.25 square degrees) varies from about 900 square miles at the equator to about 400 square miles on Iceland.
They cannot enclose more than 50,000 nodes.
http://wiki.openstreetmap.org/index.php/OSM_Protocol_Version_0.5#About_bounding_boxes
а больше нигде не встречал про ограничения. У них нестыковочка - сначала говорят про максимум 0.25х0.25, а потом про 0.25^2:)
Но в любом случае можно начальное деление хоть 1х1 указать, всё равно будет уменьшать пока не загрузит или попытки не кончатся.
Выложил новую версию.

Нужно будет занятся на досуге , хотя со стороны Беларуси большая часть дорог доходит до границы, чего не скажеш про Россию:(

ну вроде бы теперь скачка заработала
но вывод получается несортированный, и объекты дублируются

сваял небольшой фильтр, после него с файлом можно работать
http://garminmapsearch.com/osm/osmsort.zip

Запустил Белоруссию: http://cooper.gpsvp.com:6787/
Пока без обновления.

не сортированный, так как выводит сразу как скачает кусок - раньше был сортированный, но работал медленнее и памяти больше съедал, а вот дублирующиеся объекты - баг.

У меня не грузится:(

Исправил дубликаты и добавил ключик -s (–sort) для вывода сортированного файла

У меня тоже не всегда. Машинка стоит на adsl с динамическим ip. Когда соединение рвётся даже ненадолго (а оно иногда рвётся просто при входящих телефонных звонках), меняется ip, и новое значение расползается не сразу.

Сколько Беларусь в памяти занимает? Может попробую захостить - вдруг получится

в общем, финт ушами удался :slight_smile:
ночью регионы скачались и сконвертились
использовалась предпоследняя версия OSMTools + osmsort.pl
но времени занимает значительно больше, чем было через osmxapi

Сейчас 71 мегабайт. И на медленной машинке грузится минут двадцать.

а можете дать код? попробую запусить у себя