Всем привет! Меня зовут Александр, я разрабатываю ActiveTrip.me — cервис для построения маршрутов для пеших, велосипедных, водных походов и путешествий, а также для хранения и группировки интересных мест в виде меток.
О том, почему мы начали делать такой сервис, расскажем подробно в отдельной статье, а здесь осветим технические особенности.
Что уже можно делать в сервисе:
Строить автоматически маршрут по тропам и дорогам в зависимости от предполагаемого типа передвижения
Строить автоматически маршрут по рекам
Строить маршрут без привязки к дорогам (по прямой между двумя точками)
Строить несколько маршрутов на одной карте
Отмечать важные места на маршруте метками
Изучать местность благодаря разным картам и слоям
Шарить маршруты и скачивать в форматах GPX и KML
Скоро будет добавлена возможность совместного редактирования маршрутов (как в Figma).
Реализация такого картографического сервиса подразумевает решение нескольких базовых задач:
Работа с картами и слоями. Получение, хранение и раздача пользователям интересующих их карт и дополнительных слоев
-
Работа с геоданными. Предоставление пользователю инструмента для построения маршрута по точкам с указанием набора дополнительных ограничений, к которым можно отнести:
Выбранный способ передвижения: пешком, на велосипеде, на автомобиле, по рекам
Тип покрытия поверхности: асфальт, грунт
-
Расчет и предоставление данных о построенном маршруте. В частности о:
Протяженности маршрута
Типах покрытия поверхности, по которым проходит маршрут: асфальт или грунт. Важно для велосипедистов и внедорожных путешествий
Информации о высотах: график профиля высоты маршрута, суммарные набор и сброс высоты, максимальная и минимальная высота на маршруте и т.д. Важно для любого похода в горной местности
Прямое и обратное геокодирование. Поиск и перемещение пользователя к нужному участку карты по заданному названию места или адресу, а также автонаименование маршрута по заданным начальной и конечной точкам
Реализация пользовательского интерфейса для работы с геоданными: отрисовка подложек и слоев, работа с точками маршрута и метками (POI)
Хранение и предоставление пользовательской информации о маршруте: добавление изображений, комментариев
Помимо основной функциональности, довольно важным оказалось предоставление дополнительных интеграционных фич, позволяющих импортировать уже имеющиеся треки в сервис, а также делиться и публиковать полученные результаты. В частности, мы реализовали:
Возможность поделиться созданным треком через прямую ссылку
Импорт GPX и KML-файлов в сервис для последующего редактирования. GPX и KML являются форматами представления трехмерных пространственных геокоординат и основаны на XML-разметке. Большинство навигаторов и навигационных приложений (Garmin, Locus, OsmAnd) используют именно GPX-формат, однако некоторые (Maps.me, Organic Maps) поддерживают только KML-формат
Экспорт GPX и KML-файлов. После подготовки маршрута на нашем сервисе его можно загрузить в навигатор или в мобильное приложение и отправиться в путешествие
Существует множество способов реализации каждой из перечисленных выше фич в своем собственном картографическом сервисе. Как правило, можно:
Прибегнуть к использованию доступных SDK, open source модулей и библиотек, подняв свой собственный сервер
Воспользоваться специализированными сервисами, предоставляющими возможность интеграции через API
Построение маршрута
При попытке решения задачи построения маршрутов, мы обратились к известным open source решениям. Стояла задача справиться с минимальными затратами на вычислительные и финансовые ресурсы (на старте у нас был в наличии скромный VPS сервер с 1 ТБ HDD и 4 GB RAM).
Мы попробовали Valhalla, GraphHopper и BRouter.
Подробный сравнительный обзор перечисленных инструментов можно найти, например, здесь и здесь. Ниже поделимся личным опытом эксплуатации данных инструментов и упомянем, какое решение выбрали для реализации прототипа.
Valhalla
Сборка и запуск Valhalla с использованием собственных ресурсов подробно описаны в документации и состоят из двух шагов:
Необходимо развернуть подготовленный контейнер или собрать его самостоятельно из исходников через CMake. Исходники включают в себя http-сервис, а также набор утилит для препроцессинга геоданных
Далее скачать OSM-данные нужных регионов и скормить утилите препроцессинга
При развертывании процессинг отдельных небольших регионов осуществляется на упомянутом железе за десятки минут (для Швейцарии потребовалось 20 минут). Процессинг стран Европы и Азии отрабатывал несколько суток и, в итоге, завершился с ошибкой.
GraphHopper
Алгоритм запуска инстанса GraphHopper во многом аналогичен.
Процессинг занимает в разы меньшее количество времени (~12 часов на весь мир), но требует значительного количества RAM. В нашем случае это около ~128 ГБ на препроцессинг и ~64 ГБ для дальнейшей работы сервиса (хранит данные в памяти в сжатом виде).
Завышенные нами числа относительно упомянутых в документации появляются из-за необходимости работы не только с автомобильными маршрутами, но и пешими с велосипедными.
Альтернатива — использование уже развернутой версии GraphHopper Direction API. Бесплатная версия ограничена 500 запросами в день, что даже для реализации прототипа оказалось недостаточно.
Mapbox
Mapbox - широко известный поставщик пользовательских онлайн-карт, сервисов навигации и геопоиска для веб-сайтов и приложений.
Также Mapbox хостит и предоставляет возможность использования Valhalla в рамках Navigation API. В бесплатном варианте использования доступно до 100000 запросов в месяц.
Помимо непосредственно построения маршрута, Mapbox предоставляет информацию о построенном треке — протяженность и приблизительное время прохождения.Из функциональных ограничений — отсутствие возможности построения маршрутов по воде, а также возможности получения информации о типе поверхности, по которой проходит трек.
BRouter
BRouter - открытый движок для построения маршрутов. Представлен в виде исходного кода движка, сервера для развертывания на собственном железе и мобильного приложения.
Отличается гораздо более низкими требованиями с точки зрения ресурсов. Данные после препроцессинга занимают кратно меньше места, чем в случае с GraphHopper и Valhalla.
Возможно обновление данных на регулярной основе (на текущий момент BRouter поставляет свежие данные раз в неделю).
Из недостатков — строит маршрут медленнее, чем решения, построенные на базе Valhalla.
Из ключевых преимуществ — возможность построения маршрутов по воде.
Что мы в итоге используем для построения маршрута?
Для реализации прототипа мы решили ограничиться использованием Valhalla API, предоставляемое Mapbox, для построения маршрутов по земле, для воды использовали развернутый на собственном железе сервер Brouter.
Для оптимизации количества запросов к Mapbox (с учетом ограничения бесплатного использования) мы внедрили следующее:
Построенный пользователем маршрут мы сжимаем с использованием Polyline Encoding алгоритма и кешируем на своей стороне. При повторном обращении к созданному треку мы избегаем лишних вызовов к API и отрисовываем трек на основе сохраненных данных
При внесении модификаций в построенный маршрут мы перестраиваем лишь необходимый участок. Помимо оптимизации количества вызовов мы улучшаем пользовательский опыт, поскольку операция обновления маршрута в общем случае не идемпотентна: у нас нет гарантии, что для одинакового набора точек мы всегда будем получать маршруты идентичного вида
Расчет высоты
Поход к расчету высоты мы посмотрели у создателя проекта Nakarte.me:
Берем открытые данные о высотах из http://viewfinderpanoramas.org
Осуществляем препроцессинг данных о высотах с использованием утилиты и складываем их в БД
Поднимаем сервер, работающий с подготовленными данными. Сервер по переданной на вход нитке маршрута осуществляет интерполяцию высот на основе подготовленных данных и отдает результат
Данные скачиваются с данного сайта, препроцессятся с помощью утилиты и складываются в SQLite на собственном сервере
После этого с помощью программ из того же репозитория создается микросервис, который интерполирует высоты, используя полученные после препроцессинга данные
Геокодирование
Геокодирование используется для повышения удобства использования сервиса.
Прямое геокодирование — получение по заданному адресу координат географической точки. Обратное геокодирование, соответственно, решает обратную задачу: получение адреса или названия, расположенного в точке объекта, по указанным координатам.
На Хабре уже есть статья с детальным описанием процесса тестирования существующих сервисов, позволяющих решить данные задачи. После изучения условий использования и некоторого количества тестов мы остановились на следующих вариантах:
Для прямого геокодирования мы используем API от MapyCZ компании Seznam (в статье выше его не упоминают)
Для задачи обратного геокодирования мы используем Mapbox в рамках того же бесплатного лимита, что и для построения маршрутов
Для сервиса возможности обратного геокодирования полезны в двух сценариях:
Автогенерация названия маршрута по стартовой точке
Индексация построенных пользователями маршрутов для дальнейшего формирования каталога. Может быть полезно для реализации функциональности вида «найти все построенные треки пользователей, проходящие через село X». При этом относительно дешево решается проблема локализации — API принимает на вход набор необходимых языков
Импорт и экспорт треков
Загрузку и скачивание пользовательских треков мы поддерживаем в виде GPX и KML-файлов. Эти файлы можно использовать в мобильных приложениях и портативных навигаторах. Кроме этого, можно расшарить свой трек через публичную ссылку
Отрисовка маршрутов на карте
На данный момент отрисовка полностью основана на использовании библиотеки Leaflet. Из коробки поддерживается отображение слоёв карт в формате Tiled web map, отображение геометрических объектов, линий и маркеров.
Из возникших и еще не решенных проблем — Leaflet не справляется с одновременной отрисовкой большого числа маркеров (> 100 шт.). Пока обходим это через динамическое отображение в зависимости от масштаба, но такой подход уместен не во всех случаях.
Заключение
Сейчас мы с командой активно развиваем ActiveTrip.me и регулярно выпускаем обновления. Буду благодарен, если найдете время для тестирования и дадите обратную связь.
Также у проекта есть активное русскоязычное сообщество в Telegram. А новости о проекте мы публикуем в Telegram и VK.
Комментарии (49)
Akr0n
26.03.2022 15:16+1Получилось nakarte.me только с подложкой из osm-графа для автоматического построения маршрута? Только проблема в том, что в РФ очень редко есть хорошо размеченные тропами регионы и в большинстве случаев, автоматом оно построит какую-то откровенную чушь.
sunki
26.03.2022 23:27+1Для безкатегорийных походов вполне должно подойти. А для более сложных в любом случае придется рисовать самому. Поправьте если не прав.
virtusha
26.03.2022 15:49+2Отличная работа! Тоже нечто подобное делаю только еще и к 1Ске прикрутил...
А по поводу одновременного отображения "триллионов" маркеров на карте советую использовать отличный плагин Leaflet.markercluster. Работает довольно шустро даже в супер тормозной 1Ске
allex32 Автор
27.03.2022 03:16Спасибо за наводку! Проблема с отображением меток действительно актуальна, будем пробовать
Zed-nsk
26.03.2022 16:33+3Замечательно! Спасибо Вам!
Вопрос сразу и лоб. Как вы намерены извлекать прибыль из этого проекта? После того как AllTrails сожрал Gpsies, я практически перестал пользоваться подобными сервисами. Но оно мне нужно. Мы уже в конце апреля уходим в первую веломногодневку этого года. И их еще будет.
weart
26.03.2022 17:23+1Эх. Gpsies был лучший по построению маршрутов. Алтрейлс и даже комут и рядом не лежат до сих пор (
shirokolobov
26.03.2022 19:43+3Это одна из причин, почему мы начали делать ActiveTrip.me :) Я был очень активным пользователем GPSies.
weart
27.03.2022 11:12+1Проложил маршрут для будущего мототрипа. На первый взгляд все супер, буду юзать и рекомендовать. Респект)
shirokolobov
28.03.2022 01:02+1Шик! Если будут вопросы и пожелания, пишите в чат: https://t.me/activetripme_community_ru
shirokolobov
26.03.2022 19:38+4Спасибо! Монетизироваться планируем по модели фримиум — часть функциональности будет платной. Например, построение нескольких маршрутов на одной карте. Всю базовую функциональность планируем оставить бесплатной.
JediPhilosopher
27.03.2022 13:12+1Про монетизацию я могу поделиться немного своим опытом (негативным) на основании разработки проекта Sight Safari - прокладчика туристических маршрутов для осмотра достопримечательностей https://habr.com/ru/post/414433/
Платные приложения с картами в 2022 году это нонсенс, нет таких и никто не купит
Реклама на картах, как делают гугл и яндекс, невозможна. Нет таких рекламных сетей, которые бы вам выдавали метки для карты и начисляли бы деньги за клики по ним. Разве что лично договариваться с какими-то заведениями, но там покрытие и доход будет околонулевым.
У Яндекса, Гугла, Трипадвайзора и прочих есть апи для получения коммерческих объектов на картах, но за клики по ним деньги будут получать Яндекс и Гугл, а не вы.Платные фичи - на словах легко, на деле очень сложно сбалансировать их так, чтобы люди за них платили.
Баннерная и прочая реклама не работает из-за низкого ретеншена.
Главная вообще проблема таких сервисов - это то, что рядовому пользователю они обычно нужны 1-2 раза в год во время отпуска. Низкий ретеншен, низкая частота использования сразу отсекают значительную часть методов монетизации. Это не игры, куда человек заходит по несколько раз в день и где ему можно впаривать рекламу в обмен на бонусы по многу раз.
Платные фичи тоже не так просто продумывать. Обычно платным делают либо активное использование (ну там два проекта бесплатно, больше - за деньги), либо вот фичи. Но первое - это вообще не про карты для туристов (у большинства, повторюсь, это и так 1-2 раза в год). А какие фичи вы сможете придумать, которые можно вырезать в бесплатной версии но за которые люди будут готовы платить? Из удачного я пока видел только разные картографические подложки с высокой детализацией у Outdooractive. Все остальное какое-то очень сомнительное.
Вообще, если проанализировать текущее состояние на рынке - то все печально. Такое впечатление, что в интернет-туризме деньги есть только в бронях отелей и в покупке билетов. Ну еще чуть-чуть в авторских турах. Если проанализировать доступные разработчику туристические партнерские программы, то там вот только оно и будет. И оно видно по тому, что происходит:
ViewRanger помер и поглотился Outdooractive (который тоже непонятно как живет и монетизируется).
Map.me так и не смогли стать прибыльными, никакой маркетплейс туров и маршрутов их не спас, проект продан и по сути умер (карты не обновлялись уже давно, хоть приложение еще и работает).
Всякие сервисы продажи аудиогидов типа izi.travel уже банкротились и выживают тоже хз как.
Какая-то жизнь теплится в b2b сегменте, где крупные компании в сфере туризма могут попробовать интегрировать ваше решение в свои экосистемы. Например предлагать ваш построитель маршрутов гостям своих отелей, или тем, кто берет напрокат их самокаты/велосипеды/квадроциклы/что-то еще. Но там тоже все довольно узко, а учитывая, какой удар понесла туристическая отрасль из-за ковида и теперь всяких там спецопераций, непонятно, кто и сколько сможет и захочет вкладывать в такие необязательные фичи.
В общем, лучше розовые очки не надевать, а сперва все как следует проанализировать, чтобы не потратить годы на разработку и потом остаться без денег и понимания, как и на какие шиши проект дальше развивать.
shirokolobov
28.03.2022 01:48+1Спасибо вам большое, что делитесь опытом, с некоторыми тезисами согласен, с некоторыми нет.
По поводу удачных примеров: https://www.crunchbase.com/organization/alltrails-com/company_financials
С удовольствием бы познакомился и пообщался, напишу в личные сообщения :)
Zed-nsk
26.03.2022 17:05А расшареные маршруты других людей будут видны? В Gpsies это была отличная фича.
garbagecollected
26.03.2022 17:08+2Хорошая работа. Только одного не понял (может, невнимателен), а тайлы вы откуда берете? Сами рендерите или как? В моих руках Leaflet с соткой маркеров справлялся без особых усилий. А при масштабировании используйте стекирование. Если будете распечатывать карту до бумажного вида, прикрутите к углу карты нормальную линейку, а то не возможно работать с циркулем.
Линейка на бумажной карте
GeMir
26.03.2022 18:17+1По центральной Европе удобно водит Komoot. Как пешком, так и на велосипеде, к примеру.
Lezvix
26.03.2022 19:58Интересный проект! По поводу меток, в JS есть такая замечательная библиотека для 2D графики, как Pixi, работает очень шустро, на WebGL, и также существует её обёртка на leaflet, можно найти на гитхабе, там есть пример с миллионом меток.
allex32 Автор
27.03.2022 03:14Спасибо большое! Не знали, попробуем :)
bopoh13
28.03.2022 04:07Полтысячи точек без плагинов Leaflet легко подгружает https://github.com/incanus/PointTest/
Serge78rus
26.03.2022 21:31+1Попробовал ради интереса построить водный маршрут по р. Уксунйоки от ст. Райконкоски до устья. Чисто из интереса — просто я его хорошо знаю, да и начальную и конечную точку на карте найти просто, в отличие от горных районов. Маршрут действительно построился по реке, но вот что выдалось по этому маршруту:
Лоймольское — Республика Карелия
2 ч 14 мин
99.6 км
92 м (набор высоты)
201 м (сброс высоты)
Я понимаю, что это бета, но все же сразу возникли вопросы:- 2 ч 14 мин — это, как я понял, продолжительность. Если так, то на чем, простите, предполагается прохождение? На каяках, помнится, мы шли это порядка недели.
- Набор высоты 92 м при сплаве по реке вниз по течению — это как?
shirokolobov
28.03.2022 01:28+1Со временем беда, согласен. Посчитать его корректно при построении маршрута по воде, кажется, невозможно. Будем, наверное, дополнительно сообщать, что эти данные могут быть некорректны.
По поводу высоты ответ тут. Продублирую его:
С высотой вопрос непростой и важный.
Коротко: сейчас невозможно получить идеальные значения высот, врут (точнее, показывают с погрешностью) абсолютно все сервисы и приборы. Мы, как и все, для расчета высот используем модель, которая основана на SRTM, ASTER GDEM и других. И она не везде точна.
Подробно: хотел расписать, но вспомнил про уже написанный большой пост организаторами трейлраннинговых стартов (подписываюсь там под каждым словом): https://www.facebook.com/runxru/posts/2423496951256585
Какие мы видим возможные улучшения у нас:
Для загруженных с навигаторов треков, у которых есть данные о высоте, отображать именно эти данные, а не брать их с помощью модели.
Накапливать базу таких треков и корректировать расчет высот с учетом этой базы.
Если у вас есть предложения, то говорите, мы открыты)
adson
28.03.2022 15:01с "водой" можно очень просто поступить - длина пути / скорость течения = ЧХВ (чистое ходовое время). А уж с каким темпом будет идти группа - это их дело: может быть и несколько часов (если маршрут известен до каждого камня и слива - так часто бывает с каякерами), и несколько дней (начинающие, например, которые каждое препятствие подолгу осматривают, а потом еще и обносят). Другое дело, что скорость течения может измениться в зависимости от уровня воды...
Но здесь и с тем же велосипедом аналогия: летом на горно-лесной дороге у меня одна скорость, осенью, когда все лужи и колдобины замерзли - другая, зимой вообще третья
Serge78rus
28.03.2022 22:09+1Скорость течения меняется не только от уровня воды, она еще, как правило, очень непостоянна и на протяжении реки. Так что абстрактная «скорость течения» — это фикция.
Если же на маршруте есть препятствия, которые «подолгу осматривают, а потом еще и обносят», то вообще нельзя что-то прогнозировать по карте, а только по отчетам предыдущих групп (если это не первопрохождение).Akr0n
29.03.2022 01:53Да и с пешими тропами тоже все очень не просто. Автоматический расчет времени прохождения сделать практически нереально, это потребует чрезмерного количества работы со стороны разработчика по разметке участков и учёту всех нюансов.
Serge78rus
29.03.2022 03:18Согласен, пока есть хорошая тропа и нет серьезных перепадов высот и других препятствий, километры и часы хода еще можно сопоставлять. Как только равнина и хорошая тропа кончаются — оперировать можно только часами хода по опыту предыдущих групп.
alexwlpr
28.03.2022 16:35Тоже построил водный маршрут, который хочу летом пройти на САПе. Правда плавал на нём пока ещё один раз всего, но ничего подучимся.
Со временем полная беда. Расстояние 14.1 км, время 19мин. Даже на машине это будет проблемно сделать.
DurRandir
26.03.2022 21:37С временем прохождения маршрута печалька, даже maps.me считал лучше. К примеру, аккем-кучерла через кара-тюрек считает 4:18. Ну нет :)
shirokolobov
28.03.2022 01:22+1Есть такое, признаем. Но, увы, в горах невозможно рассчитать адекватное время — таких данных просто не существует. Наверное, будем сообщать, что время может быть некорректным для горных участков. Убирать его совсем не хочется, потому что на равнине оно более-менее показывается. В общем, точно требует доработки
DurRandir
28.03.2022 10:31Это по сути пешеходная тропа, аналог непальского трекинга — без лазанья и веревок. Там перепад высот сильно влияет — не только абсолютный уровень, но и градиент. Какое-то приближение можно по ним высчитать — для пешеходных участков это будет приемлемая точность.
wkudashov
27.03.2022 00:28Выглядит достаточно удобно. Буду пользоваться. За Strava Run Heatmap отдельное спасибо.
Было бы здорово, если бы в будущем расшаренные пользовательские точки (вода, стоянки, обзорные площадки) жили в отдельном слое. Это сильно поможет в построении маршрутов по новым районам.
Akr0n
27.03.2022 06:37OpenTopoMap, случайно, не забанили российские IP? Не работает ни на вашем ресурсе, ни на других.
karambaso
28.03.2022 02:13Скажите пожалйста, как у вас решается задача предотвращения произвольных действий от имени любого пользователя со стороны сторонних скриптов (например - карты)? Или пока просто считаете, что ваш сервис почти никому не нужен и на нём никто не будет заниматься тёмными делами? Но если вы выше говорили о монетизации, то денежная мотивация будет тем самым рычагом, который должен перевернуть ваше представление о безопасности ваших пользователей. Да и в бесплатной версии полный контроль пользователей сторонними скриптами вряд ли будет кого-то радовать.
allex32 Автор
28.03.2022 02:16Можете, пожалуйста, уточнить, что именно вы имеете в виду?
Если речь идет о защите от "ботов", то на этот случай у нас как минимум есть рекапча :)karambaso
28.03.2022 14:14Вы пускаете а браузер клиента чужие скрипты. Они идут со всем, что вы подгружаете со сторонних сервисов, например - с картами (для отрисовки карты). Эти скрипты контролируют неизвестные лица, видимо владельцы каких-то проектов с открытым кодом (а может и с закрытым?). Если владелец подобной библиотеки увидит возможность заработать, слегка поправив свой скрипт, он будет раскошеливать ваших пользователей.
Sutar
28.03.2022 15:01+1Как и во всём остальном интернете, собственно. За безопасность наших пользователей мы отвечаем своей головой и репутацией :)
По существу: за зависимостями следим, подозрительные активности мониторим.
karambaso
28.03.2022 20:18Ну голову-то, всё-таки, мы из под топора убираем :)
Зависимости стоит выносить в изолированные песочницы, например - в новую вкладку или во фрейм. Потому что мониторинг вам ничем не поможет, когда сторонний код постоянно обновляется и в этом потоке вы не отслеживаете вредоносные вставки (а вы их не отслеживаете, поскольку это очень трудозатратно).
Sutar
28.03.2022 23:10+1Когда сторонний код постоянно обновляется — да. Только вот фронтенд современный не так работает, если нормально настроен. Всё ведь или закоммичено локально или на лок-файлах и не обновляется без нашего ведома. Внешние скрипты — это разве что рекапчи да метрики всякие.
Карты — это загрузка картинок с другого ресурса, не скриптов. Скрипты, которые их показывают — под нашим контролем :)
Вопрос: а вы спрашиваете, потому что переживаете за себя или за нас? ???? Если есть какие-то более конкретные примеры, где в современных реалиях фронтендеры недостаточно бдят и к чему это приводит, был бы вам очень благодарен за них :) А если вы на примере нашего веб-приложения заметили, что что-то конкретное сделано неправильно, так рассказывайте же скорее, буду вдвойне благодарен!
karambaso
29.03.2022 11:11Локально хранить чужие скрипты можно, но перед этим желательно их проверить на вредоносность. Они, например, могут подгружать другие скрипты, которые уже будут с чужого сайта. Ну а делается это всё в благих целях - автоматизация деплоя без пересборки всей системы. Поэтому отключать такую фичу опасно (вдруг API какое-то у них изменится), но и не отключать - тоже.
Метрики, понятно, вам облегчают жизнь (экономят деньги на разработку аналогов), но в результате пользователь всё больше подвержен тотальному контролю со стороны "больших братьев".
Переживаю я за себя. Переживания такие - интересно узнать, как такую проблему решают другие, поскольку самому тоже приходится об этом думать. Ну а ваш сайт я не анализировал, просто вижу потенциал для развития, как моего, так и вашего.
Остальным же пользователям от того, что вы перечислите меры, принятые для сокращения угроз, будет понятно, на сколько вам можно доверять, а это тоже важно, даже для меня, хотя и не скажу, что я борец за бесплатное счастье для всех сразу.
unwrecker
Полезно, сохранил :)
Кстати, знаете, что если точку водного маршрута поставить не в реку, а крупный водоём типа озера, то маршрут прокладывает по прямой?
sikmir
Все верно, BRouter строит только по waterway, а если река проходящая через озеро не соединена в OSM прямой, то маршрут вообще не построится. К сожалению пока нет движков умеющих как-то более умно раутить по водоемам.
hrensgory
Navionics, iSailor - это не движки, конечно, это продукты.
Но роутить по воде, при условии, что у них есть данные по нужным участкам они умеют. Причём с учётом осадки судна.