Bigmap Perl Fehler

Hallo,

ich bekomme den unteren Fehler in Zeile 32: next if ($tile->width == 1);

perl mkmap.pl > mymap.png
http://tah.openstreetmap.org/Tiles/tile/14/8561/5424.png… 200 OK
Can’t call method “width” on an undefined value at mkmap.pl line 32.

Da ich kein Perl kann, komme ich nicht weiter. Wer kann mir helfen ?

#!/usr/bin/perl

# generated from http://openstreetmap.gryph.de/bigmap.cgi/
# permalink for this map: http://openstreetmap.gryph.de/bigmap.cgi?xmin=8561&xmax=8564&ymin=5424&ymax=5426&zoom=14&scale=256&baseurl=http%3A%2F%2Ftah.openstreetmap.org%2FTiles%2Ftile%2F!z%2F!x%2F!y.png
#
use strict;
use LWP;
use GD;

my $img = GD::Image->new(1024, 768, 1);
my $white = $img->colorAllocate(248,248,248);
$img->filledRectangle(0,0,1024,768,$white);
my $ua = LWP::UserAgent->new();
$ua->env_proxy;
for (my $x=0;$x<4;$x++)
{
    for (my $y=0;$y<3;$y++)
    {
        my $xx = $x + 8561;
        my $yy = $y + 5424;
        foreach my $base(split(/\|/, "http://tah.openstreetmap.org/Tiles/tile/14/!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();

OS: Ubuntu 12.04.2 LTS
Kernel: Linux 3.6.5

Frank

Nahmd,

Unter der URL, die als “"$url… ” ausgegeben worden, soll zwar etwas angekommen sein (200 Ok), aber keine Graphik.

Das “200 Ok” wundert mich, denn mein Browser findet den ganzen Server “tah.openstreetmap.org” nicht.

Ruf diese URL einmal mit dem Browser auf, ob Du auch den “Server not found” bekommst.
Wenn ja, dann benutze eine andere Tile-URL.

Gruß Wolf

Ganz unabhängig von Deiner Frage, bin ich erstaunt, wie Du das hinbekommst:

Osmarender ist seit über einem Jahr stillgelegt, daher gibt es kein TAH mehr.
Daß eine Kachel, die nicht heruntergeladen werden kann (-> “undefined value”), keine Breite hat, überrascht dann weniger.

Danke für die schnellen Antworten. http://tah.openstreetmap.org ist wirklich nicht erreichbar, daher der Fehler. Wenn ich auf Mapnik umschalte bekomme ich nur QR Codes mit dem Link auf “Deprecating non-standard tile.osm.org URLs”. Da stimmt also die URL auch nicht ganz. Die Cyclemap funktioniert aber. Es scheint also das Bigmap Projekt nicht besonders aktuell zu sein.

Der Grund für meine Versuche hier läßt sich aber vermutlich mit Bigmap gar nicht erreichen. Ich brauche eine große Karte MIT einem spezifischen Track/Route (Streckenbeschreibung Fahrradtour). Diesen Track muss ich in die Vektorkartendaten einbauen BEVOR ich rendere. Hat jemand eine Idee wie/womit dieses machbar ist ?

DANKE !!!

Frank

Nach der Wikiseite zu urteilen wurde dieses Skript seit ungefähr 2008 nicht mehr wesentlich verändert, insbesondere nicht mehr 2012 nach der Abschaltung der alternativen URLs. Wozu auch? Es gibt längst bessere, flexiblere Alternativen. Die Exportfunktion auf der OSM-Website, Maposmatic und Maperitive, um einige Beispiele zu nennen.

Nahmd,

Die Mapnik-Tileserver sind:


http://a.tile.openstreetmap.org/Z/X/Y.png
http://b.tile.openstreetmap.org/Z/X/Y.png
http://c.tile.openstreetmap.org/Z/X/Y.png

Die wichtigste Frage: soll das gedruckt oder online verwendet werden?
Wenn online: warum den Track nicht über die normale Karte legen?

Wenn Du den Bigmap-Weg weitergehen willst, dann den Track in ein SVG wandeln und per Bildverarbeitung über die Bigmap legen. Es gibt aber bessere Lösungen.

Gruß Wolf

Hallo,

die Tracks liegen alle online auf GPSies. Ich muß sie auf Papier ausdrucken, damit sie genehmigt und danach bei der Veranstaltung ausgehängt werden können. Ich stelle mir vor, daß ich die Tracks mit Josm nachzeichne und dann wie einen Radwanderweg in meine OSM Karte hereinbekomme. Der Ausdruck sollte z.B. dann DIN Ax mit dem passenden Ausschnitt in Zoomlevel y haben. Es sind alles Rundkurse, der längste 200 km.

Frank

Tracks als GPX downloaden

Maperitive starten
per Drag&Drop die GPX-Datei in Mperitive ziehen

In Maperitive

Map → Set priniting Bound
Tools → Export to Bitmap

fertig bzw. Bitmap ausdrucke

für definiete Bitmapgröße müsste man den export-Bitmap noch anpassen z.B.:

export-bitmap
[file=]
[width=]
[height=]
[zoom=]
[map-scale=]
[scale=]
[dpi=]

Wird im Maperitive-Assistant recht gut erklärt

Farbe und Aussehen des GPX-Tracks kann z.B. in den default.mrules nach Gusto angepasst werden

Danke. Maperitive ist genau das was ich gesucht habe !!