UPD: так как тема хорошо зашла и показала наличие спроса на такой сервис, буду развивать его дальше. Завел паблик вконтакте для сбора фидбека и публикации информации об обновлениях https://vk.com/public168028574

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

Ситуация еще больше осложняется, если рядом нет никаких крупных достопримечательностей, о которых все знают и которые можно было бы включить в свой маршрут после короткого поиска в интернете. Что делать если вы застряли в каком-нибудь Купчино, про которое вы только и слышали, что там лучше не застревать? Приходится идти по навигатору, надеясь, что на пути встретится что-то интересное. Однако популярные навигаторы учитывают лишь расстояние и время в пути, но не принимают во внимание интересность маршрута. Мне попадались еще проекты, пытающиеся учитывать удобство пешего маршрута (ведущие в обход шумных магистралей), но хочется же пройти не только комфортно, но и увидеть какие-нибудь красоты.



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

Описание алгоритма и примеры работы под катом, ссылка в конце.

Основная идея


Изначальная идея у меня была такая: скачиваем Open Street Map карту, парсим ее, выдираем из нее информацию обо всех потенциально интересных для пешеходов объектах (с их списком еще предстояло определиться), рисуем вокруг них некие буферные зоны. Ищем пути каким-нибудь стандартным фреймворком, немножко хачим процесс построения навигационного графа, чтобы в этих зонах веса ребер стали ниже и тем самым организуем притягивание пешеходных маршрутов к ним.

Сказано — сделано. Для поиска пути была использована библиотечка GraphHopper, которая умеет из коробки читать OSM карты, строить маршруты для разных типов транспорта (машина, пешеход, велосипед), имеет несколько разных алгоритмов для поиска пути (простой поиск, поиск альтернативных маршрутов, всякие ускореенные-оптимизированные варианты) и умеет препроцессить навигационный граф для ускорения поиска (базовый поиск по городу работает очень быстро, за несколько миллисекунд). Для примера работы был выбран мой родной Санкт-Петербург — тут я мог сам оценить качество и интересность построенных маршрутов.

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

Объекты для туристов и проблемы с OSM


В Open Street Map каждый объект — это геометрия (Node, Way или Relation) плюс некоторое количество строковых пар «ключ-значение».

Вот так выглядит Зимний Дворец в OSM:



Проблема в том, что поскольку OSM — это открытая и редактируемая участниками карта, стандартизация там хромает на обе ноги. Для обозначения одного и того же типа объектов может использоваться разный набор тегов и разная комбинация объектов, часть тегов считается «каноничной» и описана на вики, но все равно есть куча вариантов, как просто альтернативных, так и откровенно ошибочных, но тем не менее использующихся. В итоге любой код, работающий с OSM (особенно всякие навигаторы и рендереры) вынуждены все это учитывать и содержать в себе кучу кода для обработки таких вот особых случаев.

Например тег highway=unspecified означает не «какая-то дорога неизвестного типа», как думают многие мапперы, а вполне конкретный тип дороги по европейской классификации, но лепят его куда попало из-за названия. Причем у этого типа дороги предполагается наличие пешеходной обочины или тротуара, поэтому навигатор строит пешеходные маршруты по ней, в то время как по реальной такой дороге в СПб пешеходы не ходят (это проезжая часть улицы). Или вот еще пример: addr:housename тег у нас иногда используют для названия зданий, например почему-то западное крыло здания Главного штаба на Дворцовой площади названо именно через этот тег. В то время как в гайдах самого OSM сказано, что его стоит использовать только в тех странах, где вместо номеров домов используются имена (в Японии вроде так делают), а для официальных названий зданий использовать тег name и подобные.

Еще один бесящий меня момент — разметка зеленых зон. Для этой цели есть два разных тега, leisure=park и landuse=grass. На карте они выглядят примерно одинаково: просто зеленая зона, чуть отличаются цветом. В итоге лепят их вперемешку кто как хочет. Из-за чего часто разделительный газон между проезжими частями улицы становится «парком» и начинает притягивать пешеходные маршруты.

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

  • Туристические достопримечательности отмеченные тегом tourism
  • Зеленые зоны. leisure=park, garden. После некоторых размышлений были добавлены landuse=cemetry, кладбища. С одной стороны так себе достопримечательность, с другой — например на Васильевском острове в СПб единственная крупная зеленая зона — кладбище, которую местные используют вместо парка, а настоящих парков там вообще нет.
  • Вода: реки, озера, пруды. Тут мешанина из тегов water, waterway и кучи дублирующихся значений. Ведь так приятно бывает пройтись по набережной в жаркий день. Во всяком случае я так думал, пока не попробовал обработать Смоленск — внезапно выяснилось, что в глубинке берега речки — это не красивая набережная как у нас в Питере, а заросший и замусоренный пустырь, от которого пешеходы предпочли бы держаться подальше. Но различить эти ситуации чисто по данным карты пока не удается.
  • Исторические здания и сооружения, то что помечено тегом historic. Они как правило просто красивы
  • Всякая прочая городская мелочевка, отмеченная тегом amenity. У него очень много значений, я выбрал лишь некоторые, например уличные часы (clock) — часто бывают красивыми, религиозные сооружения (place_of_worship), стрит-арт всякий (graffiti) и некоторые иные
  • Пешеходные улицы и площади highway=pedestrian

По ходу исследования я понял, что кроме положительных зон, привлекающих пешеходов, надо добавить еще и негативные, отталкивающие их. В этот список пока вошли:

  • Стройки landuse=construction. Пешеходам не очень приятно идти под строительными лесами, в летящей со стройплощадки пыли
  • Промзоны и гаражи landuse=industrial, garages. Тут как раз случился тот нюанс с заведением пешехода (а мы в Институте дизайна и урбанистики ИТМО это тестировали на студентах, которые ходили по проложенным маршрутам и потом писали отзывы в рамках исследования пешеходного удобства Петроградского района) в дебри промзоны Ленполиграфмаша. Оказалось что там не весь квартал помечен этим тегом (как делается обычно для разметки крупных промзон), а каждое здание по отдельности.
  • В идеале еще хочется уводить пешеходов от широких городских магистралей, где пыльно, шумно, много машин и обычно не на что особо смотреть. Но пока не получилось однозначно их детектировать. В OSM есть по сути только число автомобильных полос, но этого критерия недостаточно (многие важные туристические улицы, например Невский проспект, тоже многополосные)

Тот самый Ленполиграфмаш, содержащий где-то в своих дебрях памятник печатному станку, и куда мой алгоритм потащил бедную студентку



Важность достопримечательностей


Очевидно что достопримечательности бывают разные. Есть крупные, всемирно известные объекты — как Эйфелева башня или вот Исаакиевский собор в Санкт-Петербурге, которые притягивают огромное количество туристов, и ради посещения которых люди могут сделать приличный крюк. И есть какие-то небольшие, местечковые украшения — какой-нибудь стрит-арт, небольшая скульптура во дворе, которые люди готовы осмотреть только по пути и не хотят тащиться к ним издалека. Для корректного построения интересных и удобных маршрутов нужно было научиться как-то разделять разные категории достопримечательностей, при этом все что у нас есть в OSM — это некая геометрия и набор тегов. Пришлось придумать набор эмпирических правил для назначения «важности» достопримечательности, в дальнейшем определяющей изменения весов в графе.

Изначально важность равна нулю и увеличивается при выполнении следующих условий:

  • +3 при наличии тега historic — он есть только у важных исторических зданий, да и то не у всех
  • +3 за наличие тегов wikipedia или wikidata. Свои страницы на вики есть обычно только у важных объектов
  • +1 за наличие link или url — свой сайт, опять же, есть далеко не у всех, но часто этот тег ведет на страницу какого-нибудь каталога и есть у мелких объектов
  • +1 за каждый тег name. Имя может задаваться кучей способов, могут быть всякие old_name для исторических названий или имена переведенные на другие языки. Опять же, наличие многих имен свидетельствует о достаточной важности объекта (раз кто-то запарился их все проставить)
  • building:architecture — архитектурный стиль, обычно ставится на всякие красивые памятники архитектуры

Этот список определен опытным путем и худо-бедно позволяет отделить Зимний дворец от безымянного граффити на окраине. В итоге важность равная 0 означает какой-то локальный мелкий безымянный объект (клочок зелени, граффити), около 3-4 — это уже что-то интересное (церковь, сквер где можно посидеть и отдохнуть), ближе к 10 начинаются достопримечательности городского уровня, тот же Зимний дворец.

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

Области влияния


Достопримечательности бывают разного размера. Какую-нибудь небольшую скульптуру надо рассматривать с расстояния не более 5-7 метров. Медный всадник неплохо виден и с 20-30. Исаакиевский собор — одно из самых высоких сооружений в центре города — прилично виден с 200-300 (под этим я понимаю что туристу необязательно подходить вплотную, а вполне комфортно насладиться видом с такого расстояния, так-то его видно и за километр с другого берега Невы, но уже без деталей). Как же определить, на каком расстоянии достопримечательность должна влиять на маршруты пешеходов?

Медный Всадник и купол Исаакиевского собора вдалеке



Во-первых, я эмпирически построил радиусы видимости. Они зависят от всей доступной информации о достопримечательности и превращают ее в один из четырех радиусов: small 30 метров, medium 100, large 250 и huge 350 метров.

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

Тип видимости определяется по правилам:

  • Точечные (т.е. заданые OSM-типом Point) объекты это Small видимость, это обычно мелкие монументы и стрит-арт
  • Но точечные и с тегом historic это Medium, т.к. это часто крупные монументы на высоких постаментах, типа того же Медного всадника
  • Области менее 20*20 метров (way или relation) это Medium
  • Больше — Large
  • Если у объекта есть тег height (высота в метрах) или building:levels (этажность), то при высоте более 50 метров он считается Huge — это как раз сделано специально для Исаакия и прочих больших соборов и зданий, видимых издалека

Но возникла проблема: в условиях плотной застройки исторического центра СПб наивный подход с радиусами не работал, так как реальная область видимости какого-нибудь стоящего в глубине двора храма была намного меньше, по сути он виден только с участка улицы строго напротив него. Пришлось заняться построением честных (ну почти) полигонов видимости.

