Тайловый кэш JOSM. Плагин ImageryCache.

Решил завести отдельную тему, чтобы ветка http://forum.openstreetmap.org/viewtopic.php?id=2714 не забивалась.

Обычно JOSM хранит загруженные квадраты подложки TMS (Bing, IRS, Mapnik и т.д.) в каталоге JMapViewerTiles_… в папке временных файлов.
При этом все тысячи и сотни тысяч файлов Bing оказываются лежащими в одном каталоге. Даже их удаление может занимать десятки минут, не говоря о проблемах для антивирусов.

Обычно для хранения кучи тайлов используется простая база данных (например, SQLite в формате MBTiles), в результате чего весь кэш Bing помещается в 1-2 файлах.
При обсуждении чистки кэша в теме Вопросы по JOSM и родилась идея аналогичного плагина для JOSM. От существующих форматов было решено отказаться из-за болшого размера кода СУБД или проблем сопряжения с Java.

В результате получился плагин для JOSM под названием ImageryCache, которых хранит весь кэш в файлах NoSQL базы MapDB (по совету Zverik).
Никакой настройки плагин не требует, просто установите его в JOSM новее 5779 и папки с файлами перестанут разрастаться.

Осторожно! Плагин экспериментальный. Потеря всего кэша из-за сбоя - пока вполне обычное явление (Старый кэш JOSM никуда не девается и может быть использован после отключения плагина). Так что в случае плохого соединения с интернетом решайте сами. Как плагин дружит c кэшем на SSD и флешках - не знаю. Но туда вообще ничего помногу не писать.

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


Обновления:
15.03.2013: первая попытка
07.04.2013:

  • Обновил MapDB, загрузка тайлов перестала намертво виснуть в 20% случаев.
  • Теперь не обязательно ставить Java 1.7
  • Теги (информация о тайлах) корректно загружаются из базы, а не только сохраняются
  • Меньше глюков при закрытии JOSM во время загрузки (замечания freeExec)
  • Если файл используется другим JOSM, создаётся ещё один (Mapnik, Mapnik_1, Mapnik_2…) , наличие Mapnik_2.lock говорит о занятости (или некорректном завершении).
  • Все доступные файлы базы Mapnik, Mapnik_1, Mapnik_2 … склеиваются в один файл при запуске (можно исплользовать для объединения кэшей)
  • Если папки кэша не было, она создаётся (спасибо andygol)

Чего пока нет:

  • Чистки кэша. Он только растёт
  • Открытия кэша только для чтения.
  • Со временем надеемся внести данный функционал в ядро JOSM.

В общем, прошу всех желающих потестировать, баги и пожелания писать сюда или в Trac по образцу http://josm.openstreetmap.de/ticket/8560

Спасибо за плагин.
Можно ли как-то указать расположение БД? Например мне было бы удобнее хранить кэш на другом жёстком диске.

Смени переменную окружения %TEMP%

Спасибо. По Вашей наводке нашёл.
JOSM → F12 → Установка настроек напрямую (лист с ключом) → imagery.tms.tilecache_path

можно через Link Shell Extension симлинк создать да и не лазить по конфигам

Совсем забыл написать - при переходе с первой версии на вторую формат кэша поменялся. Во избежание ошибок тем, кто ставил плагин до 7 апреля лучше удалить файлы кэша вручную (из меню JOSM будет чуть позже). У некоторых из-за этого (предположительно) даже JOSM вис на 20 секунд намертво. (добавил в шапку)

Кэш между сессиями сохраняется?
Например - работал с данными, была включена подложка, сохранил данные в файл .osm. Уехал за тридевять земель, где нет инета, открыл локальный файл и включил отображение подложки. Подложка будет видна? Можно заставить такой вариант работать?

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

А что, протухший сразу исчезает? Не после попытки освежения, которая не удастся?

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

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

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

Присоединяюсь к благодарностям за плагин. Сегодня более часа пытался удалить папку с кешем на SSD - оказалось там более миллиона файлов и надо было “терпеливо подождать”. Но сложно ждать когда десяток минут система не реагирует на нажатия клавиатуры :slight_smile:
Надеюсь теперь таких проблем не будет.

Всегда пожалуйста :slight_smile: Главное, чтобы плагин SSD сильнее не изнашивал (не знаю, что уж там у MapDB внутри).

Врядли SSD единственный диск в системе. Я себе кэш на шпиндельный диск сохраняю.

Кадастр почему то продолжает гадить тайлами — обнаружил их 800 мегабайт (в последнее время джосм временно зависал при включении кадастра). На всякий случай удалил каталог с кешем, но он благополучно восстановился, и так же благополучно наполняется опять. Так и должно быть?

ественно. а как по твоему должен работать кэш данных ??

Разницу между базой данных и отдельными тайлами россыпью объяснить или сам допрёшь?

luiswoo, тему не читай @ вопросы задавай :slight_smile:

http://forum.openstreetmap.org/viewtopic.php?pid=385296#p385296

Если это значить, что плагин не поддерживает кадастр, тада ок.

тайловый кеш актуален ещё?

По-моему нет и нужно этот пост тоже обновить в “Плагины JOSM” http://forum.openstreetmap.org/viewtopic.php?pid=351160#p351160