Mein Weltkartenprojekt

  • Ich habe 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:

    .

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


    lyrs=r und eine Zoomansicht davon:

    .

    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:

    .

    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:

    .

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


    lyrs=p und eine Zoomansicht davon:

    .


    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.


    Das Raster kam durch etwas zu strickten Code. Da wurde alle X-Kacheln ein Fehler erzeugt.

    Genau genommen war es dieses Problem:


    Der große Unterschied war ein k und ein paar 0en.

    Aus

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

    wurde:

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

    Die Variable -k:

    Zitat

    -k, --insecure

    (TLS) This option explicitly allows curl to perform "insecure" SSL connections and transfers. All SSL connections are attempted to be made secure by using the CA certificate bundle installed by default. This makes all connections considered "insecure" fail unless -k, --insecure is used.

    Und die 0000-Werte, um eine logische Nummerierung zu erhalten, die auch von jedem Programm als solche erkannt wird.

    An ImageMagick lag es nicht. Es waren fehlerhafte Thumbnails.


    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.

    Code
    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"

  • Ein Ausschnitt von Deutschland

    Selbst Paderborn ist mit drauf. Bedingt durch die Zoomstufe werden grob gesagt Orte ab 80.000 abgebildet.



    Beim Import der Datei wird eine Größe von 25,5x25,5 METER angezeigt. Das ist mal ne Ansage.

    Das ist eine 1,2GB große PNG. 72DPI.
    Durch Voreinstellungen konnte ich die Karte direkt auf 3820mm Breite rippen lassen.
    Die 1:1 Kachel für Deutschland war gar nicht so einfach zu finden, weil jedes Mausschuppsen eine neue Vorschau generiert. Die dauert etwa 7 Minuten.
    Alles im allem ein Wahnsinn. Anders kann ich es nicht beschreiben.


    Ich habe die noch nicht produziert. Wirklich gut sieht die auch erst so ab 4 Meter Höhe aus.



    Bei nur 2m gehen schon zu viele Details verloren.

    Das ist Latexdruck auf selbstklebender Tapete.


    Irgendwann werde ich die Karte für ein Projekt brauchen.

    Bis hierhin war es einfach nur das größte Motiv, welches ich je gemacht habe.

    Und alles ohne auch nur einmal ein Grafikprogramm zu öffnen. Komplett in der Commandozeile generiert.


    Ein instructable gab es auch dazu:

    https://www.instructables.com/…iggest-Worldmap-to-Print/




Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!