Церковь Святой Екатерины стоит в глубине двора, окруженная домами со всех сторон:



Сперва надо было определиться с препятствиями. Ну тут все просто, я взял и прочитал из OSM данных все полигоны с тегом building. Это будут полигоны, блокирующие нашу видимость. Затем написал простой наивный алгоритм построения полигона видимости точки с помощью трассировки лучей. Высокая точность мне там ни к чему, хватило десятка лучей на точку. Поначалу я не мудрствуя брал центроид геометрии достопримечательности, но это давало не лучшие результаты для протяженных (длинных и узких) зданий. Поэтому в дальнейшем для больших достопримечательностей я стал брать три точки — центроид и две наиболее удаленные от него и друг от друга точки на внешней границе. Почему я не стал строить видимость честно? Потому что если алгоритм построения области видимости точки тривиален (пускаем из точки лучи во все стороны, смотрим где они пересекли ближайшие препятствия, соединяем эти точки), то вот построить честную видимость ребра (и в итоге — полигона) уже гораздо сложнее (первое приходящее в голову решение — строить видимость двух концов ребра и объединять — очевидно неправильное).

В итоге получилась неплохая аппроксимация. Строит она неидеально, но для нужд пешеходной навигации такой точности нам достаточно. Единственная проблема — она не учитывает высотность зданий, т.е. любая мелкая будка нам перегородит обзор на пятиэтажную колокольню. Но тут уж ничего не поделаешь — OSM данные далеко не везде содержат этажность, да и строить объемы видимости в 3д гораздо сложнее. Хотя возможно я еще к этому вернусь.

Построенные полигоны видимости для этой и соседней церквей



Красота маршрута и как ее повысить


Итак, мы научились считать важность и видимость достопримечательностей и вроде бы стали строить неплохие маршруты. Во всяком случае это было так, пока я тестировал на центральных районах Санкт-Петербурга, имеющих очень высокую плотность красивостей на квадратный километр.

Однако стоило отойти чуть в сторону от центра, как внезапно алгоритм стал признавать свое бессилие. И построенный им маршрут стал совпадать с кратчайшим. Так как достопримечательностей в этих районах — кот наплакал, расположены они далеко друг от друга, поэтому при поиске пути по комбинированной метрике «красота + расстояние» вклад первого слагаемого оказывался околонулевым, в итоге алгоритм строил просто кратчайшие маршруты.

Конечно всегда можно было сказать «это не мы такие, это города у нас такие скучные», но это было бы не очень правильно. Поэтому я задался вопросом, как оценить построенный маршрут, и как можно его улучшить. Самое простое решение, сразу приходящее в голову — давайте удлиним маршрут, принудительно вставив в него крюк до какой-нибудь достопримечательности, оставшейся в стороне.

Теперь в случаях если а) общая сумма важности всех достопримечательностей маршрута на километр меньше некоей величины или б) пользователь сам выбрал построение максимально интересного маршрута мой алгоритм пытается его улучшить. Для этого строится изначальный маршрут, берется буфер вокруг него (его толщина определяется длиной, чем длиннее маршрут — тем более длинный крюк разрешается сделать), внутри этого буфера ищется несколько новых (еще не вошедших в маршрут) достопримечательностей со score>2 (мы не хотим делать крюки в километр к noname скверикам) и прокладываются новые маршруты от начальной точки к этой промежуточной цели, а от нее — к точке назначения. При этом дополнительно контролируется длина, в итоге мы должны получить маршрут не более чем в два раза длиннее кратчайшего пути между начальной и конечной точками.

Первая версия алгоритма (слева) оказалась бессильна найти что-то интересное и построила кратчайший маршрут. А вот версия с добавлением промежуточной достопримечательности (справа) включила в него ДОТ КВ-19, он находится в правом нижнем углу маршрута (на таком уровне зума его не видно, но сервис покажет его в списке и позволит найти на карте по клику на имени).



Тот самый ДОТ. Вообще в Купчино хватает подобных объектов, связанных с обороной Ленинграда, так как именно там проходили оборонительные рубежи города:



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

На практике пришлось столкнуться еще с некоторыми проблемами и странностями. Во-первых при наивной реализации буфера вокруг маршрута он «вылезал» за начало и конец. И часто получались ситуации когда маршрут шел мимо конечной точки еще на пару сотен метров. Или наоборот, шел в противоположную сторону от конца со старта, и только затем возвращался к нужному направлению. Хоть такие маршруты и позволяли осмотреть больше достопримечательностей, пешеходы очень не любят когда их уводят сильно в сторону от цели. Пришлось сперва «выколоть» на навигационном графе область вокруг конечной точки (сделать ребра непроходимыми при поиске пути к промежуточной), а затем и вовсе строить буфер не вокруг всей линии маршрута, а лишь начиная с определенного расстояния от старта и заканчивая на определенном расстоянии до конца.

Второй проблемой были маршруты с возвратом по той же улице. Не знаю как вы, а я терпеть не могу возвращаться тем же маршрутом, которым я шел вперед. Всегда предпочитаю идти другой дорогой. И поэтому от своего алгоритма я пытаюсь добиться того же поведения. Правда вот с этим пока проблемы. В качестве первой попытки я сделал так, что все ребра (кроме последнего), участвовавшие в пути от старта до промежуточной точки, вырезаются из графа при поиске пути от промежуточной до конца. Это позволяет избежать возврата ровно тем же путем, но не защищает от почти такого же пути — например возврата по другой стороне той же улицы. Вырезание всех ребер в окрестности же часто делает нахождение обратного пути и вовсе невозможным. В общем тут еще остается над чем подумать. Хотя в этом плане мой алгоритм уже работает лучше, чем некоторые из конкурентов, которые на эту тему просто не задумываются и легко строят тупиковые ответвления маршрута.

Примеры работы


Текущая реализация находится на sightsafari.city
Там пока почти нет геокодера (есть OSM-ный, но он довольно плохо работает), поэтому точки лучше ставить прямо на карте, правым кликом или долгим тапом. Ползунок отвечает за тип маршрута: крайнее левое положение ищет кратчайший, без учета достопримечательностей, дефолтное третье дает неплохой баланс, крайнее правое — всегда пытается улучшить маршрут и часто генерирует довольно замысловатые пути.

Вот пара примеров. Маршрут от дома где я раньше жил до метро Московская по мнению Яндекса, скучный путь через дворы и небольшие улочки:



А вот маршрут по мнению моего алгоритма. Проходит через край парка Победы, мимо исторического музея, мимо Чесменской церкви и дворца, по площади Дома Советов мимо фонтанов и крутой сталинской архитектуры.



Чесменская церковь. Я и сам обычно делал небольшой крюк чтобы пройти в этом месте, а не через скучные дворы хрущевок напрямик.



Вот еще пример: кратчайший маршрут от Смольного (где находится администрация СПб) до станции метро «Площадь Восстания» идет по Суворовскому проспекту. Но там рядом, чуть в стороне, есть красивый Таврический сад, куда мой алгоритм предложит вам заглянуть.



Заключение


Пока сервис работает только для Санкт-Петербурга, Пушкина и Смоленска (зоны с доступной навигацией отмечены красным пунктиром). Еще многое предстоит улучшить, а для этого в первую очередь нужны отзывы. Так что пробуйте, пишите отзывы на маршруты (там есть кнопочка над списком достопримечательностей), надеюсь оно кому-то будет интересно и полезно.

По запросу могу подключить новые города — Москву, пожалуй, побоюсь, сервер треснет (хотя можно не всю, а только центр, конечно), вот что-то поменьше можно. Главное чтобы для этого региона был более-менее качественно размечен OSM, ну и чтобы были какие-то достопримечательности, с чем у маленьких городов все не очень интересно (в том же Смоленске, который я добавил для одного своего тамошнего товарища, все интересное кучкуется в 2-3 местах города, и обойти их можно безо всякой умной навигации).

UPD: добавил Москву в пределах ТТК, Уфу, Калининград, Нижний Новгород, Киев, Казань, Ростов-на-Дону, Благовещенск, Саратов, Пензу, Одессу, Минск, Екатеринбург, после чего на сервере кончилась память. Так что заявки на новые города временно не принимаются, пока я не придумаю как это дело оптимизировать.

UPD 2: Геокодер OSM, как я уже написал, работает плохо (знает мало адресов, требует структурированных данных на входе), поэтому лучше ставьте точки на карте вручную, а не вводите адрес. В дальнейшем что-то надо будет с этим придумать, но все нормальные геокодеры (например у Яндекса) стоят слишком ощутимых для хобби-проекта денег, а в бесплатной версии имеют слишком ограничивающую лицензию (например можно отображать результаты поиска только на карте самого Яндекса).

UPD 3: Завел паблик в ВК где можно будет выкладывать свои идеи, запросы новых городов и где я буду писать об обновлениях сервиса https://vk.com/public168028574

