SASGIS

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

ВОПРОСЫ АБСОЛЮТНЫХ НОВИЧКОВ

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

Модератор: Tolik

ВОПРОСЫ АБСОЛЮТНЫХ НОВИЧКОВ

Сообщение Parasite » 04 май 2011, 11:05

Назрело, назрело... :twisted:
В эту тему будут переезжать (ну или задаваться напрямую, если вдруг удача) все ну совершенно нубские вопросы, заданные в тех или иных ветках. Ибо сколько ж можно игнорировать уже заданное\отвеченное другими, не напрягать межушный нервный узел, и не юзать поиск... Будет этакий паноптикум и парад юзеров, цинично игнорящих RTFM.

Если у кого из старожилов ВНЕЗАПНО нахлынет приступ альтруизма - то могут и поотвечать, а нет - так и нет. Тем хуже для задавших - тема будет безжалостно модерироваться.
The only difference between me and a mad man is that I am not mad. /Salvador Dali/
Изображение

За это сообщение автора Parasite поблагодарили: 3
cycler (07 авг 2013, 19:56) • Orden2 (15 ноя 2022, 18:48) • SergeyKa (17 апр 2024, 13:48)
Рейтинг: 15.79%
 
Аватара пользователя
Parasite
Администратор
 
Сообщения: 5646
Зарегистрирован: 23 окт 2008, 17:38
Благодарил (а): 124 раз.
Поблагодарили: 512 раз.

Re: ВОПРОСЫ АБСОЛЮТНЫХ НОВИЧКОВ

Сообщение Papazol » 03 янв 2014, 21:46

ingener писал(а):Насчет экспорта kml в gpx проверял ещё и "для ленивых", но шустрый Онлайн-конвертер "GPS Visualizer", тоже прокатывает.

Этот онлайн конвертер - продукт авторов GPSBabel, на нём основан.
ingener писал(а):В этом-то и проблема - раздельная загрузка нескольких таких транслированных треков, при необходимости убрать один из них приходиться сносить все и заново открывать только нужные, с точками - так же.

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

Вот это более рациональный способ.

За это сообщение автора Papazol поблагодарил:
ingener (04 янв 2014, 04:55)
Рейтинг: 5.26%
 
Аватара пользователя
Papazol
Гуру
 
Сообщения: 2069
Зарегистрирован: 04 дек 2009, 01:39
Откуда: Рязань
Благодарил (а): 74 раз.
Поблагодарили: 647 раз.

Re: ВОПРОСЫ АБСОЛЮТНЫХ НОВИЧКОВ

Сообщение Papazol » 03 янв 2014, 21:54

bk99 писал(а):Какой смысл паковать мильён штук по 191 байту, когда хватит одной такой пнг'шки, а далее просто ссылки на неё?

1. Пакуется то, что ранее было скачано. А ведь есть способ не сохранять "пустышки".
2. Чтобы ссылаться на один файл, надо знать, какие места в мозаике он занимает. Где-нибудь в недрах картсервиса эта информация, конечно, есть, и там именно так и делается. Но наружу-то он выдаёт пачки пустышек.
3. Можно удалить все пустышки перед упаковкой.
Аватара пользователя
Papazol
Гуру
 
Сообщения: 2069
Зарегистрирован: 04 дек 2009, 01:39
Откуда: Рязань
Благодарил (а): 74 раз.
Поблагодарили: 647 раз.

Re: ВОПРОСЫ АБСОЛЮТНЫХ НОВИЧКОВ

Сообщение bk99 » 04 янв 2014, 11:28

Papazol писал(а):3. Можно удалить все пустышки перед упаковкой.
Никогда ранее такого не делал, поэтому, чтобы не спорчить, буду нудным (благо топик позволяет).
Вы имеете ввиду перед упаковкой в "Упакованный кэш для SAS4WinCE/SAS4Android" надо сначала в окне "Операции с выделенной областью" на вкладке "Удалить" поставить крыжик "Удалять только те тайлы, размер которых, байт", указать "191" байт и запустить процедуру "очистки"? Можно ли быть уверенным, что размер 191 байт имеют только пустые тайлы? Что под раздачу не попадёт что-нибудь осмысленное?
Papazol писал(а):1. Пакуется то, что ранее было скачано. А ведь есть способ не сохранять "пустышки".
Что вы имеете ввиду под "есть способ не сохранять пустышки"? Не сохранять пустышки при загрузке (на вкладке "Загрузка") или при экспорте (на вкладке "Экспорт")?

