Méthode pour ombrer ou superposer une carte raster afin de refléter l'heure de la journée et la lumière ambiante


14
  • J'ai une trame diurne de ma zone d'étude.
  • J'ai plus de 20 compteurs dans la zone d'étude qui comptent des "trucs" avec un horodatage.
  • En utilisant PyEphem, j'ai déterminé le type de lumière ambiante pour chaque point de données collecté.

Ce que j'aimerais faire:

  • Ajoutez une superposition grise / semi transparente pour refléter la lumière ambiante (crépuscule, lever de soleil, jour, coucher de soleil et obscurité).

  • L'objectif final: produire une visualisation temporelle de la collecte de données qui met en évidence l'heure de la journée. Ou être capable de produire un instantané à un certain moment avec la superposition ombrée appropriée.

  • Considérez ceci comme ceci l'image:

globe jour / nuit la source


2
Des réponses supplémentaires (avec un code Mathematica fonctionnel ) apparaissent à l' adresse mathica.stackexchange.com/questions/3326/… .
whuber

Réponses:


9

Sommaire

Compte tenu de la position du soleil, vous pouvez facilement créer une grille de l'intensité lumineuse de surface (en ignorant les effets atmosphériques et topographiques) en coordonnées lat-lon. Reprojetez cette grille comme vous le souhaitez et superposez-la sur la carte.

Détails

Les formules sont les standards pour les coordonnées sphériques: le vecteur unité correspondant à une coordonnée sphérique (lon, lat) est

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

L'intensité dépend du cosinus entre la direction normale vers l'extérieur ("vers le haut") de l'unité et la direction vers le soleil. Ce cosinus n'est que le produit scalaire de ces deux vecteurs unitaires. Autrement dit, soit (x, y, z) le vecteur unitaire pointant vers le soleil (en coordonnées géocentriques), convertissez le géodésique (lat, lon) du point central de chaque cellule de grille en un vecteur unitaire (xi, eta, zeta) et calculer

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

Tous les résultats inférieurs à 0 correspondent à un soleil invisible, alors mettez-les à zéro.

Notes de mise en œuvre

Ces calculs sont simples à effectuer avec l'algèbre de la carte, en commençant soit par une grille de valeurs (lat, lon) (c'est comme ça que je l'ai fait) ou avec une paire de grilles, une pour la latitude et une autre pour la longitude (c'est ainsi que vous auriez pour le faire avec le logiciel ESRI, par exemple).

(Pour créer une grille de latitude ou de longitude, formez la grille de coordonnées y ou de coordonnées x, respectivement, en coordonnées géographiques, puis projetez-la.) À partir de ces informations initiales, calculez une fois pour toutes trois grilles [xi], [eta ] et [zeta] (ou une seule grille à valeurs vectorielles [xi, eta, zeta]) pour représenter les directions ascendantes au niveau des cellules de la grille. Pour toute position solaire donnée, le calcul devient la simple combinaison linéaire de [xi], [eta] et [zeta] donnée ci-dessus; le soleil détermine les coefficients x, y et z (qui ne sont bien sûr que des nombres).

Exemple

Voici une carte du monde en projection Plate Carree d'une telle grille d'intensité (216 par 432 cellules).

Intensité

Le méridien principal est au centre et le nord est au sommet, comme d'habitude. Pour ce calcul, j'ai réglé le vecteur soleil proportionnel à (0,6, -0,8, 0,5), pour approximer une journée d'été à midi au-dessus de l'océan Atlantique. (Rétrospectivement, une valeur z de 0,4 serait plus réaliste; le soleil n'est jamais aussi loin au nord.)

Une superposition alpha (qui rend également les zones plus lumineuses légèrement plus transparentes) sur une carte colorée Aster produit cette image.

Carte du monde

À mesure que le temps change, le vecteur du soleil (x, y, z) est recalculé, ce qui nécessite un recalcul de la grille d'intensité. Ceci est un calcul rapide. Vous n'avez pas besoin non plus de haute résolution: j'ai utilisé seulement un dixième de la résolution de la grille d'origine (2160 par 4320 cellules) pour cette illustration. L'interpolation utilisée pour afficher la grille d'intensité plus grossière fonctionne très bien pour combler les lacunes. Cela devrait vous permettre de modifier l'affichage presque instantanément si vous le souhaitez, créant ainsi une animation fluide.


2
Très, très sympa
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.