14 votos

Método para sombrear o superponer un mapa de trama para reflejar la hora del día y la luz ambiental

  • Tengo un mapa diurno 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 recogidos.

Lo que me gustaría hacer:

  • Añade una capa gris/semitransparente para reflejar la luz ambiental (Atardecer, Amanecer, día, puesta de sol 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 a una hora determinada con la adecuada superposición de sombras.

  • Piensa en esto como si fuera la imagen:

day/night globe fuente

10voto

cjstehno Puntos 131

Dada la posición del sol, se 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 de latón. Reproyecta esa cuadrícula como desee y superpóngala en el mapa.

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 de dirección normal hacia afuera ("arriba") y la dirección hacia el sol. Este coseno es sólo el producto puntual de esos dos vectores unitarios. Es decir, dejemos que (x,y,z) sea el vector unitario que apunta hacia el sol (en coordenadas geocéntricas), convirtamos la geodésica (lat, lon) del punto central de cada celda de la cuadrícula en un vector unitario (xi, eta, zeta), y calculamos

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

Cualquier resultado que sea menor que 0 corresponde a un sol invisible, así que ponlos a cero.

Estos cálculos son sencillos de realizar con el álgebra de los mapas, comenzando ya sea 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ías que hacerlo con el software ESRI, por ejemplo). (Para crear una cuadrícula de latitud o longitud, formar la cuadrícula de coordenadas y o x, respectivamente, en coordenadas geográficas, y luego proyectarla). A partir de esta información inicial, calcule, de una vez por todas, tres cuadrículas [xi], [eta] y [zeta] (o una sola cuadrícula con valor vectorial [xi, eta, zeta]) para representar las direcciones ascendentes en las celdas de la cuadrícula. Para cualquier posición del sol dada, el cálculo se convierte en la simple combinación lineal de [xi], [eta], y [zeta] dada anteriormente; el sol determina los coeficientes x, y, z (que son sólo números, por supuesto).

Aquí hay un mapa del mundo en la proyección de Plate Carree de tal cuadrícula de intensidad (216 por 432 células).

Intensity

El meridiano principal está en el centro y el norte está en la parte superior, como de costumbre. Para este cálculo puse 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 realidad, un valor de z de 0,4 sería más realista; el sol nunca llega tan al norte).

Una superposición alfa (que hace que las áreas más brillantes también sean ligeramente más transparentes) en un Mapa a color de Aster produce esta imagen.

World map

A medida que el tiempo cambia, el vector del sol (x,y,z) se recalcula, lo que requiere un recálculo de la red de intensidad. Este es un cálculo rápido. Tampoco se necesita una alta resolución: Usé sólo 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 muy bien para llenar los huecos. Esto debería permitirle modificar la visualización casi instantáneamente si lo desea, creando una animación suave.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X