Método para sombrear o superponer un mapa ráster para reflejar la hora del día y la luz ambiental

14
  • Tengo una trama diurna de mi área de estudio.
  • Tengo más de 20 contadores en el área de estudio que cuentan "cosas" con una marca de tiempo.
  • Usando PyEphem , determiné el tipo de luz ambiental para cada punto de datos recopilados.

Lo que me gustaría hacer:

  • Agregue una superposición gris / semitransparente para reflejar la luz ambiental (anochecer, amanecer, día, atardecer y oscuridad).

  • El objetivo final: producir una visualización basada en el tiempo de la recopilación de datos que destaque la hora del día. O ser capaz de producir una instantánea en un momento determinado con la superposición sombreada adecuada.

  • Piense en esto como esta la imagen:

día / noche globo fuente

Dassouki
fuente
2
Las respuestas adicionales (con código de Mathematica en funcionamiento ) aparecen en Mathica.stackexchange.com/questions/3326/… .
whuber

Respuestas:

9

Resumen

Dada la posición del sol, puede crear fácilmente una cuadrícula de la intensidad de la luz de la superficie (ignorando los efectos atmosféricos y topográficos) en coordenadas lat-lon. Vuelva a proyectar esa cuadrícula como desee y superpongala en el mapa.

Detalles

Las fórmulas son las estándar para las coordenadas esféricas: el vector unitario correspondiente a una coordenada esférica (lon, lat) es

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

La intensidad depende del coseno entre la unidad hacia afuera, la dirección normal ("hacia arriba") y la dirección hacia el sol. Este coseno es solo el producto escalar de esos dos vectores unitarios. Es decir, que (x, y, z) sea el vector unitario que apunta hacia el sol (en coordenadas geocéntricas), convierta el geodésico (lat, lon) del punto central de cada celda de la cuadrícula en un vector unitario (xi, eta, zeta) y calcular

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

Cualquier resultado que sea menor que 0 corresponde a un sol invisible, por lo tanto, ajústelo a cero.

Notas de implementación

Estos cálculos son fáciles de realizar con álgebra de mapas, comenzando con una cuadrícula de valores (lat, lon) (así es como lo hice) o con un par de cuadrículas, una para la latitud y otra para la longitud (que es como tendría hacerlo con el software ESRI, por ejemplo).

(Para crear una cuadrícula de latitud o longitud, forme la cuadrícula de la coordenada y la coordenada x, respectivamente, en coordenadas geográficas, luego proyecte). A partir de esta información inicial, calcule, de una vez por todas, tres cuadrículas [xi], [eta ] y [zeta] (o una única cuadrícula con valores vectoriales [xi, eta, zeta]) para representar las direcciones hacia arriba en las celdas de la cuadrícula. Para cualquier posición dada del sol, el cálculo se convierte en la combinación lineal simple de [xi], [eta] y [zeta] dada anteriormente; el sol determina los coeficientes x, y y z (que son solo números, por supuesto).

Ejemplo

Aquí hay un mapa mundial en la proyección Plate Carree de una cuadrícula de intensidad (216 por 432 celdas).

Intensidad

El primer meridiano está en el centro y el norte está en la parte superior, como de costumbre. Para este cálculo configuré el vector solar proporcional a (0.6, -0.8, 0.5), para aproximar un día de verano al mediodía sobre el océano Atlántico medio. (En retrospectiva, un valor z de 0.4 sería más realista; el sol nunca llega tan lejos al norte).

Una superposición alfa (que también hace que las áreas más brillantes sean un poco más transparentes) en un mapa coloreado Aster produce esta imagen.

Mapa del mundo

A medida que cambia el tiempo, el vector del sol (x, y, z) se recalcula, lo que requiere un nuevo cálculo de la cuadrícula de intensidad. Este es un cálculo rápido. Tampoco necesita alta resolución: utilicé solo una décima parte de la resolución de la cuadrícula original (2160 por 4320 celdas) para esta ilustración. La interpolación utilizada para mostrar la cuadrícula de intensidad más gruesa funciona bien para llenar los huecos. Esto debería permitirle modificar la pantalla casi instantáneamente si lo desea, creando una animación suave.

whuber
fuente
2
Muy, muy agradable