Metodo per ombreggiare o sovrapporre una mappa raster per riflettere l'ora del giorno e la luce ambientale


14
  • Ho un raster diurno della mia area di studio.
  • Ho più di 20 segnalini nell'area di studio che contano "roba" con un timestamp.
  • Usando PyEphem ho determinato il tipo di luce ambientale per ciascun punto dati raccolto.

Cosa mi piacerebbe fare:

  • Aggiungi un overlay grigio / semitrasparente per riflettere la luce ambientale (Crepuscolo, Alba, giorno, tramonto e buio).

  • L'obiettivo finale: produrre una visualizzazione basata sul tempo della raccolta dati che evidenzi l'ora del giorno. O essere in grado di produrre un'istantanea in un determinato momento con la sovrapposizione ombreggiata corretta.

  • Pensa a questo come a questa immagine:

globo giorno / notte fonte


2
Ulteriori risposte (con il codice Mathematica funzionante ) vengono visualizzate su mathematica.stackexchange.com/questions/3326/… .
whuber

Risposte:


9

Sommario

Data la posizione del sole, è possibile creare facilmente una griglia dell'intensità della luce superficiale (ignorando gli effetti atmosferici e topografici) nelle coordinate lat-lon. Riproiettare quella griglia come desiderato e sovrapporla sulla mappa.

Dettagli

Le formule sono quelle standard per le coordinate sferiche: il vettore unitario corrispondente a una coordinata sferica (lon, lat) è

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

L'intensità dipende dal coseno tra l'unità normale verso l'esterno ("su") direzione e la direzione verso il sole. Questo coseno è solo il prodotto punto di quei due vettori di unità. Cioè, sia (x, y, z) il vettore unitario che punta verso il sole (in coordinate geocentriche), converti il ​​geodetico (lat, lon) del punto centrale di ogni cella della griglia in un vettore unitario (xi, eta, zeta) e calcolare

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

Qualsiasi risultato inferiore a 0 corrisponde a un sole invisibile, quindi impostali su zero.

Note di attuazione

Questi calcoli sono semplici da eseguire con l'algebra della mappa, a partire da una griglia di valori (lat, lon) (è così che l'ho fatto) o con una coppia di griglie, una per la latitudine e un'altra per la longitudine (che è come avresti per farlo con il software ESRI, per esempio).

(Per creare una griglia di latitudine o longitudine, formare la griglia delle coordinate y o delle coordinate x, rispettivamente, in coordinate geografiche, quindi proiettarla.) Da questa informazione iniziale calcolare, una volta per tutte, tre griglie [xi], [eta ] e [zeta] (o una singola griglia con valori vettoriali [xi, eta, zeta]) per rappresentare le direzioni verso l'alto nelle celle della griglia. Per ogni data posizione del sole, il calcolo diventa la semplice combinazione lineare di [xi], [eta] e [zeta] date sopra; il sole determina i coefficienti x, ye z (che sono solo numeri, ovviamente).

Esempio

Ecco una mappa del mondo nella proiezione di Plate Carree di una griglia di tale intensità (216 per 432 celle).

Intensità

Il meridiano principale è al centro e il nord è in cima, come al solito. Per questo calcolo ho impostato il vettore del sole proporzionale a (0,6, -0,8, 0,5), per approssimare un giorno d'estate a mezzogiorno sull'oceano medio Atlantico. (A posteriori, un valore z di 0,4 sarebbe più realistico; il sole non arriva mai abbastanza lontano a nord.)

Un overlay alfa (che rende le aree più luminose anche leggermente più trasparenti) su una mappa colorata Aster produce questa immagine.

Mappa del mondo

Al variare del tempo, il vettore del sole (x, y, z) viene ricalcolato, richiedendo un ricalcolo della griglia di intensità. Questo è un calcolo veloce. Non hai bisogno nemmeno di alta risoluzione: ho usato solo un decimo della risoluzione della griglia originale (2160 per 4320 celle) per questa illustrazione. L'interpolazione utilizzata per visualizzare la griglia di intensità più grossolana funziona perfettamente per colmare le lacune. Ciò dovrebbe consentire di modificare il display quasi istantaneamente, se lo si desidera, creando un'animazione fluida.


2
Molto, molto bello
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.