2017-01-26

[EDIT-Hinweis]
Der Code funktioniert nun. Die fehlerhaften Bilder im ersten Beitrag dienen nur der Ansicht. Das korrekte Ergebnis ist am Ende dieser Seite und auf der nächsten zu sehen.

Ich habe vor ein paar Monaten in der c't einen Bericht gelesen, in dem sich ein Author eine Weltkarte für eine Wohnzimmerwand gemacht hat.

Tolles Projekt - will ich auch mal machen.

Die Methode ist dabei folgende:

via curl werden Anfragen an den Google-Maps Server geschickt und eine Unmenge an kleiner Thumbnails von der Weltkarte in Ordnern gesammelt.

4x4096 Kacheln.

Diese werden dann in 4 große Kacheln zusammengefügt (Imagemagick). Und diese 4 dann wiederum in eine große.

Bei der Karte selbst gibt es verschiedene Optionen, die über die Variable lyrs gewählt werden.

Sat, Map, Text, Terrain habe ich herausfinden können.

Hier ein paar Screens zur Erklärung:

lyrs=h und eine Zoomansicht davon:
kodinerds.net/index.php/Attach…9eb6d96b3a067d198dbfb8af4 ...kodinerds.net/index.php/Attach…9eb6d96b3a067d198dbfb8af4

Das ist eine Map aus Text und Strecken, die einen kompletten Alphakanal hinterlegt hat. Brauchbar als Overlay.

lyrs=r und eine Zoomansicht davon:
kodinerds.net/index.php/Attach…9eb6d96b3a067d198dbfb8af4...kodinerds.net/index.php/Attach…9eb6d96b3a067d198dbfb8af4

Ansicht wie in der Maps-App ohne Höhen und Tiefen. Total 2D. Farblich aber gut abgestimmt inkl Text und Strecken.

lyrs=t und eine Zoomansicht davon:
kodinerds.net/index.php/Attach…9eb6d96b3a067d198dbfb8af4...kodinerds.net/index.php/Attach…9eb6d96b3a067d198dbfb8af4

Nur Terrain, ohne Text. 3D artig. Sieht an sich cool aus. Man könnte diese zB auch in Kombination mit lyrs=h als Overlay verwenden.

lyrs=y und eine Zoomansicht davon:
kodinerds.net/index.php/Attach…9eb6d96b3a067d198dbfb8af4...kodinerds.net/index.php/Attach…9eb6d96b3a067d198dbfb8af4

Coole Sat-Ansicht. Für eine Wand ggf etwas zu dunkel.

lyrs=p und eine Zoomansicht davon:
kodinerds.net/index.php/Attach…9eb6d96b3a067d198dbfb8af4...kodinerds.net/index.php/Attach…9eb6d96b3a067d198dbfb8af4

Für mich die ideale Ansicht. Hell, 3D-artig, gut lesbarer Text. Das rechte Bild hat einen Screenshotfehler, daher die dunkle Fläche im oberen Bereich.

Es gibt noch s. Die ist dann aber wie y, nur ohne Text.

Leider habe ich, wie man in jedem Screenshot sehen kann. im Endergebnis immer Lücken.

Genau genommen einen Verschub in der Grafik. Die Grafiken selber sind riesig und nicht mal eben korrigiert.

Aktuell überlege ich eine eigene Datei in Corel zu erstellen und dort die 16384 Kacheln aneinanderzusetzen.

Das ist aber alles andere als mal eben erledigt.

Bei der Erstellung wird sehr viel Speicher verbraten, auch wenn das Endergebnis bei der Variablen lyrs=p nur etwa 1,2GB sind.

Während des Stitchprozesses wurden bei mir rund 70 GB Plattenspeicher und 13GB RAM belegt. Endlich konnte ich die mal nutzen.

Man kann den Pfad für die Temporären Dateien in Imagemagick über die Datei "policy.xml" (etc/imagemagick/) ändern.

Das war auf meinem Server mit 85GB Festplattenplatz notwendig.

Anleitung (Linux):

Einen Ordner auf einer Platte mit ausreichend Platz erstellen. In meinem Beispiel unter:

home/xbmc/ den Ordner map

Darin die vier Unterordner 0x0, 0x1, 1x0 und 1x1 erstellen.

Jetzt in den ersten Ordner navigieren:
cd ~/xbmc/map/0x0/

Und diesen Befehl ausführen:
curl -O -k "https://mt0.google.com/vt?lyrs=p&scale=2&z=7&hl=loc&y=[0000-0063]&x=[0000-00063]"

Dort seht ihr auch wieder die Variable lyrs. In diesem Fall mit p. z ist die Zoomstufe. Bei 7 werden Größen bis Paderborn noch mit angezeigt.

Dann in den nächsten Ordner, curl ... in den nächsten usw:

Quellcode

cd ~/xbmc/map/0x1/

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

cd ~/xbmc/map/1x0

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

cd ~/xbmc/map/1x1

curl -O -k "https://mt0.google.com/vt?lyrs=p&scale=2&z=7&hl=loc&y=[0064-0127]&x=[0064-0127]"

Jetzt sollten in jedem Ordner 4096 Thumbnails liegen.

Der Download geht recht schnell. Es wird auch mitgezählt. Den Fortschritt kann man also verfolgen.

Jetzt geht es ans Stitching.

Die Befehle dafür (nacheinander ausführen und warten, bis es jeweils fertig ist):
montage ~/xbmc/map/0x0/* -tile 64x64 -geometry +0+0 ~/xbmc/map/0x0.png

Als Ergebnis bekommen wir im Ordner xbmc/map eine Datei 0x0.png
montage ~/xbmc/map/0x1/* -tile 64x64 -geometry +0+0 ~/xbmc/map/0x1.png
montage ~/xbmc/map/1x0/* -tile 64x64 -geometry +0+0 ~/xbmc/map/1x0.png
montage ~/xbmc/map/1x1/* -tile 64x64 -geometry +0+0 ~/xbmc/map/1x1.png

Und jetzt noch aus diesen vier Dateien eine große machen:
montage $ ~/xbmc/map/*.png -tile 2x2 -geometry +0+0 ~/weltkarte.png

Übersetzung: "Alle unter xbmc/map auffindbaren Dateien in ein Bild aus 2x2 Kacheln mit einem Abstand von 0 in die Datei weltkarte.png schreiben"

So viel Spass ich bis hierhin auch damit hatte, das Ergebnis ist unbrauchbar.

Produzieren würde ich es auf selbstklebender Tapete. Bedruckt im Digitaldruck (Latex)

Frage an alle mitlesenden:
Kennt ihr noch ein Programm (egal ob Linux oder Windows) um Kacheln automatisch aneinandersetzen zu können?

Show more