Mein Weltkartenprojekt

  • [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:
    ...
    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.

    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:

    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"

    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?

  • Da Ideale Programm um Bilder bzw. Kachel zusammen zusetzen ist eigentlich Photoshop. Und dort unter dem Stichwort Photomerge.

    Die Funktion ist schon seit zig Generationen in dem Programm enthalten, kannst aber auch einfach die aktuelle als Testversion installieren. Hast dann 30 Tage dafür Zeit ;)

    Externer Inhalt beta.speedtest.net
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
  • Es muss an ImageMagick auf dem Server liegen. Das scheint einfach überfordert.
    Ein kleinerer Deutschland-Test funktioniert. Hier mal das unkomprimierte Ergebnis: (5MB)

    Ich werde mir die Thumbs auf den "dicken" WindowsPC holen und dort noch mal mit ImageMagick für Windows aufbauen lassen.
    Noch kein Grund aufzugeben :)

  • Fine die Idee auch sehr spannend, wobei ich zumindest für mich andere Farben wählen würde.

    Bin aber sehr auf das Endergebnis gespannt, gerade mit der Topographie wirkt das bestimmt total gut!

    Externer Inhalt beta.speedtest.net
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
  • @kio Also mit Photoshop klappt es mit meinem Wissen nicht.
    So sieht D nach Photomerge aus. Kann man da nirgends ein Raster angeben oder etwas in der Art?

    Anbei noch mal D in Kacheln als ZIP. Vielleicht will es ja noch einer mit Ps probieren.

    D.zip
    Ich habe die Kacheln manuell in 01 bis 16 umbenannt. Das Raster ist 4x4.

  • So, gerade mal getestet. Bekomme auch nur Müll dabei raus.

    Ich glaube aber zu wissen, warum. Die einzelnen Elemente haben keinerlei Überschneidungspunkte oder? So rafft PS das dann anscheinend nicht.


    PS: Gerade direkt den Test gemacht. Klappt 1a, sofern sich die Pattern überschneiden. Kannst ja selber mal testen: K.zip

    Externer Inhalt beta.speedtest.net
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
  • Also mit IrfanView geht es auch. Zumindest mit der D-Karte.
    4x4 Raster, Außenmaß absolute Pixelzahl 2048x2048 und Auflösung auf 1DPI:
    Das Ergebnis ist in Ordnung.

    Jetzt habe ich nur noch das Problem, dass die Namensgebung nach dem curl so dermaßen UNIX ist, das Windows mir nicht mal Dateien anzeigt.
    Dann probiere ich mal, mit Wine unter Linux IrfanView ans laufen zu bekommen.

    Ich hatte auch noch eine andere Methode mit Hilfe des Acrobat Pro und Corel probiert.
    Erst alle thumbs markieren, dann eine PDF mit 16 Seiten erstellen.
    Diese dann in Corel importieren - da werden die Seiten dann automatisch erzeugt und skaliert.
    Dann mit dem PS-Drucker eine 4x4 Ausgabe erstellen. Das geht bis A0 auch als PDF.
    Als PS wird die Datei aber 10x größer im Vergleich zum JPG. Suboptimal.
    Und unter Linux auch gar nicht verfügbar.

    Das Problem mit der Namensgebung ist jetzt noch mal ne Hürde extra.

  • Huhu,

    Klasse Projekt. Das würd mich auch interessieren. Also so ne Weltkarte. Wie hast du dir das vorgstellt das physikalisch umzustzen? Mehrere A0 Ausdrücke zusammensetzen oder gibts da Foto-Tapetenhersteller, die einen sowas anfertigen?

    Bin echt aufs Ergebnis gespannt

  • Die kann ich hier in der Firma selber fertigen.
    Latexdrucker. Wir drucken das direkt auf eine selbstklebende Tapete. 1300mm oder 1500mm breit. Müßte ich nachschauen (machen wir auch nicht so oft).
    Dann ohne Überlappung direkt auf die möglichst plane Wand.
    Ist aber noch lange nicht so weit.

    Irfan geht unter Linux, kann aber auch die Dateien nicht lesen. Klar, Wine übernimmt ja die Windowsformatierung.
    Jetzt lasse ich die Dateien (erst mal nur 1024 Kacheln) nummeriert umbenennen. Also 1 bis 1024 mit der Endung jpg.
    Der Kurztest mit 4 Kacheln konnte dann auch von Irfan/Wine gelesen werden.
    Nur dauert das umbenennen extrem lange. Keine Ahnung, was da bremst. Aber pro Datei rödelt der hier 10 Sekunden.
    Also erst mal machen lassen ...

  • Ein Teilerfolg. 16x64 Kacheln zu einer Grafik mittels IrfanView und vorherigem umbenennen der Dateien (nur ein Screenshot):

    An sich fehlerfrei. Neues Problem ist, dass Irfan max 9999 Pixel in einer Reihe zählt.
    Man kann tricksen, in dem man mm angibt und dann die Auflösung wiederum ändert.
    Das ist jetzt nur ein Viertel der Höhe vom Viertel oben links. Also noch so gut wie nix.

    Da müßte ich jetzt alle Kacheln erst umkopieren (Backupstrategie), dann umbenennen lassen (je Ordner dauert das vermutlich einen Tag) und dann von Irfan stitchen lassen.
    Zumindest ist jetzt klar, dass es an ImageMagick liegt. Das gleiche Bild mit IM ist fehlerhaft.

    -> ich mache noch einen Test mit einem Viertel der gesamten Karte. Also dem Curl-Ergebnis der ersten Zeile.
    mal schauen, wie lange er für 4096 Dateien bei der Umbenennung braucht. Und ob Irfan beim Stitching nicht zusammenbricht.

    -->
    https://sourceforge.net/projects/file-…tamorphose%202/ ... my new weapon for massrenaming :)
    4096 Dateien in 7 Sekunden.
    Programm verstehen ... 40 Minuten.

  • Auch das hat nicht richtig funktioniert.
    Vermutlich ein Umbenennungsfehler gefolgt von einem überlastetem IrfanView in Kombination mit fehlerhaften Kacheln.

    Das Ergebnis ist gleich mehrfach nicht zu gebrauchen. Zu geringe Auflösung, Positionierungsfehler und die üblichen Freiflächen.
    Langsam wird es schwierig.

  • Kaufbar gibt es das nicht. Google hat auf solch einer Karte ja auch wieder Copyright.
    Und das ist bei jedem anderen auch so.

    Ich google mich gerade durchs Netz nach diversen Anleitungen.
    Gerade habe ich eher das Gefühl, dass auch meine Thumbs für die Tonne sind.
    Scheitern gehört zum Prozess. :)

  • Das sieht doch schon bestens aus.
    Komplette Karte:

    Der untere Teil ist über. Den Bereich hätte man im letzten curl auch direkt weglassen können. Hätte.
    Aber die PNG kann ich auch im Druck beliebig schneiden.

    Und ein Zoom-Ausschnitt in D:

    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 dann doch nicht. Es waren fehlerhafte Thumbnails.

    Das ganze werde ich jetzt noch mit der Satelliten-Map durchziehen. Nur um beide Varianten gemacht zu haben.

Jetzt mitmachen!

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