Methode zum Schattieren oder Überlagern einer Rasterkarte, um Tageszeit und Umgebungslicht zu reflektieren


14
  • Ich habe ein Tagesraster meines Untersuchungsgebietes.
  • Ich habe mehr als 20 Zähler im Untersuchungsgebiet, die "Zeug" mit einem Zeitstempel zählen.
  • Mit PyEphem habe ich für jeden gesammelten Datenpunkt die Art des Umgebungslichts bestimmt.

Was ich gerne machen würde:

  • Fügen Sie ein graues / halbtransparentes Overlay hinzu, um das Umgebungslicht (Dämmerung, Sonnenaufgang, Tag, Sonnenuntergang und Dunkelheit) zu reflektieren.

  • Das Endziel: Erstellen Sie eine zeitbasierte Visualisierung der Datenerfassung, die die Tageszeit hervorhebt. Oder Sie können zu einem bestimmten Zeitpunkt einen Schnappschuss mit der richtigen schattierten Überlagerung erstellen.

  • Betrachten Sie dies als das Bild:

Tag / Nacht-Globus Quelle


2
Zusätzliche Antworten (mit funktionierendem Mathematica- Code) finden Sie unter mathematica.stackexchange.com/questions/3326/… .
whuber

Antworten:


9

Zusammenfassung

Aufgrund des Sonnenstandes können Sie auf einfache Weise ein Raster der Oberflächenlichtintensität (ohne Berücksichtigung von atmosphärischen und topografischen Effekten) in Lat-Lon-Koordinaten erstellen. Projizieren Sie das Raster wie gewünscht neu und legen Sie es auf die Karte.

Einzelheiten

Die Formeln sind die Standardformeln für Kugelkoordinaten: Der Einheitsvektor, der einer Kugelkoordinate (lon, lat) entspricht, ist

(cos(lon)cos(lat), sin(lon)cos(lat), sin(lat)).

Die Intensität hängt vom Kosinus zwischen der Richtung nach außen ("oben") und der Richtung zur Sonne ab. Dieser Cosinus ist nur das Skalarprodukt dieser beiden Einheitsvektoren. Das heißt, sei (x, y, z) der Einheitsvektor, der in Richtung der Sonne zeigt (in geozentrischen Koordinaten), wandle den geodätischen Wert (lat, lon) des Mittelpunkts jeder Gitterzelle in einen Einheitsvektor (xi, eta, zeta) um. und berechnen

(x,y,z) . (xi, eta, zeta) = x*xi + y*eta + z*zeta.

Alle Ergebnisse, die kleiner als 0 sind, entsprechen einer unsichtbaren Sonne. Setzen Sie diese also auf Null.

Implementierungshinweise

Diese Berechnungen können mit der Kartenalgebra problemlos durchgeführt werden. Sie beginnen entweder mit einem Raster von (lat, lon) Werten (so habe ich es gemacht) oder mit einem Rasterpaar, eines für den Breitengrad und eines für den Längengrad (so würden Sie es haben) zum Beispiel mit ESRI-Software).

(Um ein Breiten- oder Längengradgitter zu erstellen, bilden Sie das y-Koordinaten- bzw. x-Koordinatengitter in geografischen Koordinaten und projizieren Sie es.) Berechnen Sie aus diesen Anfangsinformationen ein für alle Mal drei Gitter [xi], [eta ] und [zeta] (oder ein einzelnes vektorwertiges Gitter [xi, eta, zeta]), um die Aufwärtsrichtungen an den Gitterzellen darzustellen. Für jede gegebene Sonnenposition wird die Berechnung die oben angegebene einfache lineare Kombination von [xi], [eta] und [zeta]; Die Sonne bestimmt die Koeffizienten x, y und z (die natürlich nur Zahlen sind).

Beispiel

Hier ist eine Weltkarte in Plate Carree-Projektion eines solchen Intensitätsgitters (216 mal 432 Zellen).

Intensität

Der Nullmeridian liegt in der Mitte und der Norden wie üblich nach oben. Für diese Berechnung setze ich den Sonnenvektor proportional zu (0,6, -0,8, 0,5), um einen Sommertag um die Mittagszeit über dem mittleren Atlantik anzunähern. (Im Nachhinein wäre ein z-Wert von 0,4 realistischer; die Sonne kommt nie so weit nach Norden.)

Ein Alpha-Overlay (wodurch auch die helleren Bereiche etwas transparenter werden) auf einer Aster-Farbkarte erzeugt dieses Bild.

Weltkarte

Wenn sich die Zeit ändert, wird der Sonnenvektor (x, y, z) neu berechnet, was eine Neuberechnung des Intensitätsgitters erforderlich macht. Dies ist eine schnelle Berechnung. Sie benötigen auch keine hohe Auflösung: Für diese Abbildung habe ich nur ein Zehntel der Auflösung des ursprünglichen Rasters (2160 x 4320 Zellen) verwendet. Die Interpolation, die zum Anzeigen des gröberen Intensitätsrasters verwendet wird, funktioniert einwandfrei, um die Lücken zu füllen. Auf diese Weise können Sie die Anzeige bei Bedarf fast augenblicklich ändern und eine reibungslose Animation erstellen.


2
Sehr, sehr nett
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.