Skrypt do pobierania map (kafelków), wykorzystywanych na portalu zumi.pl.
Sopot: 006011t03s09×0190y0340.jpg
Pałac Kultury i Nauki: 077053t03s03×2335y1615.jpg
Olsztyn: 002002t01s12×0067y0074.png
Skrypt ściąga wszystkie kafelki zdjęć satelitarnych, dla wszystkich przybliżeń, tworząc następującą strukturę katalogów:
./maps/<zoom>/<grupa x>/<grupa y>/<y>/
W części drugiej, przedstawiona będzie konwersja długości i szerokości geograficznej, oraz skali zbliżeń wykorzystywanych w Google Maps na odpowiednie kafelki w zumi.pl.
#!/usr/bin/perl -w use strict; use LWP::UserAgent; use File::Path; my $ua = LWP::UserAgent->new; my $url = 'http://mimg.onet.pl/'; my $dir = '/home/downloads'; #katalog do którego pobieramy poszczególne kafelki my $t = 3; # typ mapy my $z = 20; # najwieksze oddalenie S: for ( my $s = $z; $s > 0;$s--) { my $i = 0; X: for (my $x = 0; $x < 10000;$x++ ) { if ( $i > 1 ) { next S; } Y: for (my $y = 0; $y < 10000;$y++ ) { my $path = sprintf("%s/maps/%02d/%03d/%03d/%04d",$dir,$s,int($x/30),int($y/30),$y); my $file = sprintf("%03d%03dt%02ds%02dx%04dy%04d.jpg",int($x/30),int($y/30),$t,$s,$x,$y); if ( -r "$path/$file" ) { next Y; } else { my $res = $ua->get("$url$file"); if ( $res->is_success ) { mkpath($path) unless -d $path; open my $fh,">", "$path/$file"; print $fh $res->content; close $fh; print "$file downloadedn"; $i = 0; } else { $i++; next X; } } } # Y } # X } # S exit; |