Проект открытой навигационной программы.
По моему мнению, проект OpenStreetMap страдает из-за отсутствия хорошего навигационного приложения.
Качество карт OSM по Украине не уступает картам http://travelgps.com.ua/, но гораздо приятнее рисовать карты, зная что ты сможешь использовать их в своем навигаторе, а не только любоваться на ПК, подключенном к Интернету.
Можно конечно конвертировать карты под различные навигаторы вроде «Навител», «GisRX» и т. д. но к лицу ли свободную карту использовать на несвободных приложениях, которые к тому же, не лишены кучи недостатков?
Предлагаю решить задачу, требующую искусства программирования - написать навигационное приложений с открытым кодом.
Изложу свое видение программы:
- Приложение должно быть под «GNU General Public License»
- Мультиязычность – язык интерфейса должен добавляться копированием соответствующего языкового файла в каталог программы.
- Приложение должно строится на принципе «portable».
- Приложение должно быть написано на С++ с целью увеличения быстродействия.
- Приложение должно быть реализовано (возможно не сразу, и разными людьми) под распространенные платформы: WinXP, Linux, WinCE, Android и др. Поддержка мультиплатформенности должна быть обеспечена наличием в каталоге программы отдельных подкаталогов с исполняемыми бинарными файлами для различных ОС. Файлы данных должны быть общими. Должна быть обеспечена близкая функциональность версий на ПК и КПК, но пользовательский интерфейс приложения под каждую из систем должен быть выполнен в стиле данной ОС - в ином случае, из-за компромиссов, сильно страдает функциональность. Файлы исходного кода «вычислительной» части программы должны быть общими для различных ОС – это облегчает поддержку кроссплатформенности.
Исходный код приложения должен иметь достаточное количество комментариев (~20% от объёма кода), чтоб недописанное одним мог доделать другой человек. Безусловно, все функции и структуры данных должны быть полностью описаны. Иначе, что толку от открытого кода – кто в нём разберется, например http://www.geopainting.com/download/mapedit_src_1_0_61_1.zip. - Навигация должна осуществляться по векторным карте в бинарном формате – для уменьшения размера файла карты и ускорения обработки данных. Бинарная карта должна генерироваться конвертором из карт *.osm. Конвертор из *.osm должен распространяться вместе с навигационным приложением, иметь интерфейс командной строки (CLI) и быть кросплатформенным на уровне исходного кода.
- Желательно иметь онлайн сервис, генерирующий бинарный файл карты заданной пользователем области, без необходимости загрузки данных *.osm на компьютер пользователя – это сильно экономит трафик при генерации «большой» карты, например всей страны.
- Приложение имеет до ~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. Окна программы:
• Карта
• Манёвры
• Датчики
• Спутники
- Звуковые возможности приложения:
Полноценная навигация требует звукового сопрвождения о предстоящем маневре, о Speedcam, о улице (дороге) на которую будем въезжать, о превышении допустимой скорости движения. Звуковая подсистема должна воспроизводить как готовые звуковые фрагменты (типа «поверните направо» или «контроль скорости»), так и синтезировать голосовые сообщения, используя стандартные механизмы голосовых движков, для проговаривания названий улиц. - …
Остальные элементы программы близки другим существующим программам GPS-навигации.