И ещё. На мой взгляд, было бы очень удобно, если бы на вкладке "Экспорт" (окно "Операции с выделенной областью") сделать чекбокс "Игнорировать тайлы, размер которых, байт". Тогда не нужно будет "прореживать" кэш перед упаковкой. Пусть кеш остаётся нетронутым, as is.

Благодарю за ответы.
bk99
Новичок
 
Сообщения: 49
Зарегистрирован: 01 авг 2008, 14:18
Благодарил (а): 16 раз.
Поблагодарили: 0 раз.

Re: ВОПРОСЫ АБСОЛЮТНЫХ НОВИЧКОВ

Сообщение ingener » 04 янв 2014, 13:38

Доброго времени суток!
bk99 писал(а): Можно ли быть уверенным, что размер 191 байт имеют только пустые тайлы? Что под раздачу не попадёт что-нибудь осмысленное?

Эксперимент показал, что попавший в пределы тайла мелкий отрезок прямой линии примерно в 10-12 точек(пикселей) уже выдал вес в 259 байт. Половинка заглавной буквы "Л" (тоже где-то в 10-12 точек длиной) - 268 байт. Так что, не волнуйся, с пределом в 191 байт ничего реально ценного не удалишь.

За это сообщение автора ingener поблагодарил:
bk99 (04 янв 2014, 13:49)
Рейтинг: 5.26%
 
ingener
Советчик
 
Сообщения: 425
Зарегистрирован: 24 ноя 2010, 18:45
Откуда: г. Хабаровск, +7 часов до МКАД
Благодарил (а): 1053 раз.
Поблагодарили: 394 раз.

Re: ВОПРОСЫ АБСОЛЮТНЫХ НОВИЧКОВ

Сообщение Ivan30 » 04 янв 2014, 13:57

bk99 писал(а):Что вы имеете ввиду под "есть способ не сохранять пустышки"?

если в .zmp создать папку EmptyTiles и кинуть в нее Ваш пустой тайл в 191 байт весом, то программа не будет скачивать все такие тайлы. это на будущее
bk99 писал(а):Вы имеете ввиду перед упаковкой в "Упакованный кэш для SAS4WinCE/SAS4Android" надо сначала в окне "Операции с выделенной областью" на вкладке "Удалить" поставить крыжик "Удалять только те тайлы, размер которых, байт", указать "191" байт и запустить процедуру "очистки"?

да. или открыть папку с кешем, поиск->найти все файлы с расширением таким-то->отсортировать по размеру->выделить->удалить
Изображение

За это сообщение автора Ivan30 поблагодарили: 2
bk99 (04 янв 2014, 14:07) • ingener (06 янв 2014, 13:30)
Рейтинг: 10.53%
 
Ivan30
Советчик
 
Сообщения: 429
Зарегистрирован: 14 мар 2011, 19:14
Откуда: дельта Волги
Благодарил (а): 60 раз.
Поблагодарили: 139 раз.

Re: ВОПРОСЫ АБСОЛЮТНЫХ НОВИЧКОВ

Сообщение Parasite » 04 янв 2014, 16:51

Ivan30 писал(а):открыть папку с кешем, поиск->найти все файлы с расширением таким-то->отсортировать по размеру->выделить->удалить

Кэш из пары сотен миллионов тайлов смотрит на этот совет грустно и в то же время с изумлением...

PS:
Код: Выделить всё
use File::Basename;
use Digest::MD5;
require "settings.txt";
system "cls";

my $baddir=$folder_bad;                 
my $dir=$folder_to_cleanup;              
my $deleteflag=$deleteflag;              

&recur_init($baddir);

print "-------------------------------------------------------------------------------\n";
print "Всего найдено ".($i/2)." плохих тайлов.\n";
$nulled=0;   
$size=0; 
$size_hash=0; 
&recur($dir);
print "-------------------------------------------------------------------------------\n";
print "Нулевых тайлов             : ".$nulled."\n";   
print "Совпадений размеров        : ".$size."\n"; 
print "Совпадений размеров И хэшей: ".$size_hash."\n"; 
exit;

