Чистка кэша

программа для загрузки и просмотра спутниковых снимков Земли, Луны, Марса предоставленных сервисами Google Maps и Космоснимки. Возможность работы с GPS приёмником.

Модераторы: Tolik, zed

Чистка кэша

Сообщение gpsMax » 24 ноя 2010, 14:11

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

Код: Выделить всё
@echo off
chcp 1251

echo Начало >%~d0%~p0\%~n0.log

rmdir /s/q \cache\AerialWWII\z19
rmdir /s/q \cache\AerialWWII\z20
rmdir /s/q \cache\AerialWWII\z21
rmdir /s/q \cache\AerialWWII\z22

rmdir /s/q \cache\both\z19
rmdir /s/q \cache\both\z20
rmdir /s/q \cache\both\z21
rmdir /s/q \cache\both\z22

rmdir /s/q \cache\ksmapnew\z19
rmdir /s/q \cache\ksmapnew\z20
rmdir /s/q \cache\ksmapnew\z21
rmdir /s/q \cache\ksmapnew\z22

rmdir /s/q \cache\kssat\z17
rmdir /s/q \cache\kssat\z18
rmdir /s/q \cache\kssat\z19
rmdir /s/q \cache\kssat\z20
rmdir /s/q \cache\kssat\z21
rmdir /s/q \cache\kssat\z22

rmdir /s/q \cache\map\z19
rmdir /s/q \cache\map\z20
rmdir /s/q \cache\map\z21
rmdir /s/q \cache\map\z22

rmdir /s/q \cache\Navitel\z19
rmdir /s/q \cache\Navitel\z20
rmdir /s/q \cache\Navitel\z21
rmdir /s/q \cache\Navitel\z22

rmdir /s/q \cache\OSM_layer_mapsurfer\z19
rmdir /s/q \cache\OSM_layer_mapsurfer\z20
rmdir /s/q \cache\OSM_layer_mapsurfer\z21
rmdir /s/q \cache\OSM_layer_mapsurfer\z22

rmdir /s/q \cache\OSM_opnvkarte\z18
rmdir /s/q \cache\OSM_opnvkarte\z19
rmdir /s/q \cache\OSM_opnvkarte\z20
rmdir /s/q \cache\OSM_opnvkarte\z21
rmdir /s/q \cache\OSM_opnvkarte\z22

rmdir /s/q \cache\osmmap\z19
rmdir /s/q \cache\osmmap\z20
rmdir /s/q \cache\osmmap\z21
rmdir /s/q \cache\osmmap\z22

rmdir /s/q \cache\osmmapMapnik\z19
rmdir /s/q \cache\osmmapMapnik\z20
rmdir /s/q \cache\osmmapMapnik\z21
rmdir /s/q \cache\osmmapMapnik\z22

rmdir /s/q \cache\Pano_KML\z19
rmdir /s/q \cache\Pano_KML\z20
rmdir /s/q \cache\Pano_KML\z21
rmdir /s/q \cache\Pano_KML\z22

rmdir /s/q \cache\sat\z19
rmdir /s/q \cache\sat\z20
rmdir /s/q \cache\sat\z21
rmdir /s/q \cache\sat\z22

rmdir /s/q \cache\vesat\z19
rmdir /s/q \cache\vesat\z20
rmdir /s/q \cache\vesat\z21
rmdir /s/q \cache\vesat\z22

rmdir /s/q \cache\Wiki\z19
rmdir /s/q \cache\Wiki\z20
rmdir /s/q \cache\Wiki\z21
rmdir /s/q \cache\Wiki\z22

rmdir /s/q \cache\yahyb\z19
rmdir /s/q \cache\yahyb\z20
rmdir /s/q \cache\yahyb\z21
rmdir /s/q \cache\yahyb\z22

rmdir /s/q \cache\yamapng\z19
rmdir /s/q \cache\yamapng\z20
rmdir /s/q \cache\yamapng\z21
rmdir /s/q \cache\yamapng\z22

rmdir /s/q \cache\yasat\z19
rmdir /s/q \cache\yasat\z20
rmdir /s/q \cache\yasat\z21
rmdir /s/q \cache\yasat\z22

rem  ###  Не
rem rmdir /s/q \cache\kssat
rem rmdir /s/q \cache\Navitel
rem rmdir /s/q \cache\WikiMapHyb
rem rmdir /s/q \cache\yanarodmap

rem  ### Заглушка карт космоснимков
rem ### в общем, там длина 7066 байт и содержит строку sRGB

