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

Слушайте, а почему тема про сбор задач превратилась в общение Zkir и OverQuantum про какую-то упрощалку дорог? Может, разбить?

Потму что упрощалка - это одна из “Актуальных задач, требующие искусства программирования”.
Если тебе не хватает общения - присоединяйся :slight_smile:

Этот артефакт - результат плохой параллельности двух направлений дорог. Даже на скрине видно как направления сходятся к нижнему краю.
Функцию JoinDirections3 от этого “заносит” и она делает приличный излом схлопнутой дороги.
Рисунок
Потом JoinAcute ткнувшись в точку A определяет, что точка C близка к отрезку AB (76 метров) и при этом точка C близка к точке B (96 метров).
Оба эти расстояния меньше длины схлопывания (100 метров) и таким образом B и C можно схлопнуть в одну точку - D. AD таким образом становится тупиком.
ИМХО, надо выправлять параллельность. Либо поставить поменьше длину схлопывания (JoinDistance) - 1й параметр у JoinAcute.

Может я чего-то не понимаю, но если BC можно схлопнуть, то тогда AB и AC можно схлопнуть тем более - эти отрезки короче.

JoinAcute занимается склеиванием близко лежаших отрезков. Находясь в точке A, алгоритм определяет отрезки AB и AC как лежащие достаточно близко для склеивания в один.

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

Очень хочется видеть в JOSM слой http://ant.dev.openstreetmap.org/bingimageanalyzer
Оказывается его можно подключить как обычный слой http://ant.dev.openstreetmap.org/bingimageanalyzer/tile.php/{zoom}/{x}/{y}.png

Хочется что бы в пресетах JOSM можно было сохранять последние выбранные значения чекбоксов и значений из списка возможных значений.

Это скорее в тему http://forum.openstreetmap.org/viewtopic.php?id=6513&p=10

Слишком глюкоопасно - теги начнут расставляться сами (выбрали один раз bridge и все дороги начнут делаться мостами). Для этого есть Alt-A и список недавних тегов (Shift-щелками можно добавить несколько)

Так, небольшой ап темы, чисто информационный.

Упрощалка дорог, разработанная OverQuantum и переписанная freeExec на java, исправно работает, уже не первый месяц, для получения обзорных карт разных стран и карты европейских маршрутов. Каких-то критических проблем пока не выявлено.

Как ни странно я сейчас использую оба варианта, и vb6 и java :slight_smile:

Оба комрада от приза отказались, скорее всего в обозримом будущем приз будет назначен за какую-нибудь другую задачу:) Например, жизнь показала, что для еврообзорки нужна не только “упрощалка”, но и “латалка дыр”.

Об упрощалке, что было сделано и зачем оно нужно, я буду рассказывать в эти выходные на конференции SotM Baltic.

Сформулирую задачку, она несколько перекликается с упрощалкой но конечная цель - другая.

Хочется генерить атласы маршрута. Т.е. иметь возможность развернуть ту-же М10 в линию, сохранив километраж вдоль пути, информацию об одновейности/двухвейности, развязках, мостах, паромных переправах, наличии ограждения, прилегающих городах и пои. +Иметь возможность хотябы примерно пересчитывать относительный километраж - в широту долготу.

Если маршрут образует несколько подграфов (есть разрывы) выстраивать участки маршрута последовательно (Вычислить можно апроксимируя множество всех точек полилинией)
Вопрос с колььцевыми маршрутами - открыт.

На вход хотелось бы подавать osm/pbf
Для вывода хотелось бы подключать различные плагинчики.

Инструмент был бы весьма актуален для схем о.т. и длинных трасс/маршрутов.

dkiselev
Задача, конечно, интересная. Но с практической точки зрения я, например, ни разу не посмотрел в бумажный атлас России по пути Москва-Казахстан. Я не понимаю кому может понадобиться подобная легенда при наличии автонавигатора с картой ОСМ. Искуственная проблемма.

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

Акварельный стиль от Стамен или карты от F4 тоже не практичны, но красивы и привлекают новых адептов.

OSRM имеет легенду маршрута. Конечно требует доработки, но хоть не с нуля начинать… Смысл я понял - заранее видеть что встретится в пути (заправка, кафе, мотель).

Задачка на самом деле немного шире, видеть не только что встретиться в пути, но и ветвления маршрута, разрывы в маршруте если есть.

Вспомнил о второй задачке, которую начал реализовывать но подзабросил. Печать атласов.
Хотелось бы автоматизировать следующие варианты:

  1. Задаем полик - получаем покрытие набором листов с нужным перекрытием нужного масштаба.
  2. Задаем линию (вдоль трассы например) - так же получаем набор листов но уже покрывающих трассу вдоль ее следования
  3. Задаем набор точек - получаем набор листов с точками You are here.

Ну и как пересечение с этим, печатать/не печатать индекс объектов, накладывать координатную сетку. Использовать разные tms/wms источники карты и разные источники данных для индекса: wfs, overpass + geoJSON, api osm, локальный файлик с geojson/osm/osm.pbf

  • Шаблоны для всего этого (я использовал шаблоны odt)
    На выходе - pdf

Я частично реализовал это когда делал обходные листы. А именно реализовал пункт 1, для wms от мапсервера но без построения сетки и алфавитного индекса. Потом я начал это маленько переписывать чтобы было проще подключать кастомные классики на тех или иных этапах, но не закончил.

В общем если кто хочет поучаствовать в приведении этого в боевой вид - отпишитесь пожалуйста.

dkiselev, наверное, я бы не прочь помочь, но как всегда очень мало времени на всякие интересные занятия. Какой язык ЯП предпочтителен? Где-нибудь исходники уже сделанного можно посмотреть?

Язык - вездесущая нынче ява.

Исходники тут https://github.com/kiselev-dv/EasyAtlas/tree/master/AtlasGenerator но они там посреди переписки системы конфигурации всего этого добра. Если ява устраивает, я ближе к вечеру, постораюсь привести это в более человеческий вид, и добавить описание всего процесса в целом.

Мне пока не удалось генерить документ сразу из нескольких страничек, поэтому там есть доп. скриптик который из страничек odt собирает 1 пдфку.

Ну на джаве когда-то кодил немного. Как раз сейчас заново его изучаю. Как время будет, поизучаю исходники.

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

Залил обновление на github.
По умолчанию вызывается функция OptimizeRouting(), которая делает всё то же что и раньше. Но ещё там есть её дубликаты с префиксом, которые делают другое. Что там где - см. в вики.

Ещё оптимизировал потребление памяти, убрав фикс размера Node.edge(). Теперь у ноды м.б. до 32к ребёр.
RU-OVRV.roads.mp (@2013-01-04) - теперь делается за 98 секунд, жрёт 355M
EU-OVRV.mp (@2013-03-02) - делается за 100 секунд, жрёт 430M
Результат 100% идентичен мартовской версии или отличается только порядком линий в файле.
Также прожёвываются карты до 6-6.5 миллионов узлов (проверял на гос.границах)