sub recur_init{
my $dir = shift;
opendir DIR, $dir or return;
my @contents = map "$dir/$_", sort grep !/^\.\.?$/, readdir DIR;
closedir DIR;
$i=0; @bad_array = ();
foreach (@contents){
   if (!-l && -d){
      recur_init($_);   
    }
   else{
      $name=basename($_);
      print "".(($i/2)+1).". Найден плохой тайл \"".$name."\"\n";
      
      $blob=blob($_);   
      $tilesize=length($blob);   
         $ctx = Digest::MD5->new;
         $ctx->add($blob);
         my $tilehash = $ctx->hexdigest;
      print "   |-length = ".$tilesize." байт\n";
      print "   |-hash   = ".$tilehash."\n";
      print "\n";   
      push @bad_array,$tilesize;push @bad_array,$tilehash;
      $i=$i+2;
   }
  }
}

sub recur{
my $dir = shift;
opendir DIR, $dir or return;
my @contents = map "$dir/$_", sort grep !/^\.\.?$/, readdir DIR;
closedir DIR;
foreach (@contents){
   if (!-l && -d){
      recur($_);
    }
   else{
      print $_."\n";
      my $tilesize=(-s($_));   
      if ($tilesize==0) {
         #тайл нулевой длины
         if ($deleteflag == 1) {
            $file=$_;
            $file=~tr/\//\\/;
            unlink ("$file") || warn "Cannot delete file $file:", $!;
            print "Тайл ".($_)." удален (длина 0 байт).\n";
         }
         $nulled++;
      }
      else {
         for ($ii=0;$ii<$i;$ii=$ii+2)   {   
            if ($tilesize == $bad_array[$ii]) {   
               $size++;
               #считаем хэш
               $blob=blob($_);   
               $ctx = Digest::MD5->new;
               $ctx->add($blob);
               my $tilehash = $ctx->hexdigest;
               if ($tilehash eq $bad_array[$ii+1]) {   
                  print "Тайл нашего размера и нашего хэша.\n";                  
                  if ($deleteflag == 1) {
                     $file=$_;
                     $file=~tr/\//\\/;
                     print $file."\n";
                     unlink ("$file") || warn "Cannot delete file $file:", $!;
                     print "Тайл ".$file." удален (длина И хэш совпали).\n";
                  }
                  $size_hash++;
               }
            }
            else {
            }
         }
      }
   }
  }
}
sub blob {
   open (BLOB, "<", shift) or die "Can't open file!";   
   my $data; my $blob;
   binmode BLOB;
   while (!eof(BLOB)) {
      read(BLOB,$data,8);
      $blob .= $data;
   };
   close BLOB;
   return $blob;
}

В папку /bad кидаем все "плохие" тайлы, которые НЕ нужны (число оных не ограничено).
Скрипт ищет совпадения в кэше по размеру тайлов с плохими. Рекурсивно (читай - размер кэша неважен). При нахождении совпадения по размеру - дополнительно проверяет совпадение MD5-хэша с плохим тайлом, и если сходится - то либо удаляет, либо только рапортует (зависит от настроек).
Бонусом убивает тайлы нулевого размера (ошибки скачки с сервера).

Сделайте мне спасибу, да. Админ сегодня щедрый. :)
The only difference between me and a mad man is that I am not mad. /Salvador Dali/
Изображение

За это сообщение автора Parasite поблагодарили: 3
bk99 (04 янв 2014, 17:47) • ingener (06 янв 2014, 13:30) • Ivan30 (05 янв 2014, 09:43)
Рейтинг: 15.79%
 
Аватара пользователя
Parasite
Администратор
 
Сообщения: 5646
Зарегистрирован: 23 окт 2008, 17:38
Благодарил (а): 124 раз.
Поблагодарили: 512 раз.

Re: ВОПРОСЫ АБСОЛЮТНЫХ НОВИЧКОВ

Сообщение bk99 » 04 янв 2014, 17:47

