Die Erde aus dem All

Earthview zeigt die Erde aus großer Höhe, ab Werk aber nur mit 2048 Pixeln pro Kachel, grob 5 km pro Pixel. Mit NASA-Bildern werden daraus 16.384 Pixel.

Earthview ab Werk: verwaschene Landschaft

Mit NASA Blue Marble: scharfe Küsten und Landschaft

Stadtlichter ab Werk: große Flecken

Mit NASA Black Marble: echte Stadtformen

Links ab Werk, rechts mit NASA-Bildern.

Platz und Zeit

Du brauchst etwa 6 GB für die Quellen und 3 GB für das Ergebnis, dazu viel Arbeitsspeicher. Rechne pro Kachel mit einigen Minuten.

Bilder herunterladen

mkdir -p "$FG_BASIS"/Quellen/{blue_marble_ohne_relief,black_marble_2016,blue_marble_clouds}
cd "$FG_BASIS/Quellen"
N=https://eoimages.gsfc.nasa.gov/images/imagerecords
for k in A1 B1 C1 D1 A2 B2 C2 D2; do
  curl -L -o blue_marble_ohne_relief/bm.$k.jpg "$N/74000/74167/world.200410.3x21600x21600.$k.jpg"
  curl -L -o black_marble_2016/BlackMarble_2016_$k.jpg "$N/144000/144898/BlackMarble_2016_$k.jpg"
done
curl -L -o blue_marble_clouds/cloud.E.png "$N/57000/57747/cloud.E.2001210.21600x21600.png"
curl -L -o blue_marble_clouds/cloud.W.png "$N/57000/57747/cloud.W.2001210.21600x21600.png"

Bauen und einbauen

cd "$FG_BASIS/werkzeuge"
python3 nasa_erde.py
python3 nasa_erde.py --einbauen

Das Overlay muss vorher eingerichtet sein.

Earthview einschalten

Earthview läuft über Nasal, also auch von außen:

from fg_steuerung import Fg

fg = Fg()
fg.nasal("earthview.start();")
fg.set("/earthview/cloudcover-bias", 0.6)   # kleiner: weniger Wolken
fg.set("/earthview/cloud-shadow-flag", 0)

Zurück geht es mit earthview.stop();. Earthview eignet sich erst für große Höhen, bei mir ab 90.000 ft.

Stolpersteine

  • Stadtlichter im Alphakanal: Der Shader rechnet night_light = 1 - alpha. Black Marble zeigt auch das Land schwach, darum zählen erst Werte ab 45 als Licht.

  • Gespiegelte Erde: DDS liegt anders herum als PNG. Ungespiegelt lag die Arktis am Äquator.

  • Furchen im Meer: Die NASA-Fassung mit Bathymetrie zeigt den Meeresboden. Das Skript nutzt deshalb die Fassung ohne Relief.

  • ImageMagick-Grenze: 16.384 Pixel scheitern am Stück. DXT5 komprimiert aber je 4 × 4 Pixel, also wandelt das Skript Streifen einzeln um und hängt sie aneinander.

  • Raster bei starkem Zoom: Die Stadtlichter zeigen dann ein feines Muster. Das sind die Pixel im NASA-Bild, kein Fehler im Shader.