Ensoleillement urbain ou quand les bâtiments dessinent les ombres

Récemment, je me suis posé une question assez simple en apparence : à quel point certaines rues et trottoirs sont réellement ensoleillés au cours de la journée ?

Quand on marche en ville, on le sent intuitivement, certaines rues sont agréables en été parce qu'elles restent fraîches, protégées par l'ombre des bâtiments. Mais si l'on veut dépasser l'intuition, est-il possible de répondre manière mesurable ?

  • Quelle part d'un segment de rue est à l'ombre à un moment donné ?
  • Comment cette ombre évolue-t-elle selon l'heure ou la saison ?
  • Quels tronçons sont les plus exposés au soleil ?
  • Quels troittoirs restent durablement ombragés ?

Ensuite, on peut réfléchir à identifier les ilôts de chaleur urbains. En combinant cartes d'ombre et données de température de surface (imagerie thermique, capteurs in situ), on peut :

  • Identifier les rues-canicules (fort ensoleillement + peu de végétation + matériaux sombres)
  • Repérer les corridors de fraîcheur (rues ombragées, végétalisées, matériaux clairs)

Et même tenter d'imaginer des pistes sommaires de réflexion autour de leur résolution. On pensera à aménager l'espace urbain en plantant des arbres, à adapter les matériaux, à modifier la forme urbaine au travers des arcades, auvents ou pergolas sur les trottoirs les plus exposés ou à penser aux usages tels que modifier le positionnement des arrêts de bus ou bancs publiques.

Récupérer les données

Pour analyser l'ensoleillement des rues, il nous faut des données. À Bruxelles, on a la chance d'avoir UrbIS, qui met à disposition plusieurs jeux de données essentiels pour ce type d'analyse.

UrbIS - Constructions 3D

C'est la base pour tout ce qui touche à la géométrie urbaine. UrbIS - Constructions 3D fournit :

  • des volumes de bâtiments (empreinte + hauteur)
  • des informations sur les toitures, pentes, orientations

Et ce, tant pour des ouvrages d'arts que pour des constructions "standards". Pour un calcul d'ombre, c'est typiquement la source qui permet de reconstruire un Modèle Numérique de Surface (MNS) fiable : on sait où sont les bâtiments et à quelle hauteur ils montent.

UrbIS - Occupation du sol

Ce jeu de données décrit :

  • les axes de voirie
  • les trottoirs
  • les zones piétonnes
  • les emprises de rues

En pratique, UrbIS - Occupation du sol sert de référentiel géométrique pour projeter les résultats du calcul d'ombre sur les espaces de chaussée et réellement employés par les piétons.

UrbIS - Modèle Numérique de Terrain

Modèle Numérique de Terrain (MNT) décrit le relief du terrain. Même si Bruxelles n'est pas une ville de très forte pente, le relief influence :

  • la hauteur relative des bâtiments
  • la projection des ombres
  • la durée d'ensoleillement dans les vallées urbaines

Le Modèle Numérique de Terrain (MNT) est indispensable pour savoir où tombe réellement l'ombre.

Modèle Numérique de Terrain (MNT) de Bruxelles

UrbIS - Modèle Numérique de Surface

UrbIS met également à disposition un Modèle Numérique de Surface (MNS).

Ce modèle est très pratique car il évite de devoir reconstruire soi-même un MNS à partir des bâtiments. Cependant, il faut garder en tête que les mises à jour ne sont pas très fréquentes puisqu'ici des relevés LiDAR par survol aérien.

Un problème à 3 dimensions

L'ombre est un phénomène en trois dimensions. Une rue n'est pas seulement une ligne ou une surface sur une carte. Elle se situe à une certaine altitude, qui peut varier tout au long de son tronçon. Les bâtiments autour ont des hauteurs, des toits inclinés, des façades, des volumes. Le Soleil, lui, arrive avec un azimut et une altitude qui changent selon l'heure, le jour et la saison.

Pour déterminer si un point de rue est au soleil ou à l'ombre, il faut donc comparer deux choses:

  • Le terrain naturel, c'est-à-dire l'altitude du sol, c'est ce qu'on appelle le Modèle Numérique de Terrain (ou MNT, Digital Terrain Model - DTM).
  • les obstacles au-dessus du sol, c'est ce qu'on appelle le Modèle Numérique de surface (ou MNS, Digital Surface Model - DSM).

Rasteriser les bâtiments

Les données des bâtiments en 3D sont "vectorielles", c'est-à-dire qu'elles décrivent des surfaces, des polygones, des faces avec des coordonnées X, Y et Z. C'est très précis, mais peu pratique pour calculer rapidement les ombres sur de grandes zones. On cherche à convertir ces faces en raster, image en 2D contenant la hauteur de référence pour pour chaque pixel de l'image. Pour celà, les polygones 3D sont découpés en triangles, puis chaque triangle est transformé en plan (au sens d'une équation mathématique).

Cette étape est importante, car un toit n'est pas forcément plat. Un seul polygone peut représenter une face inclinée. En calculant l'équation du plan, on peut estimer l'altitude exacte du toit pour chaque pixel couvert par ce triangle. Le résultat est une image où chaque pixel contient la hauteur de la surface urbaine.

Segmenter les rues

Il est difficile d'analyser une rue entière comme un seul objet. Certaines voiries sont particulièrement longues (plusieurs kilomètres) ou sinueuses et se confrontent à des réalités urbaines fort différentes (certains endroits fort ombragés et d'autres complètement ensoleillés). Pour obtenir des résultats plus utiles, il peut être intéressant de découper les rues en segments réguliers selon leur axe principal. Attention que cela donne des phénomènes curieux sur les "places".

