Mapy zumi.pl, cz. I

29 wrzesień 2008 | Kategorie: Perl

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.

Pobierz zumi-tiles.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;
Nie ma jeszcze komentarzy.