Parasite писал(а):
Ivan30 писал(а):открыть папку с кешем, поиск->найти все файлы с расширением таким-то->отсортировать по размеру->выделить->удалить

Кэш из пары сотен миллионов тайлов смотрит на этот совет грустно и в то же время с изумлением...

Вы - теоретики.
Причём оба. :)
Да, советы правильные.
Но вы так пробовали?
Винда тупо не отличает файлы с размером 191 байт от файлов с размером 259 байт. Все они идут как 1 кб.
А вот со скриптом уже интересней. Поясните, плз, поподробнее, что с этим кодом делать (куда пихать код, куда пихать папку bad, из какого места запускать ...). Не забывайте, тема - "ВОПРОСЫ АБСОЛЮТНЫХ НОВИЧКОВ".
bk99
Новичок
 
Сообщения: 49
Зарегистрирован: 01 авг 2008, 14:18
Благодарил (а): 16 раз.
Поблагодарили: 0 раз.

Re: ВОПРОСЫ АБСОЛЮТНЫХ НОВИЧКОВ

Сообщение Parasite » 04 янв 2014, 18:08

bk99 писал(а):Но вы так пробовали?

Вi токi не поверите.
Если присмотреться - оно даже оптимизировано именно под винду.

bk99 писал(а):Винда тупо не отличает файлы с размером 191 байт от файлов с размером 259 байт. Все они идут как 1 кб.

Большего бреда я давнооо не слышал.

bk99 писал(а):что с этим кодом делать

Запустить. Ну, или не запустить.

bk99 писал(а):Не забывайте, тема - "ВОПРОСЫ АБСОЛЮТНЫХ НОВИЧКОВ".

Не забывайте про первое сообщение этой же темы - "Для тех, кто брезгует читать уже имеющуюся матчать".
The only difference between me and a mad man is that I am not mad. /Salvador Dali/
Изображение
Аватара пользователя
Parasite
Администратор
 
Сообщения: 5646
Зарегистрирован: 23 окт 2008, 17:38
Благодарил (а): 124 раз.
Поблагодарили: 512 раз.

Re: ВОПРОСЫ АБСОЛЮТНЫХ НОВИЧКОВ

Сообщение bk99 » 04 янв 2014, 18:54

Ivan30 писал(а):открыть папку с кешем, поиск->найти все файлы с расширением таким-то->отсортировать по размеру->выделить->удалить
bk99 писал(а):Винда тупо не отличает файлы с размером 191 байт от файлов с размером 259 байт. Все они идут как 1 кб.
Parasite писал(а):Большего бреда я давнооо не слышал.

Да пожалуйста: Изображение

Вернёмся к коду. Как его запустить?

PS Да, ещё я не понял - что там оптимизировано под винду?
bk99
Новичок
 
Сообщения: 49
Зарегистрирован: 01 авг 2008, 14:18
Благодарил (а): 16 раз.
Поблагодарили: 0 раз.

Re: ВОПРОСЫ АБСОЛЮТНЫХ НОВИЧКОВ

Сообщение Parasite » 04 янв 2014, 19:52

bk99 писал(а):Да пожалуйста:

Винда (про которую разговор и) вовсе не ограничивается строкой "Размер" в штатном Проводнике (вернее, в его поисковом аддоне) - бо есть еще +100500 программ (под ту же винду, заметьте) без оного "округления". FAR, TC и легион им подобных. То, что там кажет Поиск - еще не значит, что винда "не отличает". На здоровье:
Clipboard01.jpg

Но они тоже упадут, если файлов будет много.

bk99 писал(а):Вернёмся к коду. Как его запустить?

У меня - perl.exe "Чистка кэша.pl" <ENTER>

bk99 писал(а):Да, ещё я не понял - что там оптимизировано под винду?

Ну например, строка "system "cls"" - 100% указывает на винду, ибо в родной для данного языка системе сие чудо вызовет беззлобную ругань.
The only difference between me and a mad man is that I am not mad. /Salvador Dali/
Изображение
Аватара пользователя
Parasite
Администратор
 
Сообщения: 5646
Зарегистрирован: 23 окт 2008, 17:38
Благодарил (а): 124 раз.
Поблагодарили: 512 раз.

Пред.След.

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

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

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