rem  ###  Прозрачный тайл гибрида OSM
for /r \cache\OSM_layer_mapsurfer\ %%i in (*.png) do @(
  if %%~zi==1298 (
    del /q %%i
    echo Удален файл %%i
    echo Удален файл %%i >>%~d0%~p0\%~n0.log
  )
)

rem  ###  Прозрачный тайл гибрида Яндекс
for /r \cache\yahyb\ %%i in (*.png) do @(
  if %%~zi==937 (
    del /q %%i
    echo Удален файл %%i
    echo Удален файл %%i >>%~d0%~p0\%~n0.log
  )
)

rem  ###  Прозрачный тайл гибрида Гугл
for /r \cache\Both\ %%i in (*.png) do @(
  if %%~zi==191 (
    del /q %%i
    echo Удален файл %%i
    echo Удален файл %%i >>%~d0%~p0\%~n0.log
  )
)

rem  ###  Пустой файлик Panoramio KML
for /r \cache\Pano_KML\ %%i in (*.kml) do @(
  if %%~zi==236 (
    del /q %%i
    echo Удален файл %%i
    echo Удален файл %%i >>%~d0%~p0\%~n0.log
  )
rem  echo Проверка файла %%i >>%~d0%~p0\%~n0.log
)

rem  ###  Пустой файлик Wikimapia KML
for /r \cache\wiki\ %%i in (*.kml) do @(
  if %%~zi==809 (
    del /q %%i
    echo Удален файл %%i
    echo Удален файл %%i >>%~d0%~p0\%~n0.log
  )
)

rem  ###  Пустой файлик OSM_layer_transport
for /r \cache\Pano_KML\ %%i in (*.png) do @(
  if %%~zi==334 (
    del /q %%i
    echo Удален файл %%i
    echo Удален файл %%i >>%~d0%~p0\%~n0.log
  )
)

rem  ###  Файлы с нулевой длиной (в конец, нехватка памяти, переделать)
for /r \cache\ %%i in (*.*) do @(
  if %%~zi==0 (
    del /q %%i
    echo Удален файл %%i
  )
)

rem ### Удаляем метки отсутствующих тайлов. Они мелкие, но занимают каждый по кластеру
del /q /s g:\cache\*.tne

pause

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

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

Комментарии и дополнения очень приветствуются.
gpsMax
Постигающий Дао
 
Сообщения: 142
Зарегистрирован: 02 апр 2010, 23:58
Благодарил (а): 44 раз.
Поблагодарили: 9 раз.

Re: Чистка кэша

Сообщение garl » 24 ноя 2010, 14:23

лучше ввести переменную типа %saspath% и через неё всё делать, ибо менять в 20 местах пути - не айс.
и в последнем del путь прямой!
Russian NDN Team
QIP NightlyTester
Аватара пользователя
garl
Специалист
 
Сообщения: 941
ICQ: 275245033
Зарегистрирован: 16 июл 2008, 14:40
Откуда: Краснодар
Благодарил (а): 30 раз.
Поблагодарили: 100 раз.

Re: Чистка кэша

Сообщение Shurik » 24 ноя 2010, 15:17

А теперь сравните с тем, как это делается в правильных(tm) операционных системах:
Код: Выделить всё
find -size 0 -exec rm '{}' ';'
Аватара пользователя
Shurik
Постигающий Дао
 
Сообщения: 203
Зарегистрирован: 26 май 2010, 00:07
Благодарил (а): 12 раз.
Поблагодарили: 42 раз.

Re: Чистка кэша

Сообщение Papazol » 24 ноя 2010, 16:29

http://s013.radikal.ru/i324/1011/b0/dfa0dc37dfd8.jpg

А если серьёзно, то размеры "пустых" файлов для каждого сервиса разные, однако в самОй программе есть функция удаления файлов с определённым размером.
Последний раз редактировалось Papazol 25 ноя 2010, 18:59, всего редактировалось 1 раз.
Аватара пользователя
Papazol
Гуру
 
Сообщения: 1210
Зарегистрирован: 04 дек 2009, 01:39
Откуда: Рязань
Благодарил (а): 29 раз.
Поблагодарили: 147 раз.

Re: Чистка кэша

Сообщение gpsMax » 25 ноя 2010, 11:08

Garl, насчет переменной - спасибо за подсказку. У меня просто на стационарном компе и ноутбуке сасовский виртуальный диск подцеплен под одной и той же буквой, но надо писать для общего случая. Жаль, первоначальный пост не могу обновить.

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

Papazol, троллить администратору ай-яй-яй :-)
gpsMax
Постигающий Дао
 
Сообщения: 142
Зарегистрирован: 02 апр 2010, 23:58
Благодарил (а): 44 раз.
Поблагодарили: 9 раз.

Re: Чистка кэша

Сообщение Shurik » 25 ноя 2010, 18:58

gpsMax писал(а):Shurik, в линуксе, может, оно и удобнее, только вот сама программа-то под винду.


Код: Выделить всё
D:\sas\cache\2gis_Voronezh>uname -a
CYGWIN_NT-5.1 mike 1.7.7(0.230/5/3) 2010-08-31 09:58 i686 Cygwin

D:\sas\cache\2gis_Voronezh>find -size 12795c
z1/0/x0/0/y0.png

D:\sas\cache\2gis_Voronezh>
Аватара пользователя
Shurik
Постигающий Дао
 
Сообщения: 203
Зарегистрирован: 26 май 2010, 00:07
Благодарил (а): 12 раз.
Поблагодарили: 42 раз.

Re: Чистка кэша

Сообщение Papazol » 25 ноя 2010, 19:06

Не будет лишним опубликовать список "пустых" тайлов по разным сервисам. Тем более, он ведь уже есть. Удалить их можно многими способами, кому что нравится.
Аватара пользователя
Papazol
Гуру
 
Сообщения: 1210
Зарегистрирован: 04 дек 2009, 01:39
Откуда: Рязань
Благодарил (а): 29 раз.
Поблагодарили: 147 раз.

Re: Чистка кэша

Сообщение gpsMax » 25 ноя 2010, 19:54

Ну по тексту скрипта видна пачка определений пустых тайлов:

1. Заглушка карт космоснимков - *.png в папке ksmapnew, длина 7066 байт и содержит строку sRGB (попадаются нормальные тайлы с такой длиной, но они без этой строки)
2. Прозрачный тайл гибрида OSM - *.png в папке , длина 1298 байт
3. Прозрачный тайл гибрида Яндекс - *.png в папке yahyb, длина 937 байт
4. Прозрачный тайл гибрида Гугл - *.png в папке Both, длина 191 байт
5. Пустой файлик Panoramio KML - *.kml в папке Pano_KML, длина 236 байт (исходно, если без обработок. Можно внутри безболезненно раздел стилей вырезать, например)
6. Пустой файлик Wikimapia KML - *.kml в папке Wiki, длина 809 байт (исходно, если без обработок. Тоже внутри можно лишнее убрать/переделать)
8. Файлы с нулевой длиной (образуются при случайном заполнении диска под завязку). Кстати, надо выдвинуть хотелку про переполнение, сейчас сделаю.
9. Метки отсутствующих тайлов - *.tne (при массовых закачках их может быть заметное количество, и несмотря на нулевую длину, занимают они по полному кластеру)
gpsMax
Постигающий Дао
 
Сообщения: 142
Зарегистрирован: 02 апр 2010, 23:58
Благодарил (а): 44 раз.
Поблагодарили: 9 раз.

Re: Чистка кэша

Сообщение Abashin » 26 ноя 2010, 04:48

Одно время тоже занимался подобной чисткой. И даже составил себе список тайлов-заглушек подлежащих удалению. Но вскоре выяснилось, что сквозь "дыры" в слое проглядывают тайлы этого слоя расположенные на вышестоящем уровне, естественно в увеличенно-раслывчатом виде. Это неудобно.
Впрочем, думаю было бы удобно иметь в SAS Planet фишку "не загружать тайлы отвечающие условиям заданным в файле" и кнопка [обзор] для выбора файла со списком тайлов-заглушек.
До того как что-нибудь было, ничего не было... (с) Божественная комедия
Аватара пользователя
Abashin
Новичок
 
Сообщения: 12
Зарегистрирован: 02 ноя 2010, 14:09
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Чистка кэша

Сообщение gpsMax » 26 ноя 2010, 12:04

Да, про "дыры" есть такое некоторое неудобство. Редко проявляется правда, сейчас с ходу с трудом нашел пример для скриншота:
http://img72.imageshack.us/i/sashole.png/
Правый тайл полностью пустой, и был удален, из-за чего вылез кусок надписи с верхнего уровня. Да, согласен, метод неидеален.

Кстати, если был список пустых тайлов - дополните мой, если не сложно. А про "было бы удобно" лучше сделать хотелку и там всё подробно описать.
gpsMax
Постигающий Дао
 
Сообщения: 142
Зарегистрирован: 02 апр 2010, 23:58
Благодарил (а): 44 раз.
Поблагодарили: 9 раз.

След.

Вернуться в SAS.Планета

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 82

cron