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).
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.
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.