SAS.Wiki

Веб-картография и навигация

Инструменты пользователя

Инструменты сайта


версионный_кэш

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

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

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

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

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

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

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

Работа с версионным кэшем Беркли

При выборе из списка карты с версионным кэшем Беркли будет автоматически установлена версия по умолчанию, указанная в zmp. В дальнейшем можно будет изменить «рабочую» версию, введя её название в поле Версия окна Параметры карты. В «рабочую» версию сохраняются скачиваемые тайлы, поэтому будьте внимательны и проверяйте URL перед тем, как начать скачивание. Для «рабочей» версии строится карта заполнения.

При наличии в кэше нескольких версий снимков можно выбирать, тайлы какой из версий будут отображаться на экране. Для этого вызываем контекстное меню и выбираем пункт Версия. Если для данного места экрана существует несколько версий тайлов, их список будет виден в меню. Установив галку на нужной версии, мы будем видеть только тайлы этой версии. Чтобы видеть тайлы всех возможных версий для данного места, следует установить галку на опции Отображать предыдущие версии. Однако следует учитывать, что в данном случае карта заполнения будет строиться для всех доступных версий кэша. Если кликнуть на опции Сбросить, то ни одна из версий не будет «рабочей».

При скачивании каждый тайл проверяется на идентичность существующему, причём проверяются все доступные версии. Если тайла, идентичного скачанному, не существует, то скачанный тайл сохраняется, в противном случае - пропускается. Поэтому версия, скачанная первой, будет иметь наибольшее количество тайлов, а последующие версии - гораздо меньше (для одной и той же выделенной области, конечно).

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

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

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

Заполняем опции Управления кэшем, указывая в верхней части окна параметры исходного кэша, опцию 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 (Создать вложенную папку с названием карты) может быть отключена, что позволяет копировать в один и тот же кэш отдельные снимки под одной (если они не накладываются друг на друга) или под разными версиями.

Внимание!

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

Перевод этой страницы: