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

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

Модератор: Tolik

Аватара пользователя
Papazol
Гуру
Сообщения: 2069
Зарегистрирован: 04 дек 2009, 01:39
Откуда: Рязань
Благодарил (а): 73 раза
Поблагодарили: 647 раз

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

Сообщение Papazol »

ingener писал(а):Насчет экспорта kml в gpx проверял ещё и "для ленивых", но шустрый Онлайн-конвертер "GPS Visualizer", тоже прокатывает.
Этот онлайн конвертер - продукт авторов GPSBabel, на нём основан.
ingener писал(а):В этом-то и проблема - раздельная загрузка нескольких таких транслированных треков, при необходимости убрать один из них приходиться сносить все и заново открывать только нужные, с точками - так же.
При создании слоя, содержащего эти точки и/или треки будет ещё сложнее, разве что каждый слой делать содержащим один трек или точку.
ingener писал(а):Или заранее сформировать необходимый применительно к конкретной местности слой с дежурными, проверенными треками-дорогами, метками, полигонами, подписями и т.п. и вытаскивать его на спутник/карту двумя нажатиями(и убрать - так-же).
Вот это более рациональный способ.
Аватара пользователя
Papazol
Гуру
Сообщения: 2069
Зарегистрирован: 04 дек 2009, 01:39
Откуда: Рязань
Благодарил (а): 73 раза
Поблагодарили: 647 раз

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

Сообщение Papazol »

bk99 писал(а):Какой смысл паковать мильён штук по 191 байту, когда хватит одной такой пнг'шки, а далее просто ссылки на неё?
1. Пакуется то, что ранее было скачано. А ведь есть способ не сохранять "пустышки".
2. Чтобы ссылаться на один файл, надо знать, какие места в мозаике он занимает. Где-нибудь в недрах картсервиса эта информация, конечно, есть, и там именно так и делается. Но наружу-то он выдаёт пачки пустышек.
3. Можно удалить все пустышки перед упаковкой.
bk99
Новичок
Сообщения: 49
Зарегистрирован: 01 авг 2008, 14:18
Благодарил (а): 16 раз

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

Сообщение bk99 »

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

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

Благодарю за ответы.
ingener
Советчик
Сообщения: 495
Зарегистрирован: 24 ноя 2010, 18:45
Откуда: г. Хабаровск, +7 часов до МКАД
Благодарил (а): 1067 раз
Поблагодарили: 449 раз

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

Сообщение ingener »

Доброго времени суток!
bk99 писал(а): Можно ли быть уверенным, что размер 191 байт имеют только пустые тайлы? Что под раздачу не попадёт что-нибудь осмысленное?
Эксперимент показал, что попавший в пределы тайла мелкий отрезок прямой линии примерно в 10-12 точек(пикселей) уже выдал вес в 259 байт. Половинка заглавной буквы "Л" (тоже где-то в 10-12 точек длиной) - 268 байт. Так что, не волнуйся, с пределом в 191 байт ничего реально ценного не удалишь.
Ivan30
Советчик
Сообщения: 429
Зарегистрирован: 14 мар 2011, 19:14
Откуда: дельта Волги
Благодарил (а): 60 раз
Поблагодарили: 139 раз

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

Сообщение Ivan30 »

bk99 писал(а):Что вы имеете ввиду под "есть способ не сохранять пустышки"?
если в .zmp создать папку EmptyTiles и кинуть в нее Ваш пустой тайл в 191 байт весом, то программа не будет скачивать все такие тайлы. это на будущее
bk99 писал(а):Вы имеете ввиду перед упаковкой в "Упакованный кэш для SAS4WinCE/SAS4Android" надо сначала в окне "Операции с выделенной областью" на вкладке "Удалить" поставить крыжик "Удалять только те тайлы, размер которых, байт", указать "191" байт и запустить процедуру "очистки"?
да. или открыть папку с кешем, поиск->найти все файлы с расширением таким-то->отсортировать по размеру->выделить->удалить
Изображение
Аватара пользователя
Parasite
Администратор
Сообщения: 5646
Зарегистрирован: 23 окт 2008, 17:38
Благодарил (а): 124 раза
Поблагодарили: 508 раз

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

Сообщение Parasite »

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/
Изображение
bk99
Новичок
Сообщения: 49
Зарегистрирован: 01 авг 2008, 14:18
Благодарил (а): 16 раз

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

Сообщение bk99 »

Parasite писал(а):
Ivan30 писал(а):открыть папку с кешем, поиск->найти все файлы с расширением таким-то->отсортировать по размеру->выделить->удалить
Кэш из пары сотен миллионов тайлов смотрит на этот совет грустно и в то же время с изумлением...
Вы - теоретики.
Причём оба. :)
Да, советы правильные.
Но вы так пробовали?
Винда тупо не отличает файлы с размером 191 байт от файлов с размером 259 байт. Все они идут как 1 кб.
А вот со скриптом уже интересней. Поясните, плз, поподробнее, что с этим кодом делать (куда пихать код, куда пихать папку bad, из какого места запускать ...). Не забывайте, тема - "ВОПРОСЫ АБСОЛЮТНЫХ НОВИЧКОВ".
Аватара пользователя
Parasite
Администратор
Сообщения: 5646
Зарегистрирован: 23 окт 2008, 17:38
Благодарил (а): 124 раза
Поблагодарили: 508 раз

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

Сообщение Parasite »

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/
Изображение
bk99
Новичок
Сообщения: 49
Зарегистрирован: 01 авг 2008, 14:18
Благодарил (а): 16 раз

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

Сообщение bk99 »

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

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

PS Да, ещё я не понял - что там оптимизировано под винду?
Аватара пользователя
Parasite
Администратор
Сообщения: 5646
Зарегистрирован: 23 окт 2008, 17:38
Благодарил (а): 124 раза
Поблагодарили: 508 раз

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

Сообщение Parasite »

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/
Изображение
Ответить

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