La documentation suivante a pour but de générer un visuel permettant d’apprécier l’indice universel du climat thermique (ou UTCI) moyen quotidiennement sur l’année représentée par un fichier météo.
Dans ce cadre, nous utiliserons uniquement des outils de visualisations relatifs à Ladybug, permettant d’afficher les données d’un fichier météo.
Le résultat de ce script Grasshopper affiche les valeurs moyennes quotidiennes sous la forme d’une heatmap — une représentation graphique de données où les valeurs individuelles contenues dans une matrice sont représentées par des couleurs.
1. Prérequis
Les logiciels suivants sont requis pour l’utilisation de ce script :
- Rhino 3D (v7+) (+ Grasshopper)
- Ladybug Tools (1.8.0+) un guide d’installation est disponible ici
2. Fichiers modèles
Pour faciliter le suivi de la méthode décrite, un fichier Rhino et son script Grasshopper correspondant sont disponibles :
Le fichier Grasshopper d'exemple contient les dépendances suivantes, il convient de les installer :
- Ladybug Tools 1.8.0 (Guide d’installation) ;
- Bifocals 0.5.0.0 (optionnel, pour l’affichage des noms de composants) ;
- Moonlight 1.0.0.0 (optionnel, pour l’affichage en mode sombre).
Le seul élément contenu dans le fichier Rhino est un mesh servant de grille pour l'affichage des données.
3. Décomposition du script
Le script est divisé en groupes (visibles sous la forme de blobs de couleur et portant chacun un titre). La suite de ce guide indique l’usage de chacun de ces groupe et sa fonction dans la définition.
3.1. Fichier météo
L’adresse du fichier météo est à insérer dans le Panel
rouge de ce groupe.
Ce guide indique la marche à suivre pour la recherche et l’insertion d’un fichier météo dans un script Ladybug.
Lien direct vers la base de données Climate One Building France.
3.2. Calcul et période d’analyse
Le composant LB UTCI Comfort
calcule l’UTCI à partir de la température de l’air, de l’humidité relative et de la vitesse du vent. Lancer ce composant en basculant le FalseStart
sur True
.
Ensuite, les résultats du calcul sont formatés pour être affichés sous la forme d’une heatmap, avec la transformation de donnée horaire en donnée quotidienne moyenne (LB Time Interval Operation
), puis un composant LB Deconstruct Data
pour extraire uniquement les valeurs résultantes sous la forme d’une liste.
3.3. Mise en forme
Ces composants sont destinés à mettre en forme les données sur le mesh présent dans le fichier, d’y appliquer une échelle et des couleurs spécifiques. Cette partie peut être adaptée selon votre charte graphique.
3.4. Bake
Afin d’exporter le résultat de la visualisation vers Illustrator et de finaliser sa mise en page, il est nécessaire de “bake” les objets, pour ensuite les exporter au format .ai
.
Dans Grasshopper, un "bake" désigne le processus consistant à convertir des géométries ou des objets générés dynamiquement dans Grasshopper en objets permanents dans Rhino.
Un composant Button
est relié au composant LB Mesh to Hatch
. En cliquant sur le bouton, la heatmap est créée sous la forme de hatches dans Rhino (dans le calque nommé par le Panel
, ici “Default”).
Pour également exporter les textes, sélectionner le composant Text Tag 3D
, cliquer-droit n’importe où sur le canevas, et choisir Bake
.
Les hatches et les textes peuvent être sélectionnés, puis exportés vers le format .ai
, ou n’importe quel autre format vectoriel permettant de gérer les polices, mises en page, etc.
3.5. Statistiques et analyse
Ce groupe en gris permet d’apprécier la distribution des heures confortables, trop froides, ou trop chaudes. Un composant GhPython Script
a été réalisé sur mesure pour calculer ces résultats, et est ici rendu disponible pour faciliter la lecture de cette distribution en heures ou en jours (selon les valeurs données en entrée).
Ce composant contient le code suivant :
# GhPython Script for Calculating Percentages of Categories
# Initialize counts
tooCold = 0
tooHot = 0
comfortable = 0
# Total number of values
totalValues = len(values)
# Check if the list is empty to avoid division by zero
if totalValues == 0:
tooCold = 0
tooHot = 0
comfortable = 0
else:
# Iterate through the list and count based on conditions
for value in values:
if value == -1:
tooCold += 1
elif value == 1:
tooHot += 1
else:
comfortable += 1