Jump to content
GPS навигатор СитиГИД

Инкрементальные обновления карт


Recommended Posts

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

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

Не секрет, что карта формата .dcm представляет из себя архивированный контейнер (ZIP) включающий в себя определенный набор файлов.

С выходов новой версии карты происходит частичное обновлениедополнение файлов внутри такого контейнера.

Выпуская инкрементальные обновления карт можно существенно экономить потребляемый трафик конечного пользователя.

Так на примере карты Санкт-Петербурга:

файл 78SPb.dcm, версия 23.5, размер 12,9 Мбайт

файл 78SPb.dcm, версия 23.6, размер 17,1 Мбайт

Распаковав карты и проведя бинарное сравнение всех файлов внутри контейнера выясняем, что:

В версии карты 23.6 появился 1 новый файл и обновилось 4 старых файла.

Запаковав данные файлы обратно в контейнер получаем 5.1Мбайта инкрементального обновления, против 17.1Мбайт полного обновления (экономия более чем в 3 раза).

Было бы полезно научить программу по запросу скачивать такие обновления из интернета. Добавлениезамена файлов в zip контейнере не требует его полной перепаковки и не отнимает сколь либо существенного процессорного времени.

Правильно реализованное решение позволяет:

1) Снизить нагрузку на сервер, поскольку скачивание инкрементального обновления занимает меньше времени чем скачивание полного большого обновления карты.

2) Снизить затраты на интернет у конечного пользователя.

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

4) Можно будет чаще обновлять карты, допустим, внося постоянные изменения в статистическую информацию вшитую в карту.

Естественно данный алгоритм нужно реализовать грамотно, в идеале с резервным копированием старой версии карты и вычислением контрольной суммы (CRC) полученного контейнера для проверки.

Спасибо за внимание.

Link to post
Share on other sites

Добавлю:

Проводил так же сравнения обновлений карты Санкт-Петербурга последней версии:

файл 78SPb.dcm, версия 23.6, размер 17,1 Мбайт (предпоследняя версия)

файл 78SPb.dcm, версия 24.2, размер 18,1 Мбайт (последняя версия)

Поскольку последнее обновление включало в себя много изменений в дорожной сети размер инкрементального обновления составил 12,4Мбайт (858 обновленных и 293 новых файла). Тем не менее это почти в 1,5 раза меньше полного обновления размером в 18,1Мбайт, что для GPRS трафика довольно существенно.

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

Link to post
Share on other sites

Поддерживаю.
Все гениальное просто.

 

Просто - это сейчас: скачал файл карты, бросил его в папку с картами. Всё. А при инкрементальном обновлении для некоторых будет нужен специальный обновляльщик - не для всех просто "переименовать-распаковать-перезаписать-запаковать-переименовать". Так что предложение требует обдумывания. 
Link to post
Share on other sites

Просто - это сейчас: скачал файл карты' date=' бросил его в папку с картами. Всё. А при инкрементальном обновлении для некоторых будет нужен специальный обновляльщик - не для всех просто "переименовать-распаковать-перезаписать-запаковать-переименовать". Так что предложение требует обдумывания. 

[/quote']

Так это же должна делать прога самостоятельно в автоматическом фоновом (либо полуавтоматическом) режиме.

Например: Появилась новая карта XX.X, размер обновлений NN Мб, хотите автоматически их установить: Да/Да всегда/Нет/Позже/Проч. ?

Link to post
Share on other sites

и тут мысль пошла дальше:

Что если реализовать общими идеями и усилиями программу, которая представляла бы из себя некую оболочку перед запуском СитиГида, и выполняющую функции обновления карт и даже программы?

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

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

От себя могу предложить только ТЗ, т.к. сам совсем не программист.

Что скажите?

Есть здесь толковые программисты под WinCEWinMobile?

Может кто возьмется?

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

P.S. и еще главное чтобы разработчики CG были не против таких манипуляций с их картами? ;_)

Link to post
Share on other sites

ПоддерживаюClap

И сделать сначала для желающих, типа "народного творчества"(с)
Link to post
Share on other sites

стоимость десятка мегабайт траффика в месяц стремиться к нулю :) зачем городить огород из-за копеешной экономии?

ИМХО ....
Link to post
Share on other sites

sashaan, у меня стоимость 1 Мбайта = 3,55руб (МТС тариф "Супер Онлайнер")

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

Карта Москвы 35,1 Мбайт

Карта МО       17,2 Мбайт

Карта Питера 18,1М байт

Карта ЛО       27,7 Мбайт

Евразия        22,8 Мбайт

Итого: 120,9 Мбайт * 3.55 руб = 429,195 рублей

А теперь представьте что у вас нет под рукой большого компьютера, а карты надо обновить?

Инкрементальные обновления позволяют добиться от 1,5 до 3 кратной экономии трафика и средств.

Конечно не всем нужны все 5 карт, не все карты обновляются сразу, но не забывайте что с GPRS'a большой объем быстро не утянешь, а любая экономия здесь только в положительную сторону.

К примеру связующая карта "Дороги Евразии" за пол года обновилась 7 (!!!) раз, при этом большей частью это "техническое обновление", а значит инкрементальное обновление будет крайне эффективно.

Link to post
Share on other sites

стоимость десятка мегабайт траффика в месяц стремиться к нулю :) зачем городить огород из-за копеешной экономии?

ИМХО ....

Так и время на закачку уменьшается. А это актуально при отсутствии 3G/
Link to post
Share on other sites

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

 

Если только сделать это в виде опции - хочешь, - обновляй полностью, хочешь - докачивай обновления...
Link to post
Share on other sites

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

И смысл тут, полагаю, не столько в экономии, сколько в удобстве для конечного "нормального пользователя" (не гика): многие с удовольствием купят навигатор с программой и будут платить за трафик, но не станут куда-то его подключать и что-то обновлять (особенно то, что "и так работает").

Link to post
Share on other sites

AltGreen,

 

у меня стоимость траффика в размере 90 Мб равняется 100 рублей... ну, или 100 Мб 90 рублей... как-то так... Всё не выюзываю... так что лишние 10-20 мегов в месяц - роли никакой не играют...

 

Но,   пример посдених дней по Питеру - когда непонятно какая версия карты рабочая  то ли 24,2 то ли 24,1 ..... а если еще и инкременты будут...
Link to post
Share on other sites
Guest
This topic is now closed to further replies.
×
×
  • Create New...