niko-rybalko

Проект открытой навигационной программы.

По моему мнению, проект OpenStreetMap страдает из-за отсутствия хорошего навигационного приложения.
Качество карт OSM по Украине не уступает картам http://travelgps.com.ua/, но гораздо приятнее рисовать карты, зная что ты сможешь использовать их в своем навигаторе, а не только любоваться на ПК, подключенном к Интернету.
Можно конечно конвертировать карты под различные навигаторы вроде «Навител», «GisRX» и т. д. но к лицу ли свободную карту использовать на несвободных приложениях, которые к тому же, не лишены кучи недостатков?
Предлагаю решить задачу, требующую искусства программирования - написать навигационное приложений с открытым кодом.

Изложу свое видение программы:

  1. Приложение должно быть под «GNU General Public License»
  2. Мультиязычность – язык интерфейса должен добавляться копированием соответствующего языкового файла в каталог программы.
  3. Приложение должно строится на принципе «portable».
  4. Приложение должно быть написано на С++ с целью увеличения быстродействия.
  5. Приложение должно быть реализовано (возможно не сразу, и разными людьми) под распространенные платформы: WinXP, Linux, WinCE, Android и др. Поддержка мультиплатформенности должна быть обеспечена наличием в каталоге программы отдельных подкаталогов с исполняемыми бинарными файлами для различных ОС. Файлы данных должны быть общими. Должна быть обеспечена близкая функциональность версий на ПК и КПК, но пользовательский интерфейс приложения под каждую из систем должен быть выполнен в стиле данной ОС - в ином случае, из-за компромиссов, сильно страдает функциональность. Файлы исходного кода «вычислительной» части программы должны быть общими для различных ОС – это облегчает поддержку кроссплатформенности.
    Исходный код приложения должен иметь достаточное количество комментариев (~20% от объёма кода), чтоб недописанное одним мог доделать другой человек. Безусловно, все функции и структуры данных должны быть полностью описаны. Иначе, что толку от открытого кода – кто в нём разберется, например http://www.geopainting.com/download/mapedit_src_1_0_61_1.zip.
  6. Навигация должна осуществляться по векторным карте в бинарном формате – для уменьшения размера файла карты и ускорения обработки данных. Бинарная карта должна генерироваться конвертором из карт *.osm. Конвертор из *.osm должен распространяться вместе с навигационным приложением, иметь интерфейс командной строки (CLI) и быть кросплатформенным на уровне исходного кода.
  7. Желательно иметь онлайн сервис, генерирующий бинарный файл карты заданной пользователем области, без необходимости загрузки данных *.osm на компьютер пользователя – это сильно экономит трафик при генерации «большой» карты, например всей страны.
  8. Приложение имеет до ~16 экранных слоёв, накладывающихся друг на друга. Из них пять специальных:
    • навигационный слой - предназначен для навигационной бинарной карты. При навигации – линия маршрута отображается на этом слое. В случае если в навигационный слой не загружена карта – прокладка маршрута становится невозможной, но программа должна работать – отображать другие слои в соответствие с текущим местоположением.
    • слой треков – отображает все треки (*.gpx) из каталога tracks – чтобы видеть, какие треки существуют;
    • слой текущего трека – просто необходим для ориентации без движения и компаса;
    • слой POI - Points of Interest. В дословном переводе - точки интересов, достопримечательности. Под POI обычно подразумеваются все полезные объекты. Имеется возможность осуществлять поиск POI в т.ч. по категориям. Данные POI брать с http://www.mapcam.info/
    • слой Speedcam - изначально, этот тип POI подразумевал под собой камеры фиксирующие превышение допустимой скорости движения. Сейчас под speedcam подразумеваются дорожные объекты, представляющие какую либо опасность В отличие от обычных POI, speedcam имеют возможность предупреждения водителя о приближении объекту данного типа, а поиск speedcam не осуществляется. Данные speedcam брать с http://www.mapcam.info/

Любой слой может быть видимым или невидимым, а также регулироваться его насыщенность и прозрачность. Слои, за исключением специальных, могут добавляться и удаляться. Обычный слой может иметь следующее содержание:
• векторная карта в бинарном фомате;
• растровая карта OziExplorer (.ozf) – для сканированых карт;
• растровая карта Enhanced Compression Wavelet (
.ecw) – для аэрофотоснимков и космических снимков которую удобно получать склейкой в программе SAS.Планета.
9. Желательно, чтобы рендеринг векторной бинарной карты должен настраиваться при помощи таблицы стилей XSLT как в Osmarender.
10. Элементы карты должны скрываться и отображаться в зависимости от текущего масштаба как на http://www.openstreetmap.org/
11. Окна программы:
• Карта
• Манёвры
• Датчики
• Спутники

  1. Звуковые возможности приложения:
    Полноценная навигация требует звукового сопрвождения о предстоящем маневре, о Speedcam, о улице (дороге) на которую будем въезжать, о превышении допустимой скорости движения. Звуковая подсистема должна воспроизводить как готовые звуковые фрагменты (типа «поверните направо» или «контроль скорости»), так и синтезировать голосовые сообщения, используя стандартные механизмы голосовых движков, для проговаривания названий улиц.

Остальные элементы программы близки другим существующим программам GPS-навигации.

И?

get to work!

niko-rybalko, отлично. Где можно посмотреть код?

Я что-то не понял или нам второй ОсмАнд предлагают? Ну портировать его можно наверное, ява же.

niko-rybalko,
жду на прогу на market.android.com

Ладно, хватит издеваться. :3

niko-rybalko, вам мягко намекают, что подобный текст может накатать большинство активных участников форума. До нормального ТЗ ему очень далеко, а таких списков пожеланий у каждого сто штук под кроватью.

Самый простой и прямой путь чего-то добиться — сделать это. Вам помогут.

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


2009 год.
2010 год.
2011 год.

Начался 2015, до Марса мы так и не долетели…