Autor Zpráva
Hledám pomoc
Profil *
V rámci projektu seznamky, bych chtěl udělat vyhledávání uživatelů v okruhu (vzdálenosti) pomocí PSČ a zadání města. Pro ten účel potřebuju vygenerovat mapu (no technicky to není až tak nutné, ale je to lepší). Taky bych tu mapu chtěl použít aby uživatel věděl jak velký je jeho okruh. Chci pro ten účel vytvořit mapu ze zdroje OpenStreetMap a to v LODu 12, kterou rozsekám na menší části (např. 400 kB). Našel jsem na to takovouto snadnou pomůcku:
wiki.openstreetmap.org/wiki/Bigmap
kde jen zadám souřadnice rohů české republiky a zazoomuju na LOD12. Po potvrzení se objeví možnost rozšířit výběr doleva nebo doprava. Což jsem udělal. Problém ale je, že když to uložím, je to soubor html. Obrázky mají asi takový tvar:
1378.png
1378_002.png
1378_003.png
atd. a to se má spojit pomocí skriptu perl, který vypadá asi takto:

#!/usr/bin/perl

# generated from http://openstreetmap.gryph.de/bigmap.cgi/
# permalink for this map: http://openstreetmap.gryph.de/bigmap.cgi?xmin=2185&xmax=2279&ymin=1378&ymax=1389&zoom=12&scale=256&baseurl=http%3A%2F%2Ftile.openstreetmap.org%2F%21z%2F%21x%2F%21y.png
#
use strict;
use LWP;
use GD;

my $img = GD::Image->new(24320, 3072, 1);
my $white = $img->colorAllocate(248,248,248);
$img->filledRectangle(0,0,24320,3072,$white);
my $ua = LWP::UserAgent->new();
$ua->env_proxy;
for (my $x=0;$x<95;$x++)
{
    for (my $y=0;$y<12;$y++)
    {
        my $xx = $x + 2185;
        my $yy = $y + 1378;
        foreach my $base(split(/\|/, "http://tile.openstreetmap.org/12/!x/!y.png"))
    {
        my $url = $base;
                $url =~ s/!x/$xx/g;
                $url =~ s/!y/$yy/g;
        print STDERR "$url... ";
        my $resp = $ua->get($url);
        print STDERR $resp->status_line;
        print STDERR "\n";
        next unless $resp->is_success;
        my $tile = GD::Image->new($resp->content);
        next if ($tile->width == 1);
        if ($base =~ /seamark/) {
        my $black=$tile->colorClosest(0,0,0);
        $tile->transparent($black);
        }
        $img->copy($tile, $x*256,$y*256,0,0,256,256);
    }
    }
}
binmode STDOUT;
print $img->png();

Problém je, že mi perl hlásí, že mu schází knihovna GD. Tu se mi nepovedlo nainstalovat. Zvládl byste to někdo přepsat do php? Možná máte podobný skript. Ovšem jedu na Windows XP. Kdyby existovala instalačka perl včetně toho GD tak by nebyl problém to nainstalovat na novějším windowsu, jenže jsem ji nenašel. Co s tím? Poradíte?

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0