Kategorien
Linux

Karte aus Google Maps Tiles erstellen…

Um für mich darzustellen wo ich schon überall war wollte ich mir schon immer eine riesige Landkarte drucken lassen. Da ich nicht herausfinden konnte wo ich eine entsprechende Druckvorlage herbekommen kann und die Google Maps Karte sehr schön gestalltet ist suchte ich einen Weg die Karte herunterzuladen.

Die Karte selbst besteht aus  16384 Kacheln die je 512 * 512 Pixel groß sind.
(8388608 Pixel breit und genauso hoch, das sind 70 Terapixel)

1.) Verzeichnisse Anlegen

tiles=$(mktemp -d)
mkdir -p $tiles/0x0
mkdir $tiles/1x0
mkdir $tiles/1x1
mkdir $tiles/0x1

2.) Kacheln herunterladen

cd $tiles/0x0
curl -O -k "https://mt0.google.com/vt?lyrs=p&scale=2&z=7&hl=loc&y=[0000-0063]&x=[0000-0063]"

Die Variable lyrs gibt die Art der Kacheln an,  „s“ für Satellitenbild, „y“ für Satellit mit Städtenamen, „p“ ist die alte Standardansicht von Google Maps. (Weiterhin gibt es noch r, t, h)
Bei der gewählten URL, ist die Reihenfolge der x und y Variable wichtig, zuerst das y, damit montage von Imagemagic die Kacheln richtig anordnet.
Nachdem download via curl müssen in jedem Verzeichnis genau 4096 Kacheln liegen.

cd $tiles/0x1
curl -O -k "https://mt0.google.com/vt?lyrs=p&scale=2&z=7&hl=loc&y=[0000-0063]&x=[0064-0127]"
cd $tiles/1x0
curl -O -k "https://mt0.google.com/vt?lyrs=p&scale=2&z=7&hl=loc&y=[0064-0127]&x=[0000-0063]"
cd $tiles/1x1
curl -O -k "https://mt0.google.com/vt?lyrs=p&scale=2&z=7&hl=loc&y=[0064-0127]&x=[0064-0127]"

3.) Kacheln mit ImageMagick zusammenfügen

montage $tiles/0x0/* -tile 64x64 -geometry +0+0 $tiles/0x0.png
montage $tiles/0x1/* -tile 64x64 -geometry +0+0 $tiles/0x1.png
montage $tiles/1x0/* -tile 64x64 -geometry +0+0 $tiles/1x0.png
montage $tiles/1x1/* -tile 64x64 -geometry +0+0 $tiles/1x1.png

montage $tiles/*.png -tile 2x2 -geometry +0+0 ~/weltkarte.png
cd ~
rm -r $tiles

Mit der Option tile werden bei montage die Kachelanordnungen, 64 Zeilen und 64 Reihen, übergeben. Die Option -geometry +0+0 gibt an, das keine Abstände zwichen den Kacheln eingefügt werden sollen.

Die entstehende weltkarte.png ist ca. 1,1GB groß.

Update:
Dank Don (Siehe Kommentare) am 2017-01-21 korrigiert
Die Option -k erlaubt unsichere SSL-Verbindungen… was eigentlich keine Einschränkung sein darf, aber offensichtlich zum Ziel, einer ganzen Weltkarte, führt…

Von der_metzger

Hi, ich bin Jan Kuehnel - Fachinformatiker für Systemintegration ,Linux-Benutzer und Blogger. Seit 2019 arbeite ich als Systemadministrator bei einem beliebten deutschen Fahrradverleih und zuvor über 10 Jahren bei einem großen deutschen Provider. Ich folge seit meiner Kindheit dem Hobby, technische Rätsel zu lösen.

3 Antworten auf „Karte aus Google Maps Tiles erstellen…“

Das Problem liegt an der fehlenden Variablen -k bei curl
curl -O „https://mt0.google.com/vt?lyrs=p&scale=2&z=7&hl=loc&y=[000-063]&x=[000-063]“
habe ich jetzt in
curl -O -k „https://mt0.google.com/vt?lyrs=p&scale=2&z=7&hl=loc&y=[0000-0063]&x=[0000-0063]“
geändert.
Die vorstehenden 0er habe ich auch noch hinzugefügt, da es letzten Endes ja 4-stellige Stückzahlen sind.
Dann funktioniert es. curl, stitch, stitch … fertig.

Hallo,

ich habe das nun mehrfach probiert, aber nach dem ersten Stitch sieht man bereits deutliche Fehler in der Karte.
Diese habe ich bei allen 4 Teilelementen.
Die Summer der Thumbnails ist aber exakt 4096 je Ordner.
Zoomt man näher, dann erkennt man, dass die Fehlstellen nicht durch fehlende Elemente kommen, sondern durch einen hinzugefügten Abstand.
Der Wert ist bei mir aber auch 0. Ich habe den code 1:1 verwendet.
Auch in der Grafik an sich scheinen viele Fehler aufzutreten.
Any Ideas?

Benerkung: Die Links zu deinen Beispielen habe ich gelöscht um uns beiden „Kartenschnipsel“-Abmahnungen zu ersparen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.