Position du Soleil

L'ombre dépend évidemment de la position du Soleil dans le ciel. Pour cela, le plus simple est de récupérer l'information depuis une librairie sun-position dans mon cas. Il faut prêter attention à deux phénomènes:

  • L'azimut (axe Est -> Ouest) est donné dans le sens anti-trigonométrique ou horaire
  • Une altitude (axe Bas -> Haut) trop faible rend les ombres extrêmement longues, parfois instables à modéliser et d'autant plus intenses à calculer correctement (puisqu'il faut considérer des zones d'action beaucoup plus grandes).

Calcul de l'ombre

Une fois qu'on possède le Modèle Numérique de Surface (MNS) et que la position du Soleil est connue. Il ne reste plus qu'à faire tourner la grosse moulinette. L'idée générale est simple: pour chaque pixel de la grille, on regarde si un autre pixel situé dans la direction du Soleil est assez haut que pour masquer le rayon solaire.

Mathématiquement, un point est à l'ombre si, quelque part entre lui et le Soleil, il existe un obstacle dont la pente apparente dépasse l'angle du Soleil:

\( (\text{hauteur_obstacle} - \text{hauteur_actuelle}) / \text{distance}> \tan{(\text{altitude_soleil})} \)

Il est très important de tester rapidement que son code fonctionne sur un exemple simple. En effet, les conventions en terme d'azimut diffèrent et on pourrait se retrouver avec des ombres projetées dans la mauvaise direction.

Pour effectuer ce calcul, plusieurs considérations peuvent être importantes:

  • Garder une marge importante sur la zone d'action des ombres à considérer. En effet, un bâtiment de 30m de haut produit des ombres sur quasi 350m lorsque le Soleil a une altitude de 5°.
  • Travailler par "tuile", afin d'obtenir une hauteur maximale pour chacune d'elle et ainsi ne considérer que celles utiles au calcul.
  • La résolution de la carte des ombres (shadow map), plus cette résolution est petite, plus les calculs explosent. Bruxelles fait environ 162km², avec 1 pixel = 1m², cela veut dire des images de 16.259 pixels * 14.525 pixels, ou 236.161.975 pixels => 113 fois une image en 1080p.
  • Optimiser au maximum le code. Cela prend un temps loin d'être négligeable d'exécuter le code, tout gain, même infime peut vite s'additionner.

Ombre et géométrie des rues

Une fois qu'on a obtenu notre carte des ombres (shadow map), il reste à croiser la carte raster des ombres avec un raster de labels des segments de rue.

On a découpé les rues en petit segments. On leur attribue chacun un identifiant unique et on projette sur une grille en deux dimensions, on obtient un truc comme suit:

00000
01110
01122
00022

où "1" représente le fait que le pixel appartient au segment 1.

La shadow map est une matrice booléenne:

FFFTT
FTTFF
TFFTF
TFFTT

On applique alors le masque pour chaque segment de rue, et on compte les différentes statistiques entre le nombre de pixels associés au segment et ombragés/ensoleillés. Attention que plus les segments sont petits, plus les variations d'ensoleillement peuvent être instables.

Génération de la carte

Finalement, il ne reste plus qu'à générer l'image entière. Et on se confronte à de nouvelles difficultés …

Le calcul global a été divisé en plein de tuiles afin de permettre un meilleur parallélisme (et une éventuelle reprise en cas de crash). Pour générer l'image, il faut recombiner toutes ces informations en un tout.

On cherche à combiner 3 informations en une seule grande image:

  • Le Modèle Numérique de Terrain
  • Le Modèle Numérique de Surface
  • Les données d'ombre pour chaque segment de rue

Pour des questions d'esthétisme, on a cherché à appliquer une ombre d'une autre couleur pour les ombres liées au terrain que celles liées aux surfaces. Seulement, calibrer la couleur des ombres du terrain était difficilement maîtrisable et sont donc toutes projetées avec la même "force", peut importe l'altitude.

On se retrouve avec:

  • le fond en relief du Modèle Numérique de Terrain
  • les ombres portées
  • bâtiments en contour noir
  • segments de rues (plus c'est lumineux, plus c'est jaune, plus c'est ombragé, plus c'est noir)

Cela donne ce genre d'images:

Pour le quartier Tour & Taxi:
Pour le quartier du Berlaymont:

Conclusions

Pour aller plus loin, il aurait été intéressant de posséder les aménagements urbains ainsi que les arbres. Malheureusement, les données manquent et je ne m'y connais pas assez en géomatique que pour récupérer cette information d'une autre manière.

À noter qu'il existe des outils pour visualiser les ombres:

  • ShadeMap - un outil web qui simule les ombres projetées par les bâtiments, le relief et les arbres, partout dans le monde et pour n'importe quelle date et heure. Il met à jour les ombres de manière dynamique et est couramment utilisé pour l'analyse solaire, l'architecture et la planification des espaces extérieurs.
  • Zonnige Terrassen - une application dédiée à la recherche de terrasses ensoleillées. Elle combine la position du soleil avec les données des bâtiments environnants pour estimer si un lieu est au soleil et pendant combien de temps, aidant ainsi les utilisateurs à choisir les meilleurs endroits pour s'installer dehors.
  • JveuxDuSoleil - une application web qui simule les ombres urbaines et met en évidence les zones ensoleillées sur une carte en fonction de la date, de l'heure et de la hauteur des bâtiments. Elle permet d'anticiper où la lumière du soleil sera présente dans les villes et chercher une terasse sur laquelle s'abreuver.