Главная страница

Тайловый версионный кэш

Здесь пока ничего не написано…

Версионный кэш Беркли

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

Создание версионного кэша "с нуля"

Если мы хотим создать новый версионный кэш, который будем наполнять путём скачивания, нужно всего лишь указать в zmp параметр CacheType=61. Для хранения версионного кэша Беркли в программе предусмотрена папка cache_dbv, поэтому по умолчанию новый кэш будет создан в этой папке. Однако нет проблем поместить этот кэш и в основную папку cache, нужно лишь указать соответствующий путь в настройках программы. Перед скачиванием снимков нужно указать название версии, в которую будут помещаться тайлы. Это можно сделать в окне «Параметры карты». Обычно название версии представляет собой её номер в соответствии с нумерацией картсервиса. Скачав снимки указанной версии, мы будем иметь возможность в дальнейшем проверять идентичность скачанных тайлов и тайлов, уже имеющихся в кэше, и в случае их совпадения не сохранять дублирующиеся тайлы.

Создание версионного кэша из ранее скачанного

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

Исходный кэш неверсионный (Беркли или любой другой)

Заполняем опции Управления кэшем, указывая в верхней части окна параметры исходного кэша, опцию Process only tiles with version: (Обрабатывать только тайлы версии:) и поле с названием версии оставляем пустыми, так как наш исходный кэш неверсионный. В нижней части окна указываем параметры целевого кэша, формат выбираем BerkeleyDB (версионный), ставим галку на опции Set same version for all processed tiles: (Установить единую версию для всех обрабатываемых тайлов:) и записываем в соответствующее поле название версии. Папка целевого кэша должна быть создана заранее. Нажимаем «Начать» и ждём окончания процесса. Для нового кэша необходимо создать zmp, в котором должна быть запись CacheType=61.

Исходный кэш версионный Беркли "старого образца"

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

Неверсионная часть кэша велика, а версионная часть мала либо её вообще нет

В этом случае проще и быстрее будет перенести все части по очереди в новое версионное хранилище. При этом для неверсионной части опцию Process only tiles with version: и поле с названием версии оставляем пустыми, а в целевом кэше, наоборот, включаем опцию Set same version for all processed tiles: и вписываем название версии. Для версионных частей требуется указать как версию источника, так и версию назначения. Для нового версионного кэша необходимо создать zmp.

Версионная часть кэша велика

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

Операция состоит из следующих этапов:

Выделение неверсионной части кэша в отдельный кэш

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

Обработка оставшегося версионного кэша

Далее нам понадобятся утилиты для работы с Беркли. Запускаем sdb_util.exe, указываем наш исходный кэш и проводим над ним две операции: Recover environment и Prepare cache for backup (reset LSN). Затем перемещаем кэш в папку cache_dbv (если необходимо) и меняем расширения всех файлов *.sdb на *.sdbv, а всех файлов *.tne - на *.tnev.

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

Это сделать просто, см. Исходный кэш неверсионный (Беркли или любой другой).

Копирование в версионный кэш

Усовершенствованная операция копирования позволяет указывать название версии, в которую будут скопированы или перемещены тайлы. Кроме того, опция Make subfolder with map path name (Создать вложенную папку с названием карты) может быть отключена, что позволяет копировать в один и тот же кэш отдельные снимки под одной или под разными версиями.

Внимание!

Нельзя применять операцию перемещения данных из одной версии кэша в другую версию этого же кэша. Это ведёт к невозвратимой потере данных, так как каждый перемещаемый тайл проверяется на идентичность существующему, то есть самому себе. Так как идентичность налицо, «вновь прибывший» тайл не сохраняется, а старый удаляется, потому что задано перемещение. В случае, когда задано копирование, кэш никак не изменится, но будет впустую потеряно время. Чтобы переместить часть информации в другую версию того же кэша, следует сначала переместить её в отдельный кэш, а уже из него вернуть в первоначальный под другой версией.