Комментарии (187)


  1. staticlab
    21.06.2018 13:23

    Пока сервис работает только для Санкт-Петербурга, Пушкина и Смоленска

    Эх, а я хотел Барселону посмотреть...


    1. JediPhilosopher Автор
      21.06.2018 13:35

      Я могу добавить любой город (достаточно в админке вбить координаты области и дождаться скачивания OSM данных), но поскольку все оно еще разрабатывается — имеет смысл делать это только для тех городов где есть кто-то кто сможет протестировать и отправить фидбек. Если вы живете в Барселоне, или просто хорошо ее знаете — могу добавить.


      1. staticlab
        21.06.2018 14:00

        К сожалению, ни то, ни другое.


      1. StalkerSVR
        21.06.2018 16:34
        +1

        Когда я руками планировал маршрут в Барселоне, то ориентировался по panoramio — если где то снято много фотографий, то туда надо идти и смотреть на месте.


        1. AlexeiZavjalov
          21.06.2018 21:04

          Спасибо за идею! Я до этого использовал инстаграм, но это не очень удобно.

          UPD: Оу… panoramio закрыли


          1. passerby
            22.06.2018 09:55

            У Flickr есть аналогичное API. Фоток там ощутимо меньше, но в данном случае это не важно.


        1. IrakliBlokhin
          22.06.2018 16:14

          Кстати, да, panoramio в этом смысле очень помогало. Большое скопление фото всегда указывало на интересность места. Жаль, что проект не выжил.


        1. SLashRU
          22.06.2018 20:27

          Я периодически пользуюсь стареньким: sightsmap.com


      1. CAJAX
        21.06.2018 17:40
        +1

        Живу в Париже и хорошо его знаю. Готов потестировать.


    1. Beaglz
      22.06.2018 01:49

      Можно попробовать с Ingress походить в режиме миссий. Открывается много потаенных достопримечательностей даже в знакомых местах. Работает по всему миру.


      1. murzilka
        22.06.2018 16:52

        Зашёл в комменты проверить, написал ли кто-то про ингресс.
        Сервис можно использовать как пособие для построения баннеров.


  1. exehoo
    21.06.2018 13:33
    +1

    Здорово! Вот бы к такой штуке еще прикрепить карту дорожных работ и раскопок коммунальщиков =)


    1. JediPhilosopher Автор
      21.06.2018 13:36

      Крупные дорожные работы (например стройка новой развязки или моста) обычно в OSM есть и сейчас учитываются как негативные зоны. А мелкие типа «ищут трубу под тротуаром» обычно не сильно влияют на пешеходов. Да и я не знаю где данные о них взять.


  1. Cka3o4nik
    21.06.2018 13:46

    Очень хочется центр Москвы!
    И ещё идея — делать вело-версии. По Европе можно вообще строить длинные маршруты через несколько городов


    1. JediPhilosopher Автор
      21.06.2018 13:49

      Ну я не велосипедист, так что мне трудно судить о качестве маршрутов. Вон яндекс недавно выкатил веломаршруты, да и в OSM есть велонавигаторы, так что этого добра вроде и так хватает.

      Москву сейчас добавлю, вроде в пределах ТТК она не так много весит.


      1. Cka3o4nik
        21.06.2018 13:56

        Я имею ввиду веломаршруты, интересные в плане исторических и природных достопримечательностей. Сейчас подумал, что это будет интереснее именно как маршруты от города к городу. Ну а внутри каждый уже сам может выбрать наиболее интересные достопримечательности.
        Москвы в пределах ТТК, думаю, всем хватит надолго :)


  1. dmsav
    21.06.2018 13:56
    +2

    Идея класс, реализовано круто.
    Кроме OSM, вы рассматривали, например, Викимапию или другие карты?
    Было бы круто добавить Уфу. Здесь вообще нет никаких карт по историческим памятникам дореволюционной Уфы, и поэтому люди о них не знают и гуляют по двум-трем местам.


    1. JediPhilosopher Автор
      21.06.2018 14:12

      Нет, использовал только OSM. Мне кажется они наиболее полны, просты и доступны, плюс я и раньше с ними уже работал.

      Уфу добавил, буду благодарен если вы там потыкаете маршруты, оцените их адекватность и попишете отзывы на них.
      Вот какой-то маршрут, делающий интересный крюк к скверам и Театральной площади вместо кратчайшего.
      sightsafari.city/?from=54.729098,55.945671&to=54.727086,55.928658&ratio=1.5


      1. dmsav
        21.06.2018 14:21

        Благодарю Вас!
        Обратную связь обязательно предоставлю.


      1. F0iL
        21.06.2018 14:21

        Маршрут составился довольно неплохо, интересно то, что на перекрестке Ленина-Пушкина, в сторону Заки Валиди есть приятная пешеходная зона вдоль зданий университета и библиотеки (закрашено на карте зеленым) с кучей необычных скульптур. Алгоритм не повел туда, потому что большой крюк и придется разворачиваться и топать обратно по тому же маршруту, или же просто оно на OSM как надо не отмечено?


        1. F0iL
          21.06.2018 14:22

          Извините, провел курсором по точкам на машруте, и увидел пункт «улица Ленина» там, указывающий как раз на этот участок. На карте не совсем очевидно это просто рисуется как-то.


        1. JediPhilosopher Автор
          21.06.2018 14:24

          Скиньте мне точные координаты в личку, я погляжу. Или оставьте лучше отзыв на маршут (там кнопочка есть над списком достопримечательностей), у меня тогда в админке будет виден и сам маршрут, и все дебажные данные по нему, и ваш комментарий.
          Вообще могло быть и то, и другое. Бывает в OSM плохо размечено, да, бывает что крюк большой. Еще есть проблема что не везде отмечены пешеходные переходы, в итоге OSM навигация строит очень большой крюк до следующего перехода чтобы вернуться назад, хотя он там не нужен.


          1. F0iL
            21.06.2018 14:31

            Я смотрел маршрут по вашей ссылке выше)


      1. F0iL
        21.06.2018 14:30

        Попробовал проложить маршрут от 54.742721, 55.961046 к 54.732079, 55.943220, а потом подвинул курсор на соседний дом (54.742888, 55.959581) и проложил еще раз оттуда до той же конечной точки. Во втором случае маршрут субъективно гораздо интереснее — по пути красивая лютеранская церковь во дворах, большой парк с озером и аттракционами, фонтаны (кстати, я так и не понял, фонтаны тоже учитываются при прокладке маршрута в летний сезон, или это совпало так?), и крюк до нулевого километра.
        Хотя, казалось бы, разница в стартовых точках всего пара десятков метров.


        1. JediPhilosopher Автор
          21.06.2018 14:39

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


  1. F0iL
    21.06.2018 14:18

    Этот функционал еще бы в Maps.me интегрировать (благо, они тоже используют OSM), и цены бы не было.


    1. JediPhilosopher Автор
      21.06.2018 14:22

      Ну АПИ у меня есть, если кого-то из разработчиков картографических сервисов такая система заинтересует — я всегда готов обсудить сотрудничество. Пока что мы только в рамках разрабатываемой в ИТМО системы визуализации всякой городской информации его использовали, но в принципе можно добавить куда угодно.


      1. Shpakov
        21.06.2018 15:27

        Может быть попробуете предложить свою разработку 2GIS? У них отдельные карты для городов (скачал и смотри offline), карты с отмеченными достопримечательностями (с возможностью добавить отзыв и прикрепить фотографию) и как они говорят, детальные пешеходные маршруты. Добавить Ваш функционал — будет совсем хорошо.


        1. JediPhilosopher Автор
          21.06.2018 15:35

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


          1. slonpts
            23.06.2018 03:10

            Крутая штука!
            Но вы правы, сделать — только полдела, нужен еще кто-то, кто донесет это до масс.

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

            Кейсы
            1. Человек идет в незнакомое место, у него оказалось свободных 15-30 минут, он хочет прогуляться по красивым местам. Вряд ли будет ставить новое приложение либо заходить на сайт. Если в приложении, которым он пользуется (2GIS, MAPS.ME, OsmAnd+ и т.д.), такой режим будет — воспользуется.

            2. Человек узнал о новой клевой штуке. Поиграет полчаса и забудет. 10% будет возвращаться раз в 3 месяца, 1% самых упоротых будет возвращаться регулярно. На сайт, скорее всего, зайдет больше людей, но в целом кейс не очень интересный.

            3. Человек едет в путешествие/командировку незнакомый город и живет там на окраине, по пути к центру хочет посмотреть на интересные места. Скорее всего зайдет на свой любимый сайт с картами либо в свое любимое

            Способ подачи функциональности
            Вообще, посмотрев на количество приложений для навигации (например, в Google Play нажать «Similar» для MAPS.ME), более-менее понятно, что надо встраивать функциональность в существующие сайты/приложения.

            Если встраивать в приложение, которое умеет строить короткий маршрут оффлайн, то ради чуть более красивого маршрута требовать интернет будет несколько странно. Т.е. придется работать на Android / iOS.

            Метод, как я понимаю, заточен на данные OSM, так что для переноса на другую основу потребуется масса усилий.

            По совокупности мне кажется, что самое перспективное — перенести метод на какой-либо телефон и попытаться его в таком виде продать кому-нибудь приложений, использующих OSM.

            С кем общаться
            Вот тут можно посмотреть, какие приложения используют OSM:
            wiki.openstreetmap.org/wiki/Android
            wiki.openstreetmap.org/wiki/Apple_iOS
            Некоторые нацелены на автомобилистов, их сразу отсекаем.

            После очень быстрого взгляда кажется, что наиболее перспективным является MAPS.ME (популярна и нацелена в т.ч. на пешеходов). Вопрос в том, готова ли владеющая им MailRu.Group заплатить денег за такое улучшение.

            На хабре есть их блог, где они отметились постами про Maps.me:
            habr.com/company/mailru/blog/262185
            habr.com/company/mailru/blog/262903
            habr.com/company/mailru/blog/266693
            habr.com/company/mailru/blog/331052

            Можно попробовать написать авторам постов. Автор поста по последней ссылке — руководитель проекта Maps.me, наверное, стоит общаться именно с ним.

            Судя по датам, на хабр заходит редко, зато на ФБ часто (легко гуглится по нику).

            Если будете общаться с ними или какой-нибудь другой фирмой — напишите потом, чем дело закончилось, если несложно?


            1. exehoo
              23.06.2018 06:27

              кому и когда подобная функциональность может быть нужна и с кем стоит начать общаться.

              Думаю, кровно и массово заинтересованы туристы(п.3). В чуть меньшей степени — недавние клиенты грузоперевозчиков и риэлторов (мигранты, новоселы). Мамы-бабушки и учителя тоже, думаю, оценят


        1. Samoglas
          22.06.2018 13:29
          +1

          Люто плюсую, чтобы данный функционал попал в какой-либо проект типа 2gis, ну а в MAPS.ME уж "сам Бог велел".
          Устал проводить интенсивные профилактические мероприятия с водителями маршруток города-героя, гордо принимающего ЧМФ2018, куда меня занесло..(я: Скажите пожалуйста, сколько стоит проезд туда то? Водитель: Ты щито, в первый раз едешь и далее в таком духе. На конечной интенсивно и энергично об'ясняю как надо работать и чего то я подустал от такого спорта.
          Решил ходить по волгоградским буеракам как можно чаще. Открыл дивные пустынные места, где незнакомые люди со мной здороваются. Некоторые предлогают подвезти, это в Волгограде то…
          Так вот 2гис в дачном массиве бесполезен, он не знает троп. А вот here WeGo (Navtec) знает чёрт знает какие тропинки. Иногда ведь достаточно не каких либо особенных достопримечательностей, а возможность выйти посмотреть сверху на ближайшее озерцо, все проходы к которому застроил дачами архитектор-брат того маршрутчика.


  1. matacob
    21.06.2018 14:20

    Добавьте, пожалста, Нижний Новгород.
    С удовольствием потестирую


    1. JediPhilosopher Автор
      21.06.2018 14:38

      Добавил


      1. matacob
        21.06.2018 14:39

        Спасибо


  1. lggswep
    21.06.2018 14:38

    Классная идея! Можете добавить город Турин (Италия). Протестирую на выходных


    1. JediPhilosopher Автор
      21.06.2018 15:30

      У меня уже память на сервере заканчивается, а это я еще не все российские города запрошенные загрузил =). Так что на иностранные думаю ресурсов уже не хватит. Я как-то не ожидал, сколько окажется заинтересованных людей из других городов.


      1. lggswep
        21.06.2018 17:09
        +1

        Очень жаль) Желаю Вам развития и выход на другие страны! :)


      1. Tantacula
        21.06.2018 20:55

        А почему используете сервер, а не создадите приложение для телефонов, которое будет закачивать данные прямиком на клиента? Это позволит кроме экономии ресурсов также удерживать клиентов, держать их в курсе обновлений, зарабатывать копеечку на рекламе, сохранять маршруты (для гидов), добавлять свои достопримечательности (через ваш срвер добавлять данные в osm, если это можно делать по апи в нормальном формате со всеми данными в корректном виде, а не как попало) и вообще ввести кучу потенциальных фишек.


        1. JediPhilosopher Автор
          21.06.2018 21:02

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


  1. protectman
    21.06.2018 14:41

    Очень круто ) Может потому что я такого никогда не видел, но для меня как junior программиста, это классно :) Тоже кстати родной город Санкт-Петербург поэтому претензий нет. На самом деле, если еще поработать над этим сервисом, можно сделать хороший продукт, главное идеи, а их как ты заметил много) Расширение например, те же города, например Рим, добавляй не только для тех кто может протестировать, а для всех(ну, конечно, на сколько это возможно, а если невозможно, то нужно поискать пути решения ) Но перспектив масса, я думаю ты загорелся этой идеей. Еще одним нюансом служит то, что многим удобнее открывать приложение, поэтому тут тоже можно потрудиться, возможен offline режим, не у всех же на телефонах есть интернет, а оффлайн режим это как бонус. Еще есть пару вопросов, сколько ты это делал?) и просто интересно на каком уровне программирования ты находишься?)


    1. JediPhilosopher Автор
      21.06.2018 14:45

      Приложение я сделаю, но я больше бэкенд и веб-разработчик, андроидом занимался не очень много, поэтому начал со знакомого — с веб-версии.
      С добавлением новых городов проблема — там пока все хранится в памяти, а не в БД, а память не резиновая. Думаю еще пару городов можно добавить, а вот потом начнутся проблемы.
      Оффлайн режим сделать не очень просто, так как он думаю будет сильно тормозить на медленных устройствах из-за большого количества операций с геометрией (поиск пересечений маршрутов с полигонами видимости объектов). Возможно в будущем удастся это дело оптимизировать (в GraphHopper можно предрасчитать навигационный граф, что должно ускорить поиск пути).
      Сделано оно где-то за месяц по вечерам, первая версия вообще за выходные слеплена. Про опыт — у меня уже 10 лет опыта разработки, в основном на джаве, на первую работу устроился в 2008 году.


      1. kreo_OL
        21.06.2018 14:51

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


      1. protectman
        21.06.2018 15:23

        там пока все хранится в памяти, а не в БД

        так сделай в БД, всё невозможное — возможно. Что на счет добавить людей к этому проекту? (расширение имеет смысл). Только выбирай людей, которые не просто хотят что-то делать, а которые видят в этом проекте недостатки, которые горят идеей.
        Я вообще не вижу смысла работать на кого-то, если у тебя есть идеи, то почему бы не продвигаться самому и давать людям то, чего им не хватает? Желаю тебе успехов в этом проекте :) всем нравится, это хорошо


        1. JediPhilosopher Автор
          21.06.2018 15:27

          Так где этих людей взять-то? Все это пока делается мной в виде хобби. Денег платить зарплату еще кому-то у меня нет. Брать людей «на энтузиазме» — у меня довольно негативный опыт подобной работы (когда я делал игру мечты свою), люди быстро приходят и так же быстро теряют энтузиазм и уходят, в итоге я больше трачу времени и сил на введение их в курс дела и координацию, чем получаю сделанной ими работы (про это вообще отдельную статью можно написать).

          Так что если не получится найти способ монетизации — я так и буду его потихоньку пилить в свободное время, с соответствующим темпом.


          1. protectman
            21.06.2018 17:01

            Я бы мог что-то сделать простое для твоего проекта бесплатно, потому мне не нужны сейчас деньги, а вот опыт нужен. Да и вообще я никогда не работал в команде, буду рад спонсировать тебя новыми идеями и разбираться в чем-то новом ). Так что если ты дашь задание, буду копаться, разбираться и не требовать от тебя времени и сил на внедрение в курс. Да, я тоже делал игру своей мечты, до сих пор в разработке, забросил ее, так как считаю это бессмысленным. Миру нужны инновации, а не игрушки, нужен прогресс. Если бы все делали игры, то кто бы двигал человечество вперед?) Если, что я говорю про игры, которые не разработаны в научных целях и не направлены на улучшение человека.
            Про способ монетизации, тут лучше посмотреть опыт других разработчиков, у которых тоже не было ее) Про людей да, отдельную тему можно сделать, каждый человек индивидуален и ты не знаешь уйдет он или нет.


            1. JediPhilosopher Автор
              21.06.2018 17:04

              Ну игры тоже нужны. Без отдыха люди не смогут продуктивно работать.

              Насчет остального в личку отписал.


  1. kreo_OL
    21.06.2018 14:47

    Супер приложение!
    Есть возможность добавить Благовещенск?


    Опенсорс не планируете? По возможности попробовал бы помочь. Особенно в части андроид приложения.


    1. JediPhilosopher Автор
      21.06.2018 15:04

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

      Благовещенск добавил. Правда город-то небольшой, и там не так много интересных маршрутов можно построить, которые отличаются от кратчайших. Но вот например маршрут от вокзала к пристани с заходом в парк к памятникам.
      sightsafari.city/?from=50.287151,127.543294&to=50.250430,127.554978&ratio=1

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


      1. kreo_OL
        22.06.2018 04:49

        Приложение актуально тем что может производить расчеты на устройстве, а не сервере, что снизит на него нагрузку, а тут одним апи не обойтись. Хотя надо глянуть.
        Как вариант кстати сохранять в бд уже построенные маршруты и и по запросу отдавать уже построенные. Для сокращения базы сделать допущения при котором маршруты считаются одинаковыми (типа точка пути на 10-100 метров отличаются, по факту разницы ноль), ну а так же можно хранить эти маршруты еще и отрезками, что из них составлять маршрут. Это уберет одну из нагрузок на сервер — расчет видимости объектов, они уже будут рассчитаны.
        И ввести устаревания маршрута, например если он в базе без изменений уже месяц, то обновить. Вдруг новые объекты добавились.

        Ну а так, жаль что опенсорса не будет, но лично меня больше интересует получить работающий продукт, так как давно искал что то такое, а самому писать, не додумался xD
        В 2гис можно попробовать привлечь внимание например упомянув их тут или написав на прямую пользователям хабра работающих там, например rumyash писал о том как они делали карту для карты) или kab делал статью о добавление расписания общественного транспорта, думаю их отделы где то рядом с теми куда вам попасть надо, можно попробовать)


        1. kreo_OL
          22.06.2018 05:01

          А еще у 2гис вроде как бесплатный апи.


          1. JediPhilosopher Автор
            22.06.2018 11:39

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


  1. asmm
    21.06.2018 14:56

    А можно режим чтобы посмотреть все достопримечательности? И ещё бы возможность нескольких точек маршрута.


    1. JediPhilosopher Автор
      21.06.2018 15:05

      Можно нажать неприметную ссылку «load sight areas» внизу. Оно загрузит все доступные области карты. Это отладочная информация, она не оптимизирована и работает долго (15-20 секунд на загрузку), но в итоге можно получить представление о том, что и где находится.

      Плюс можно в любой точке карты кликнуть правой кнопкой и нажать «что здесь». Оно покажет список объектов поблизости, с областями влияния которых пересекается эта точка.

      Несколько точек сделаю потом, это важный функционал, да.


  1. kolabaister
    21.06.2018 14:59

    Отличный сервис, очень интересный и полезный. Живу в Питере, проверил многие знакомые маршруты, совпадает)
    Вопрос только в использовании. В принципе, мобильная версия как таковая отсутствует, но так, как открывается, вполне юзабельно. Но представим, что не открывается, или вообще у человека нет смартфона. Что делает человек? Открывает сайт, строит маршрут, возможно, выписывает какие то ключевые точки. Было бы здорово, если бы сайт умел генерировать что то вроде маршрутного листа. (на перекрестке с улицей Прямой поверните на улицу Косую, увидите памятник неизвестному городскому планировщику.) Может быть, туда можно даже добавлять фотографии ожидаемых достопримечательностей, или выгружать его в pdf, скажем.


    1. JediPhilosopher Автор
      21.06.2018 15:09

      Мне тут уже предложили делать GPS треки, доступные для скачивания и экспорта в офлайн-карты.
      Ну и мобильное приложение я конечно тоже сделаю. Сейчас-то это скорее концепт и демо-версия. А статья на хабре — проверка гипотезы о том что такой сервис будет востребован.

      Про фотографии — пока можно разве что с википедии их утягивать, но тег wikipedia есть у сравнительно небольшого количества объектов в OSM (и они ссылками в списке достопримечательностей отражаются)


      1. kolabaister
        21.06.2018 15:16

        При должной рекламе и дружелюбном оформлении проект, мне кажется, вполне имеет возможность жить, и даже за какую-то небольшую подписку. Я бы пользовался.
        Еще одно пожелание. Как я обычно гуляю, когда не имею конкретной цели — иду куда глаза глядят, то есть без направления. Можно добавить режим хаотической прогулки. Допустим, я готов пройти сегодня километров 10, указываю начальную точку, и сервис показывает интересный маршрут.


  1. kot5150
    21.06.2018 15:00

    Геокодер OSM, как я уже написал, работает плохо (знает мало адресов, требует структурированных данных на входе)

    А попробовать альтернативные геокодеры нет планов?
    Например: habr.com/post/277043


    1. JediPhilosopher Автор
      21.06.2018 15:10

      Я пока видел только коммерческие. Тот же гугл или яндекс — работают отлично, но по бесплатной лицензии их нельзя использовать в своем сервисе, а платная стоит много денег.

      Потыкал парочку OSM-ных, но все они как-то плохо работали. Эту вот ссылку не видел, спасибо, изучу.


  1. evnp
    21.06.2018 15:04

    А подключите Ростов-на-Дону пожалуйста


    1. JediPhilosopher Автор
      21.06.2018 15:20

      Добавил


  1. astono0
    21.06.2018 15:07

    Добавьте, пожалуйста, Киев

    Давно хотелось такое приложение


    1. JediPhilosopher Автор
      21.06.2018 15:20

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


      1. Bringoff
        21.06.2018 19:54

        Львов бы тоже было неплохо


      1. astono0
        22.06.2018 13:39
        +1

        Спасибо!

        Опишу свои пожелания:
        1. Находить точку по адресу / текущему местоположению
        2. Возможность строить маршрут без указания конечной точки — маршрут в итоге должен вернуть тебя в начальную точку
        3. Возможность искать маршрут с минимальным количеством переходов дороги (режим пройтись прогуляться)


        1. JediPhilosopher Автор
          22.06.2018 14:47

          Переходы дороги это боль, да, текущая реализация GraphHopper почему-то очень любит скакать туда-сюда через дорогу. Надо только придумать как именно их вычленять из карты. По-моему далеко не все они помечены специальными тегами.


  1. xFFFF
    21.06.2018 15:11

    Давно искал что-то подобное)


  1. ekhramch
    21.06.2018 15:14

    Очень интересно, спасибо.
    Добавьте пожалуйста Казань — интересно будет потестить ваш алгоритм.


    1. JediPhilosopher Автор
      21.06.2018 15:21

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


  1. eugenebb
    21.06.2018 15:36

    Несколько идей:

    1. Несколько альтернативных вариантов маршрута

    2. Категории предпочтений — типа памятники, парки и т.п., алгоритм добавляет коэффициент веса

    3. Ограничение по времени прогулки, т.е. что-то типа +15 минут от кратчайшего или 2 часа на на весь случайный маршрут с возвратом туда же откуда вышли

    4. Голосование за достопримеча?тельность с добавлением полезной информации — типа точки откуда лучше всего видно, историческая справка, даты постройки, категории, ссылки на ресурсы в сети, собственные комментарии, диапазоны времени для посещения для наилучшего эффекта (если имеет значение)

    5. Поделиться маршрутом с комментариями

    6. Планировщик на несколько походом с максимизацией просмотренного

    7. Если есть данные по криминальной статистики за последние N дней для близлежащего района, добавить возможность учитывать в построении маршрута


    1. JediPhilosopher Автор
      21.06.2018 15:50

      1. GraphHopper такое умеет из коробки, но это требует доработок по фронтенду, когда-нибудь сделаю.
      2. Мне кажется слишком сложно — заставлять пользователя какие-то предпочтения вводить. К тому же все это такое очень нечеткое, субъективное, сам пользователь думаю не сможет сходу сказать, что для него лучше — 500 метров по парку или 200 метров мимо красивого собора.
      3. Такое пока есть в виде что построенный маршрут не должен быть более чем в 2 раза длиннее кратчайшего (исключение — крайнее правое положение ползунка, там 2.5 раза).
      4. Мне кажется что это довольно бесполезная фича. В том же maps.me она есть (рейтинги, отзывы) но ей похоже никто особо не пользуется. Во всяком случае ни разу там не видел проставленный рейтинг в тех городах, куда брал эти карты.
      5. Шаринг маршрута да, сделаю в каком-нибудь виде.


      1. eugenebb
        21.06.2018 16:20

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

        2. Я думаю что если категории достаточно общие — типа «архитектура», «памятники» или «прогулка в парке», то как раз пользователю понятно что он хочет сейчас сделать.

        4. Понятно что специально никто не будет искать эту опцию, но мне кажется что если сделать удобно то может взлететь, т.е. турист дошёл до места и хочет сфотографировать, то если сделать возможность начать съёмку непосредственно из карты/приложения, т.е. оно у него уже открыто и по координатам видно что находимся рядом с достопримеча?тельностью, то добавляем кнопку «Сделать фото» и после того как фото сделано, выводим окно с голосованием и т.п., то многие без проблем ткнут в пару пунтков.


  1. glycol
    21.06.2018 15:39

    Интересный сервис получается. Из предложений — возможность сгенерировать круговой маршрут из точки в ту же точку, с максимальным количеством интересностей, например, по времени. Было бы удобно для туриста, приехал в центр, есть, к примеру, 2 часа свободного времени, выставил круговой маршрут на 2 часа и пошел смотреть. Или возможность генерировать маршрут на заданное время с окончанием на любой станции метро


    1. JediPhilosopher Автор
      21.06.2018 15:51

      Я делал сервис ориентируясь на себя самого, а я обычно приезжаю в город с какой-то целью. И поэтому мне нужен маршрут от точки А в точку Б (например от отеля до места проведения конференции или до вокзала), но так чтобы по пути еще что-то посмотреть.

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


  1. k102
    21.06.2018 15:46

    Отличная штука, спасибо!
    Единственное что немного не так — вывод списка достопримечательностей: до него нужно скролить и интерфейс несколько разваливается (FF 60.0.2).

    скрин
    image


    1. JediPhilosopher Автор
      21.06.2018 15:52

      Ну я в основном бэкендер. Фронт не моя специализация, уж как смог налепить на jquery+bootstrap, хех. Было бы здорово если бы кто-то смог помочь мне с макетом страницы, я просто не могу придумать куда приткнуть этот (потенциально довольно длинный) список достопримечательностей, чтобы он и половину карты не загораживал, и в экран при этом влезал.


      1. k102
        21.06.2018 16:00

        Да просто местами их поменять,

        типа такого:
        image


        1. JediPhilosopher Автор
          21.06.2018 16:13

          Хм, да, это вариант.


          1. RaphZak
            21.06.2018 19:42

            А у меня вылез такой баг, панелька залезает на кнопки масштабирования, и есть только "+", кнопки "-" не видно


            1. k102
              22.06.2018 11:31

              Ага, легко исправляется одним стилем)


              1. RaphZak
                22.06.2018 11:38

                А не подскажите как это сделать?
                Хотя на самом деле это неправильное решение, должно сразу работать (за исключением вот таких моментов тестирования), без всяких стилей.


          1. artemerschow
            22.06.2018 12:16

            ещё у div#map поменяйте position с absolute на fixed, чтобы не уезжала карта при прокрутке


  1. Transmission
    21.06.2018 16:05

    Интересно, вашу карту можно использовать для соревнования Бегущий город (но это читтерство, конечно). =)


    1. JediPhilosopher Автор
      21.06.2018 16:05

      Мне кажется в этом нет смысла, ведь на БГ нужно пробежать быстрее всех, т.е. нужны именно кратчайшие маршруты, а не самые красивые. Разве нет?


      1. Transmission
        22.06.2018 17:53

        И это тоже, но можно подсмотреть все достопримечательности, если ты конкретно не уверен, куда нужно идти. Это для категорий с загадками.


  1. ramzes2
    21.06.2018 16:05

    Добавьте Черкассы (Украина), пожалуйста. Не думаю, что много места займет.


    1. JediPhilosopher Автор
      21.06.2018 16:12

      Добавил.


      1. ramzes2
        21.06.2018 16:34

        Спасибо. Оставил немного коментариев.


  1. alxkor
    21.06.2018 16:05

    Добавьте Саратов, пжл


    1. JediPhilosopher Автор
      21.06.2018 16:11

      Поставил качаться.


  1. Layner
    21.06.2018 16:21

    скачиваем Open Street Map карту, парсим ее

    А если взять количество фото на квадрат, фото которые выкладывают туристы, и узнать самые посещаемые и красивые места/районы. Например с panoramio, правда этот сервис не работает сейчас, но фотки с него показываются в google earth, а значит можно выдрать json меток с координатами.


    1. JediPhilosopher Автор
      21.06.2018 16:22

      Да, это тоже вариант, у нас в ИТМО на эту тему делают всякие исследования. В принципе источников данных-то можно придумать много разных. Найти бы время и силы их все добавить =) Ну и еще нюансы бывают со всякими лицензионными соглашениями, не все разрешают свои данные использовать произвольным образом в сторонних продуктах.


  1. arTk_ev
    21.06.2018 16:31

    Продались бы 2gis. Нужный сервис, особенно для питера


    1. JediPhilosopher Автор
      21.06.2018 16:37

      Да я бы с радостью, только кто б купил =)


    1. vlivyur
      21.06.2018 18:36

      Где ДубльГИС, а где OSM. Зачем местечковый сервис, когда можно по всей планете?


      1. JediPhilosopher Автор
        21.06.2018 19:20

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

        Так что есть альтернатива — либо автоматически весь мир, но на троечку, либо хорошо, но с ручной доработкой и только ограниченная территория.


        1. hMartin
          21.06.2018 22:13

          В этом плане, как раз у 2гис хорошо. У них есть сотрудники, которые ходят ногами и проверяют точность карт, соответствие размещенных в здании организаций, качество асфальта.
          Я написал на хабропочту автору одного из постов в блоге 2гис, может им понравится и они к вам обратятся :)
          Мне сервис будет полезен, так как я тут начал увлекаться фотографией и мне такой маршрут как раз идеален для тренировки скиллов


        1. vlivyur
          22.06.2018 00:29

          А это не какому-то одному человеку решать. К этому надо прикручивать систему оценок от пользователей, у maps.me как раз есть такое (у ДубльГИСа тоже есть). Ну и кому-то нравятся стриженые газоны, а кому-то заброшенные парки, кому-то одинаковые квадратные деревья, а кому-то разросшиеся в разные стороны лохматые кроны, кому-то нравится в одиночестве гулять, а кому-то толпа народа нужна. Через один парк по длинной стороне проходим, а второй — вдоль короткой стороный забора, да и то не с той стороны (маршрут через Летний сад строится если точки слева и справа от него, но не по стороне набережной и сразу на Марсово поле выводит, и кроме Чижика и вазы смотреть не на что и ограда скучная — все скульптуры на севере).
          И у них обоих сейчас есть маршруты для прогулок внутри приложения.


        1. kreo_OL
          22.06.2018 04:54

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

          В нагрузку можно еще использовать список с интересными местами от гугла, они сделали его открытым.


  1. vvivanov
    21.06.2018 16:47

    Отличная идея. Много гуляю по Городу по следующему маршруту: Летний сад, Ботанический сад, Каменный остров, Смоленское кладбище, набережная лейтинанта Шмидта, Коломна, Семенцы, Пески, Смольный собор и снова Летний сад. Получается как раз на один световой день — 42 км. Хотелось бы иметь возможность создания кругового маршрута и ограничение по расстоянию или длительности.


    1. JediPhilosopher Автор
      21.06.2018 16:48

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


      1. vvivanov
        21.06.2018 16:53

        Цель — 42 км, а это марафон и вроде как даже армейский стандарт пешего перехода, но могу ошибаться. Но и кроме того, часто хочется просто пройтись без мыслей, но ловить удовольствие от окружения.
        Дополнительная хотелка — это прикрутить размещение солнца по маршруту. Те, чтобы заранее представлять где будет солнце, когда идешь по маршруту. Это позволит не щуриться и понимать удачное время для съемки пейзажа и архитектуры.
        Может быть было бы еще интересно размещение мест отдыха по пути. Интересные кафе, туалеты, парки.


        1. JediPhilosopher Автор
          21.06.2018 17:00

          Тут все упирается в то, откуда эти данные брать. Если парки в OSM есть и у меня используются, то всякие кафе и прочее туда обычно не попадает или является очень устаревшим (заведения открываются и закрываются быстрее, чем обновляются карты).

          У меня пока разве что идея для монетизации была в виде рекламы — подпихивать в список достопримечательностей иногда проплаченные ссылки на заведения по близости. Но это так, идеи.


      1. kreo_OL
        22.06.2018 04:55

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


  1. Bedal
    21.06.2018 17:04

    хм, а почему бы не попробовать пробочный сервис наизнанку? Пробки определяются по информации о скорости движения машин, на которых работает данный навигатор. Пусть приложение тупо собирает, с какой скоростью перемещаются пешеходы с этим запущенным приложением. Отсеять поездки легко по скорости, а торговые точки по их, торговых точек, спискам (для чего можно законтачить с двагисом, к примеру или любым иным картосервисом). Voila! Водим людей туда, куда и другие люди любят заходить. Проблема особо интересных мест решается точечным вводом данных, а не массовым парсингом кривых карт. Да и карты можно использовать любые, яндекс или гугл в руки.

    Идея же парсинга по кривым начальным условиям мне представляется вполне абсурдной.


  1. arTk_ev
    21.06.2018 17:22

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


  1. John_Go
    21.06.2018 17:55

    Видел подобное рассказывали на TED Talks. Идея очень похожа
    youtu.be


  1. Teomit
    21.06.2018 18:09

    Добавьте, пожалуйста, Одессу. Спасибо.


    1. JediPhilosopher Автор
      21.06.2018 18:56

      Добавил


  1. z17
    21.06.2018 18:32

    Очень круто!


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


    1. JediPhilosopher Автор
      21.06.2018 18:50

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


      1. z17
        21.06.2018 19:50

        именно) https://play.google.com/store/apps/details?id=ru.travelpath


        ещё, что кажется важным, просто данных в OSM не достаточно — никому не нужны просто названия. Ты приезжаешь в незнакомый город, видишь точку "Собор имени Ивана Иванова", и ты знать не знаешь что это за фигня и стоит ли тратить время чтобы туда дойти.
        Нужна своя база с картинками, текстами и всем-всем-всем.


        1. JediPhilosopher Автор
          21.06.2018 20:20

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

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


          1. z17
            21.06.2018 20:32

            Думаю в партнёрстве с какими-нибудь туристическими агентами возможно покрыть всё крупное сразу.


            Я думал что стандарт — длинное нажатие. Поэтому там установка точки это длинное нажатие на карту
            В целом же по дефолту маршрут строится от текущей точки, но её можно удалить.
            Или адреса вводить в поля.


            Но то что я тут объясняю интерфейс, означает что нужно над ним ещё поработать)


            1. JediPhilosopher Автор
              21.06.2018 20:35

              Длинное нажатие изменяет целевую точку. Но я так и не нашел как изменить исходную. Можно кликнуть в поле ввода, но тогда можно только ввести адрес, нельзя точку на карте поставить.

              Но то что я тут объясняю интерфейс, означает что нужно над ним ещё поработать

              Это да, у меня тоже часто люди не понимают как адрес ввести. Юзабилист из меня тот еще.


              1. z17
                21.06.2018 20:44

                Нажатие на точку начала или конца — удаляет точку. После этого можно её поставить в другом месте.
                Ещё их можно просто двигать, зажав)
                Если ввести адрес — выбранный адрес преобразуется в точку. Там отдельные поля и для начала, и для конца.


          1. staticlab
            21.06.2018 22:28

            Можно попробовать распарсить Википедию на предмет интересных мест. Координаты они там указывают. Есть описание, фотографии, даты. По объёму статьи и количеству интервик можно примерно определить значимость.


            1. z17
              22.06.2018 13:03

              Авторские права, всё такое. Это проблема, если мы говорим о полноценном продукте, а не о поделке на коленке.


              1. staticlab
                22.06.2018 13:08

                Пожалуйста, не путайте авторские и смежные права.


                https://ru.wikipedia.org/wiki/Википедия: Текст_лицензии_Creative_Commons_Attribution-ShareAlike_3.0_Unported


                Содержимое Википедии, хотя и защищено авторским правом, предоставляется вам по свободной лицензии Creative Commons Attribution-ShareAlike 3.0 Unported. Это значит, что вы можете копировать, редактировать, использовать в коммерческих целях и брать за основу для создания других произведений содержимое Википедии.


                1. z17
                  22.06.2018 13:13

                  хм, не знал, спасибо! Судя по всему, можно напарсить, ссылаясь на источник


        1. vlivyur
          22.06.2018 00:35

          В OSM у типично туристических мест есть тег wikipedia — это про тексты. Так же есть mapillary и openstreetcam — это про картинки, но там обычно только дороги фоткают.


          1. vlivyur
            22.06.2018 14:07

            А ещё есть тег image.


  1. olegreen
    21.06.2018 18:48

    В Германии подобный сервис есть у Komoot.
    Прокладка маршрута между точками с учетом достопримечательностей
    для велосипедистов/пешеходов/бегущих
    Они тоже работают на основе OSM. А монетизация — покупка регионов карты или всего всего.


    1. JediPhilosopher Автор
      21.06.2018 18:50

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


      1. olegreen
        21.06.2018 19:41

        Да, посмотрел — там достопримечательности (различные POI) показываются на карте, их можно добавлять в маршрут и маршрут соответственно пересчитывается.
        Достопримечательности дополнительно оцениваются людьми.
        Маршрут можно сделать приватным или открытым для комьюнити.
        Есть уже довольно большое количество маршрутов, которые можно брать за основу.
        Интелектом тут похоже является комьюнити:)


  1. kulgan
    21.06.2018 19:12

    Отличная задумка! А могли бы вы добавить Минск, а то хотелось давно что-то такое попробовать в плане карт. Буду благодарен! Похожу потестирую приложение :)


    1. JediPhilosopher Автор
      21.06.2018 19:17

      Добавил


  1. giperball
    21.06.2018 19:12

    Добавьте Минск, пожалуйста.


    1. JediPhilosopher Автор
      21.06.2018 19:17

      Добавил


  1. asash
    21.06.2018 19:27

    И Эдинбург, пожалуйста. Интересно посмотреть как выглядит наш город.


  1. 1cubik
    21.06.2018 19:45

    Добрый вечер. Штука достаточно интересная, соглашусь с предыдущими комментариями. Было бы очень полезно, чтобы можно было не только строить маршурт между двумя различными точками, но ещё и в случае, если они совпадают. Простые примеры:
    1) Туристы — основная Ваша целевая аудитория. Много приезжает жить в центр города и маршрут строят от отеля. И, понятное дело, этот же отель будет последней точкой.
    2) Жители города. Например, я езжу в центр на машине/метро/автобусе и, как правило, это одна и та же остановка/точка. Особенно в случае с машиной — когда хочется погулять с детьми и показать им город.


    1. Candis
      22.06.2018 12:18

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


      1. 1cubik
        22.06.2018 12:26

        То, о чем Вы говорите, уже есть как для всей России(очень неплохая коллекция маршрутов пешком/на транспорте), так и для Петербурга в частности. Различие только в том, что представленный сервис строит маршрут между выбранными Вами точками =)


        1. JediPhilosopher Автор
          22.06.2018 14:46

          Фиксированные маршруты строят многие города для себя (у нас в Питере этим занимается Комитет по туризму, например). Но у них есть определенные проблемы:

          • Они устаревают и очень редко обновляются (раз в несколько лет)
          • Их обычно не более 5-7 штук на город, соединяют они только основные достопримечательности в центре
          • Качество иногда бывает странным (например недавно в СПб к ЧМ по футболу построили маршрут, идущий через промзоны на Лиговке, что вряд ли понравится туристам, SightSafari же предлагает обойти этот район)


  1. Dywar
    21.06.2018 19:56

    Можно попробовать.

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

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

    Маршруты должны проходить мимо кафе, общественных остановок, метро и т.п.


    1. F0iL
      21.06.2018 23:35

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


      1. JediPhilosopher Автор
        22.06.2018 00:00

        Проблема в том что большинство подобных сервисов имеют довольно сильно ограничивающие лицензионные соглашения. Пользоваться для личного удовольствия вы ими можете, а выдирать из них данные для использования в своих приложениях — нет.
        К тому же TA и подобные обычно фокусируются на крупных, основных достопримечательностях города. Такие и так обычно есть в OSM.


        1. 1cubik
          22.06.2018 12:36

          Когда-то тоже занимался подобной темой, с парсингом геотегов в соцсетях, с интеграцией различных сервисов и ТД.
          Наиболее подходящим в плане количества объектов, как ни странно, выбрали открытые данные России, затем делали сортировку данных как раз по геотегам в соцесетях. Подсчет количества геотегов не является сбором данных как таковым, скорее — аггрегированная статистика. Но нужно читать соглашения, да.


  1. dead_undead
    21.06.2018 19:57

    Интересно, а можно строить маршрут в обход сильно людных мест? =)
    В принципе от смольного через таврик почти тот случай.


    1. JediPhilosopher Автор
      21.06.2018 20:12

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


      1. grimich
        22.06.2018 00:40

        Есть пара компаний, которые занимаются оценкой шума в городах, и строят маршруты с учетом шума, могу поискать


      1. dead_undead
        22.06.2018 22:23

        Хм, людность — может какая нибудь Strava? У них есть heatmap с уличным разрешением. Правда там все таки не пешеходы.


  1. USBLexus
    21.06.2018 20:21

    По поводу промзон вопрос тоже неоднозначный, например аэродром НАСА, заводы АМД и Интелл и т.д. для меня даже поважнее многих исторических памятников.


    1. JediPhilosopher Автор
      21.06.2018 20:24

      Ну тут приходится ориентироваться все-таки на массовые случаи, а наиболее типичная промзона в России — какие-то мрачные полуразвалившиеся корпуса, интересные только любителям заброшек всяких, куда обычный человек заходить не захочет. Там обычно неудобно идти (узкие тротуары или их вообще нет), грязно, пыльно, нет нормального освещения, не на что смотреть, грузовики мимо ездят и т.п. Плюс зачастую там закрытая территория, неправильно размеченные проходы, запертые ворота и прочие прелести.


  1. Moskus
    21.06.2018 21:11

    highway=unclassified, а не unspecified.
    А leisure=park вообще не предполагает никакой растительности. Парк скульптур — тоже парк, в понятиях OSM.
    Советую также принимать во внимание start_date — позволяет кое-как отфильтровать исторические сооружения от всякого новодела.

    А вообще, конечно, предпочтения у туристов и т.п. — разные: например, новодельный архитектурный мутант — дворец в Царицыно, «Измайловский кремль» или «дворец Алексея Михайловича» (уродские лужковские аттракционы в Москве) одним неприятно видеть, а другие от них в восторге.


    1. JediPhilosopher Автор
      21.06.2018 21:31

      Ну тут уж приходится ориентироваться на некоего «среднего туриста» без конкретных предпочтений. Потому что настроить на каждого в отдельности нереально, и давать людям заполнять опросник на 20 страниц перед началом использования — значит потерять аудиторию.


      1. Moskus
        21.06.2018 22:23

        Усреднение абсолютно всегда эквивалентно «для всех, но одинаково фигово».
        Наличие нескольких базовых профилей никого не отпугнёт.


  1. myauurizzio
    21.06.2018 22:16

    Маршрут по Минску
    От станции метро Тракторный завод и до проходных автозавода ( 53.889191, 27.614801 — 53.862458, 27.655699 ) почти полностью повторяет построенный мной вручную по гуглокартам и реально пройденный ногами.
    И проход через парк и через дворы к грузовику на Кулешова (там нет перехода, кстати).

    Единственный нюанс — рядом с точкой старта стоит трактор Беларус-2, который глупо пропускать, раз уж маршрут обходит столько технопамятников :)


    1. staticlab
      21.06.2018 22:40

      Вдогонку про Минск: кажется, здание Национальной библиотеки в приложении само по себе не считается достопримечательностью.


      1. JediPhilosopher Автор
        22.06.2018 00:05

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


        1. staticlab
          22.06.2018 00:36

          Как вариант ещё, можно подгрузить достопримечательности, перечисленные на Викивояже, например: https://ru.wikivoyage.org/wiki/Минск. Хоть там их не так много (например, не указаны минские граффити), но базу получится расширить. Для СПб вообще пришлось перечень делить на районы, но зато также указаны многие красивые здания.


          1. JediPhilosopher Автор
            22.06.2018 00:43

            Интересно, я про такой сервис даже не знал. Сколько еще этих вики-чего-то-там уже понаделали. Надо будет посмотреть, спасибо.


          1. vlivyur
            22.06.2018 00:56

            Wikivoyage уже сейчас можно пробовать в бете OsmAnd.


  1. Vampik
    22.06.2018 00:00

    Тестовый маршрут по Москве от 55.760833, 37.579873 до 55.769356, 37.596438 проложен прямо внутри территории Зоопарка. Вероятно есть какие-то затруднения с учетом территорий, на которые нет свободного доступа?


    1. JediPhilosopher Автор
      22.06.2018 00:01

      Да, в OSM есть путаница с доступом к таким территориям. Есть куча разных вариантов тегирования для всяких ворот и проходных с ограниченным доступом, на это уже много кто жаловался. Надо будет видимо запретить использовать все такие участки, где явно не прописано access=public


      1. vlivyur
        22.06.2018 00:45

        Или fee=yes


        1. JediPhilosopher Автор
          22.06.2018 00:46

          Этот тег мало где стоит. Как раз на тех участках, на которые жалуются пользователи, его нет.


  1. nickbug
    22.06.2018 00:11

    Каким ветром Траволту в Купчино занесло? :)


  1. grimich
    22.06.2018 00:38

    Нижайший поклон! Я этот сервис уже лет 5 жду :)
    Если нужна какая-то помощь не девелоперская — готов подключаться и помогать.


    1. JediPhilosopher Автор
      22.06.2018 00:47

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


  1. forcam
    22.06.2018 03:51

    Вот это бабахнуло Хабрануло) отличный проект, вы бы добавили где-то кнопочку, народ бы помог с местом на жестком диске, у вас все равно скорее всего не будет столько сколько надо будет всем.
    0) Ну наверное стоит сделать не просто карту, а какой-то минимальный обрамочный интерфейс и рекламку пустить можно целевую и фоточки если будут с описанием, смотреться будут лучше, наверное)
    1) Я как тупой юзер зашел и сходу не разобрался как вообще работает система. Т.е. какой-то минихелпик, минидемка, хотя бы 1 раз, как все устроено — мастхэв. Ну или кнопочка «посмотреть как работает сервис»
    2) Оптимально внести возможность добавлять фотки достопримечательностей или интересных мест, что бы человек понимал куда идет и будет ли там ему интересно, многие уже по фото понимают такие вещи, надеюсь я не одинок в этом)
    3) К фотке не плохо было бы прикладывать какой-то анонс или историю этого места или просто описание, хотя бы коротенькое, я думаю тех кто расставляет метки не затруднит сделать фотку и разместить пару строчек и туда же ссылку на вики если таковая существует
    4) Построение нужно сделать, что бы можно было корректировать маршрут, т.е. вот туда хочу, а сюда не хочу
    5) В идеале добавить возможность добираться транспортом или для начала просто просить указывать какой именно транспорт ходит в конкретной точке, не всегда нужно знать как именно проехать, иногда достаточно знать — на чем) Ну, а в самом идеале, что бы можно было выбрать, вот тут пройду пешком, вот тут проеду автобусом, а тут самолетом пролечу(шучу).
    Успехов в проекте, идея отличная, будем пользоваться на ура)
    Но я думаю вам уже кое какая компания захочет наступить на пятки, уж больно «вкусный» проект)


    1. JediPhilosopher Автор
      22.06.2018 14:50

      С интуитивностью интерфейса у меня вечно беда =).

      Фотки и отзывы — довольно сложная отдельная задача, требующая много сил и ресурсов (от хранения до модерации), которых у меня нет. Так что пока будет только так как есть — ссылка на вики, если она проставлена в объекте. Возможно в дальнейшем прикручу поиск в каких-нибудь популярных туристических сервисах, но тут надо изучать лицензионное соглашение их.


  1. Enmar
    22.06.2018 08:48

    Спасибо за статью!
    Очень интересно.
    И спасибо за добавление Пензы, обязательно протестирую.


  1. kvant0n0
    22.06.2018 09:41

    Это очень круто, спасибо за статью и за инструмент!
    Огромная просьба, добавьте Новосибирск! Обратную связь обещаю.
    Прошу как краевед и разработчик 5 штук экскурсий по Академгородку: izi.travel/ru/rossiya/putevoditeli-po-novosibirsk


    1. JediPhilosopher Автор
      22.06.2018 12:17

      Сейчас на сервере память кончилась, временно новые города я не добавляю. Сегодня может найду что там можно выпилить чтобы ее освободить и попробую добавить.


    1. JediPhilosopher Автор
      22.06.2018 12:24

      Вроде подужал там все, влез еще и Новосибирск. Чую скоро краудфайндинг надо будет открывать на новый сервер.


  1. MOTORIST
    22.06.2018 10:19

    Очень интересный сервис. Частенько бываю в Питере, отвлечься от московской суеты. Обязательно протестирую. Успехов и развития!


  1. Aracon
    22.06.2018 10:21

    Есть такая международная игра «Бегущий Город», как раз про помещение всяких интересных и, зачастую, малоизвестных мест в своем и в чужих городах. Задания всех игр вместе с адресами выкладываются на сайте проекта. Все эти адреса по сути — точки каких-то интересных мест, т.к. это главный принцип выбора точек для игры. Думаю, эти адреса могли бы быть как дополнительный критерий оценки интересности точек, тем более что за 15 лет проекта база уже довольно большая и для крупных городов покрывает далеко не только центр. Данные, в принципе, открыто лежат на сайте (по-моему даже с координатами), но по-хорошему лучше спросить разрешения на использование — думаю, для такого сервиса не откажут. Если что, знаю лично оргкомитет, т.к. мы в Казани делаем игры проекта.


  1. Spark9
    22.06.2018 12:17

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


    1. JediPhilosopher Автор
      22.06.2018 12:18

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


    1. staticlab
      22.06.2018 12:46

      написать про нее статью в вики в исторической перспективе событий

      Если эта подворотня действительно такая историчная, что статью на Википедии не потрут с обоснованием "Значимость не показана", то она действительно может быть достойна внимания.



  1. Zverik
    22.06.2018 12:22
    +1

    Прежде всего, отличная работа и увлекательная статья. Спасибо.

    По ходу чтения возникло несколько замечаний и вопросов:

    1. highway=unspecified — точнее, unclassified. Есть тег для «какой-то линии, похожей на дорогу» — highway=road, но его почти не используют.

    2. Разделительный газон, обозначенный leisure=park, — это ошибка, и хорошо бы её исправлять сразу при обнаружении.

    3. В западной части Васильевского острова полно зелёных зон помимо кладбища, это небольшие парки в один квартал и бывшая набережная залива, ныне набережная ЗСД. Правда, не все эти пространства можно определить. Но с добавлением кладбищ, конечно, согласен. Они великолепны.

    4. Насчёт рек, предлагаю реки (river и riverbank) вообще убрать, потому что они мало где живописны. Но притягивать к ручьям. Чем меньше водоём или водоток, тем красивее, нередко. Возможно, подойдут river БЕЗ riverbank.

    5. Ленполиграфмаш нужно исправлять. Вообще, это особенность OSM: при практическом использовании выявляется много косяков, которые никто не отслеживал, потому что до тебя никто на практике теги не использовал, кроме как смотрел на osm.org.

    6. Насчёт важности, я часто замечаю вместе с tourism=attraction теги attraction=*. Возможно, они помогут.

    7. link или url — правильно website или contact:website.

    8. Я бы ещё добавлял +1 за близость к какой-либо дороге классом не ниже residential или нахождение на площади. И +1 за отрисовку полигоном, а не точной. Конечно, это снизит рейтинг, например, цифирной башни (если она ещё жива), но в целом позволит упростить маршрут.

    9. Кстати, база данных достопримечательностей с вычисленными рейтингами полезна сама по себе. Как для валидации осмерами, чтобы они сами могли выявлять скрытые достопримечательности, так и для сторонних проектов, типа OpenTripMap. Может, настроишь ежедневную или еженедельную публикацию?

    10. Думаю, для парков радиус нужно ставить в 0, потому что какой смысл идти рядом? Часто всё интересное спрятано внутри.

    11. У amenity=place_of_worship часто не проставлена высота, но она большая, это тоже нужно учесть.

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

    13. Искусственное удлинение маршрута ещё более впечатляет, чем видимость лучами. Это очень круто.

    14. Можно узнать, сколько места и памяти требуется для построения маршрутов по Петербургу?

    15. Чтобы добавить в maps.me, нужно как можно большое кэшировать, но при этом чтобы данные занимали минимум места, потому что они скачиваются на телефон. Какие есть возможности для оптимизации? Насчёт «всего в памяти», в maps.me когда-то использовали OSRM для роутинга, который формально тоже требовал памяти, но всё обошлось.

    16. Приложение «Улицы прогулок» (WalkStreets) работало по принципу «у меня есть час времени, где бы погулять». Они строили кольцевой маршрут от местоположения пользователя. Сложно будет такое сделать?


    1. artemerschow
      22.06.2018 12:39

      Ещё промежуточные точки были бы тоже очень кстати.


      1. vlivyur
        22.06.2018 14:06

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


      1. JediPhilosopher Автор
        22.06.2018 14:30

        Промежуточные точки точно добавлю, но чуть позже. Я вообще по профессии бэкендер, фронт на джаваскрипте для меня боль и мучения, поэтому все фронтовые задачки занимают много времени. Особенно требующие чего-то более сложного чем «добавить одну кнопку». Поэтому и исключение территорий я вряд ли сейчас сходу сделаю, хотя это уже не раз просили.


    1. JediPhilosopher Автор
      22.06.2018 15:19
      +1

      Ошибки в OSM будем стараться править. Я напишу гайд о том, как править наиболее часто встречающиеся ошибки, и выложу у себя в свежесозданной группе (vk.com/sightsafari). Будет общественная польза и популяризация редактирования OSM. Сам-то я конечно не в силах исправить ошибки даже в своем городе, не говоря уж о всей стране.

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

      Вообще по поводу OSM — я не считаю себя большим знатоком и боюсь сам там дров наломать. Поэтому хорошо бы иметь консультации от опытных мапперов, что стоит исправлять, а что — нет.

      Про доступ к своей базе даже не думал. Можно и сделать как-нибудь. Но делать это просто так, абстрактно, смысла мало. Надо чтобы был хоть кто-то конкретный, кто этими данными сразу будет пользоваться.

      С парками — ну иногда не хочется делать большой крюк чтобы зайти внутрь парка (тем более что часто у нас там ограда и до ближайшего входа — километр), а пройти по дорожке вдоль него — норм. Я так часто мимо Парка Победы ходил от метро. Вообще у меня там у парков два веса — один для радиуса вне него, а другой, в два раза больший, для внутренностей (более 40 метров от ограды).

      Про видимость — это на самом деле важно. Потому что если объект стоит в окружении П-образного дома, то его «наивная» область влияния распространяется за пределы этого препятствия, и к ней притягиваются маршруты. В итоге человеку говорится что где-то вот тут рядом объект Х (так как линия маршрута пересеклась с областью влияния), но на деле этот объект отгорожен от него домом и по сути стоит на соседней улице, и идти к нему надо было совсем не так.

      По данным — файл с закешированной информацией о достопримечательностях для Питера, не сжатый, весит 60Мб (для сравнения сам OSM XML файл около 200 Мб). В zip-е 20 Мб. Там просто сериализованные стандартным джавовским механизмом (т.е. далеко не самым оптимальным образом, можно еще ужать) полигоны видимости + подсчитанная важность и немного других метаданных.

      Еще есть кеш GraphHopper (навигационный граф) на 20Мб, но он в maps.me вам не понадобится, у вас там навреное уже какой-то свой есть.

      Пока у меня все наивно грузится в память, но опять же для оптимизации можно как-то разбивать, грузить только нужную часть города, или хранить все в какой-нибудь БД с поддержкой spatial запросов. Придумать можно много чего, но я этим пока всерьез не занимался.


  1. kilometrix
    22.06.2018 15:14

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


    1. JediPhilosopher Автор
      22.06.2018 15:25

      Я видимо такие места просто выкину. Там где есть сомнения в наличии прохода (т.е. нет тега access=public) я буду принудительно удалять ребра из графа.


  1. ivkate
    22.06.2018 17:54

    Добавьте Харьков, пожалуйста!


  1. LynXzp
    22.06.2018 21:28

    1. Не на все POI которые находятся внутри других POI (парков) можно кликнуть, часто выбирается парк.
    2. Думал посмотреть что это за POI в списке слева — не так-то это просто: они не совсем по порядку идут, перемещая карту по экрану в хаотичном порядке, не все что есть в списке ведут на карту, не все что на карте есть в списке. Думаю список слева нужно иначе сортировать (находить ближайшую точку к POI на маршруте и сортировать по этим точкам).

    Получилось очень хорошо что пустые шумные улицы алгоритм обходит по дворам, т.к. там есть парки (хотя не всегда). И есть еще одна типичная болезнь навигаторов — отсутствие учета высоты, построил маршрут через любимую ловушку — 50м вверх, а потом вниз. А вообще все очень понравилось.

    P.S. «Обрадовала» такая «достопримечательность» как стихийное кладбище домашних животных.


    1. LynXzp
      22.06.2018 21:55

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

      И еще заметил что есть кроме разделительных газонов привлекающих внимания — разделительные «парки», ну т.е. реально «парк» шириной 20 метров, по обе стороны с шумными дорогами. Лучше чем ничего, но таки это сомнительные достопримечательности.


      1. JediPhilosopher Автор
        22.06.2018 22:05
        +1

        Эти «разделительные парки» — ошибка маппинга, неправильные теги проставлены. На карте они выглядят одинаково с газонами, вот мапперы и не запариваются. Можно конечно какой-нибудь эвристикой пытаться их отсеять (например «парки» шириной меньше 10-20 метров выкидывать).


        1. LynXzp
          22.06.2018 22:56

          Вот парк шириной 45м. Этот как раз довольно хорош, потому что там транспорта по бокам практически нету, но остальные часто уже и с большим движением. И где эта граница правильной разметки, парк или нет?

          Кладбище, да, отмечено в OSM (внутри парка), но лучше бы его отметить в санэпидемстанции (погуглил — больная тема).


    1. JediPhilosopher Автор
      22.06.2018 22:02

      С кликами да, что-то надо будет сделать.
      POI по идее идут по порядку следования по маршруту, другое дело что для протяженных объектов (парк, река) центр, на который наводится камера, может быть далеко от маршрута.

      А кладбище где такое? Оно в OSM отмечено?


  1. 3aBulon
    23.06.2018 17:34

    Покемон Го. В смысле там точки которые надо захватывать это достопримечательности, я «поигрывая» обошел кучу всяких интересных мест :)
    Может стоит добавить элемент игры или достижений в вашей реализации, добавлять фото пользователей, ставить плюсики, комментарии…

    p.s. еще я нашел баг. когда в списке достопримечательностей слева пролистываешь мышкой список так же скроллится карта.
    В Екатеринбурге добавьте Верхнюю Пышму и Среднеуральск, там есть на что посмотреть.
    Ну и нужно мобильное приложение, без него никуда :)


    1. JediPhilosopher Автор
      23.06.2018 19:05

      Про фото, плюсики и комментарии я уже выше писал, это довольно ресурсоемкая задача — нужно их хранить и модерировать — на которую нет сил и времени.
      Мобильное приложение тут уже несколько человек предложили написать на энтузиазме, посмотрим выйдет ли у них что-нибудь.