Makina Blog

Le blog Makina-corpus

CANARI : calculs d'indicateurs agro-climatiques avec CDO et Django


Complètement open source, Makina Corpus vous présente aujourd'hui les dessous de CANARI, portail web capable de calculer des indicateurs agro-climatiques.

Réalisée en partenariat avec Solagro, CANARI est un portail web en accès libre destiné aux acteurs agricoles souhaitant calculer directement en ligne, simplement et rapidement, des indicateurs agro-climatiques locaux à partir de projections climatiques.

CANARI c'est quoi ?

Image
CANARI

Crée en partenariat avec Solagro, l'application CANARI permet de calculer instantanément des indicateurs agro-climatiques et de visualiser leurs évolutions dans le temps. L'objectif est d'alerter les acteurs du monde agricole aux impacts du changement climatique sur les élevages et cultures.

Dans cette idée, ce portail web propose des indicateurs agro-climatiques (IAC) qui s'adaptent aux contraintes des utilisateurs afin de refléter au mieux leurs réalités sur le terrain. Les utilisateurs sont ainsi libres de choisir la zone géographique et les différents paramètres des indicateurs : seuils, périodes de calcul, etc.

Pour plus de robustesse dans les estimations, les indicateurs sont calculés sur 6 modèles climatiques en simultané. Les tendances d'évolution selon chaque modèle climatique sont finalement présentées à l'utilisateur via plusieurs graphiques. CANARI offre également la possibilité de télécharger les données qui ont permis de construire ces visualisations.

 
Image
Export des résultats CANARI

 Interface de résultats dans CANARI

Les données

Les données utilisées pour le calcul des IAC proviennent du programme EURO-CORDEX, la branche européenne de l'initiative internationale CORDEX, parrainée par le programme mondial de recherche sur le climat (WRCP) pour organiser un cadre coordonné au niveau international afin de produire de meilleures projections régionales du changement climatique pour toutes les régions terrestres du monde. Les résultats de CORDEX contribuent aux études d'impact et d'adaptation au changement climatique dans le cadre du cinquième rapport d'évaluation (AR5) du GIEC.

 

Ces données sont disponibles à un pas de temps journalier de 1949 à 2100, sur la grille EURO-CORDEX-11, qui couvre l'Europe entière et Afrique du Nord, de résolution spatiale 0.11°x0.11° (~ 12 km2). Leur format est le NetCDF4.
Parmi la masse de données mise à disposition, avec l'aide d'IPSL (Institut Pierre Simon Laplace) nous avons retenu 6  modèles climatiques, avec 16 variables différentes, pour les RCP4.5 et 8.5, soit un volume total de 4 To.

L'équipe Makina Corpus a retravaillé les données climatiques en amont pour les adapter à notre projet, notamment sur les points suivants :

  • Vérification de la cohérence des données : éviter de rencontrer des valeurs aberrantes ou manquantes dans les jeux de données, en bornant les valeurs possibles ou en remplaçant par la valeur du plus proche voisin.

  • Conversion d’unités : cette étape nous permet d'avoir les données dans les unités qui nous conviennent pour les calculs et les visualisations.

  • Réduction du volume : nous avons limité les jeux de données à la France Métropolitaine et sur des intervalles de temps nous permettant des comparaisons simples : le passé récent (1985-2020), futur proche (2020-2050) et le futur lointain (2050-2100). Cela nous permet d'alléger les besoins en stockage serveur.

  • Estimation de variables climatiques clés : certaines variables d'intérêt pour le suivi agricole n'étaient pas disponibles avec les modèles climatiques à disposition, notamment l'évapotranspiration (ETP), qui permet de connaître les pertes en eau des plantes par transpiration, et du sol par évaporation. Cette variable a du être estimée à partir des autres données à disposition, sur la France métropolitaine, à un pas de temps quotidien de 1985 à 2100, pour les 6 modèles climatiques.

Pour toutes ces opérations, la bibliothèque CDO (Climate Data Operator), développée par le Max Planck Institut, a été employée. Cette bibliothèque est une référence du monde de la climatologie et bénéficie d’une communauté active. Elle est en développement continu, et des nouvelles versions régulières permettent d’avoir fréquemment de nouvelles fonctions disponibles ou des corrections de bugs et performances. Basée sur le langage C++ et accessible en ligne de commande, elle offre aussi une enveloppe Python, qui permet à la fois de profiter des performances de calcul en C++ tout en pouvant être intégrée dans des scripts en Python, un des langages de prédilection de développement web de Makina Corpus. Cela permet également d’avoir plus de flexibilité en termes de gestion de la parallélisation des calculs et de pouvoir récupérer les données dans des tableaux de données numpy ou pandas pour de la manipulation plus avancée des données par la suite.
Dernier avantage : CDO gère très bien les données au format NetCDF en entrée. Ce format, optimisé pour le stockage de données à plusieurs dimensions, est celui de nos données EURO-CORDEX, ce qui nous évite de devoir trop repenser la structuration selon des formats de base de données plus classique (par exemple : intégration dans une base de données PostgreSQL).

CDO est donc utilisé en amont pour le traitement des données mais également pour les calculs d'indicateurs à la volée dans l’application (cf. § Conception de la solution informatique).

Pour l'estimation de l'ETP, un script Python nous avait été fourni par l'unité Mars du JRC. Plutôt que de prendre le risque de le retranscrire avec CDO et d'introduire des erreurs d'interprétation, nous avons préféré tester la bibliothèque Python Vaex pour les calculs. Cette bibliothèque applique des calculs complexes sur d'importants volumes de données, de façon optimisée, ultra-rapide. Vaex est basée sur le mappage de la mémoire, et n'effectue aucune copie des données en mémoire, ce qui apporte d’impressionnantes capacités de calcul. La contre-partie de ces performances est la conversion des données d'entrée dans un format compatible avec Vaex. Une fois cette étape passée, le calcul de l'ETP en lui-même ne dure que quelques secondes.

 

Conception de la solution informatique

Quelques contraintes

Le paramétrage libre des IAC implique de développer une application capable de gérer les calculs à demande, instantanément. Elle devra en même temps supporter de nombreuses données en entrée. En effet, le calcul des IAC nécessite un volume important de données climatiques : plus de 240 000 observations/réanalyses (issues des 6 projections climatiques) sont nécessaires pour calculer un IAC n'impliquant qu'une variable climatique, sur un seul point de grille.

En outre, une attention particulière doit être portée sur la restitution des résultats aux utilisateurs, afin de rendre ces données intelligibles au plus grand nombre.

Stratégie de calcul

Notre partenaire Solagro nous a transmis une liste contenant une centaine d’IACs avec leur définition.

Voici quelques exemples de définition d’IACs :

IAC
Définition
Risque d’échaudage
(maïs et tournesol)
Nombre de jours avec les températures maximales strictement supérieures à 32°C, sur une période de risque majeur (juillet-août).
Faisabilité des interventions mécaniques
(vignes)
Dénombrement des jours avec des précipitations strictement supérieures à 2 mm entre avril et fin juillet, empêchant les interventions mécaniques.

Une des principales demandes était de pouvoir modifier les paramètres de définition d’un indicateur pour pouvoir l’adapter aux réalités territoriales d’un utilisateur. En effet, le risque d’échaudage dans le nord de la France sera peut-être à une température maximale moins élevée que dans le sud de la France. Ou sur une période différente selon les régions.


Par ailleurs, nous pouvons voir sur l’exemple donné que les IACs, qui semblent différents au premier abord, sont finalement assez similaires : il s’agit de compter un nombre de jour, où une variable climatique dépasse un certain seuil sur une période donnée. Il est possible d’en tirer une fonction générique de décompte dont les paramètres seraient :

 

  • Une variable climatique
  • Une période de référence
  • Un seuil
  • Et en dernier lieu, un point de grille pour situer l’IAC sur le territoire

Une administration a été mise en place sur le site pour permettre aux gestionnaires de CANARI de construire de nouveaux indicateurs à partir des fonctions génériques élaborées.

En retravaillant la liste des indicateurs fournie par Solagro selon la logique exposée précédemment, nous sommes ainsi passés d’une centaine d’IACs à une dizaine de fonctions génériques. Ces fonctions Python font ensuite le lien avec CDO pour calculer l’IAC à la volée, selon les paramètres qui seront indiqués par l’utilisateur.

Optimisation du temps de calcul

Les calculs étant réalisés à la volée, il est très important de ne pas avoir un temps de calcul trop long, pour limiter le temps d’attente de l’utilisateur et éviter de surcharger le serveur lors d’une utilisation simultanée entre plusieurs utilisateurs. Une attention particulière a donc été portée aux performances de calcul.

Les points suivants ont été mis en application pour des calculs plus efficaces :

  • Réduction au maximum des appels à CDO pour éviter les lectures-écritures sur le disque qui sont les étapes les plus coûteuses. Il faut ainsi chaîner au mieux les opérateurs CDO pour les utiliser en une seule commande.

  • Si le calcul d’un IAC implique plusieurs commandes CDO, écriture des résultats intermédiaires dans des dossiers avec un accès mémoire rapide. Nous utilisons ici ramfs.

  • Chaînage des opérateurs de façon à réduire au maximum les données au plus tôt : il sera plus efficace de sélectionner notre point de grille d’intérêt pour le calcul puis de manipuler la donnée plutôt que de faire la manipulation sur toutes les données de la grille (c’est à dire toute la France) et ensuite réduire le résultat au point de grille d’intérêt.

Nos experts se sont également penchés sur la parallélisation des calculs afin de de lancer les estimations des IAC sur les 6 modèles à la fois, via des cœurs différents. L'équipe s'est donc tournée vers la bibliothèque Python Loky qui permet de gérer ce genre de parallélisation. CDO a également une option de multiprocessing qui peut être activée lors du lancement des commandes. Celle-ci est cependant fonctionnelle seulement pour quelques fonctions données de CDO. De plus, lorsque celle-ci est activée en même temps que le multiprocessing global, les performances sont fortement affectée. Nous écartons donc cette option de notre processus.


La mise en place du multiprocessing a permis de réduire de moitié nos temps de calcul d’indicateurs : de 45 secondes en moyenne, nous sommes passé à 22 secondes avec le multiprocessing.
Cependant 22 secondes restent un temps d’attente trop élevé pour un utilisateur face à son écran. Il a fallu continué à chercher à améliorer les performances. Plusieurs tests ont été menés sur différents aspects sans apporter de résultats probants.
Une dernière piste a été de tester de changer les fichiers NetCDF de version. De base en version 4, une conversion vers le format NetCDF3 pour les fichiers de variables climatiques a été effectuée puis les calculs relancés. Une importante amélioration de la vitesse de calcul a été observée : de 22 secondes, les calculs sont passés à 5 secondes en moyenne ! CDO semble alors optimisé pour le traitement de fichier NetCDF3.

Les autres choix techniques

Makina Corpus utilise uniquement des technologies open source pour le développement de cette application, elle même délivrée en open source. Voici un résumé des choix technologiques faits pour son développement :

Python : le langage Python a été choisi car plébiscité dans le domaine scientifique. Il met en relation avec simplicité le framework web Django et la boîte à outils CDO (décrit précédemment).
Il permet de manipuler avec simplicité et efficacité des jeux de données conséquents qui dans le cas de CANARI servent de source. Ces données peuvent être manipulées facilement avec les bibliothèques scientifiques de référence Numpy et Pandas. Python permet de gérer simplement la mise en parallèle de calculs pour augmenter les performances des algorithmes (bibliothèques multiprocessing et Loky).

Django : Django est un framework web très pratique pour la création de projet de l'envergure de CANARI grâce à la présence, par défaut, de la gestion simple de connexion utilisateur et d'une interface d'administration de CRUD permettant de gérer les données.
Son intégration facile à Celery (décrit plus loin) en fait également un atout.

VueJS : dans un souci de développer de manière propre les interactions Javascript de l'interface, il a été décidé de les implémenter au sein d’un framework Javascript.
Celui-ci est utilisé pour développer des composants d'UI dynamiques, notamment la configuration d'un indicateur par un utilisateur visiteur. Il doit donc être léger, répondre aux standards, et maintenu dans le temps.
Nous avons sélectionné VueJS pour les raisons suivantes :

  • Documentation complète - guides, référence, tutoriels - traduite en français
  • SFC (single file components) mais séparation du code JS, HTML et CSS
  • Language de templating avancé
  • Two-way data binding
  • Optimisé pour des composants simples
  • Gestion d'état par des getters/setters intégrés

Celery : pour lancer des calculs longs (supérieurs à 2 secondes), une bibliothèque de gestion de file de calculs est requise. L'intégration facile de Django à Celery et la présence de celui-ci dans nos templates pré-définis de projet a rendu le choix naturel.

Plotly.js : cette bibliothèque de visualisation est une référence dans le monde de la dataviz et est très flexible, s’adaptant facilement aux besoins, avec une prise en main intuitive. Elle a été sélectionnée par nos équipes pour permettre la gestion de séries temporelles, la sélection/dé-sélection dans la légende des courbes affichées, la fenêtre contextuelle au survol des courbes. Cette interactivité permet aux utilisateurs de mieux comprendre les données présentées à travers les graphiques. Plotly.js offre également un large panel de visualisation qui nous permet d’offrir aux utilisateurs des graphiques poussés comme des boîtes à moustaches (box plot), dans notre cas efficaces pour traduire les tendances des indicateurs.

Conclusion

CANARI permet de faciliter l’accès, la visualisation et l’interprétation des projections climatiques via des IAC. Ce projet nous a fait découvrir de nouvelles technologies, notamment CDO, mais aussi le monde agricole et ses enjeux au niveau climatique.

Image
Canari salon de l'agriculture 2022

Nous sommes heureux d'avoir pu mettre notre expertise à contribution de ce projet. CANARI nous semble être un outil innovant, qui est d'une vraie aide pour la prise de décision dans le secteur agricole. Depuis son lancement au Salon de l'Agriculture 2022 à Paris sur le stand de l'ADEME, le 28 février dernier, l'application compte désormais plus de 500 utilisateurs et plus de 2800 calculs d'indicateurs ont été lancés !

Avec notre partenaire Solagro, nous avons déjà plusieurs idées d'améliorations, d'évolutions et de nouveaux IACs plus poussés. Une extension Europe est également prévue.

N'hésitez pas à visiter l'application et nous faire part de vos retours : consultez l'application CANARI

Remerciements

Nous remercions l'ADEME et le Ministère de l'Agriculture et de l'Alimentation pour le financement apporté pour développer et tester l'application.
Nous sommes aussi reconnaissants pour le travail accompli par Solagro dans la co-construction de CANARI, pour leur apport métier. Nous remercions plus particulièrement Nicolas Métayer et Sylvain Doublet pour leur professionnalisme et leurs disponibilités.

En savoir +

Formations associées

IA/Data Science

Initiation au Python scientifique

Nantes Du 11 au 13 juillet 2022

Voir la formation

Ateliers Data Science

Parcours complet Data Science

Nantes Du 23 au 30 novembre 2022

Voir la formation

Django

Django avancé

A distance (foad) Du 7 au 9 novembre 2022

Voir la formation

Actualités en lien

Image
curieux typologie
30/05/2022 - 11:55

Qu’est-ce qu’une typologie d’utilisateurs dans le monde du vélotourisme ?

Comment positionner rapidement un écosystème pensé autour du voyage à vélo et être rentable pour développer de nouveaux services autour de celui-ci ?

Voir l'article
Image
Geotrek Suricate
24/05/2022 - 12:00

Gestion des territoires : Geotrek pour le traitement des signalements Suricate

Missionnée par le département du Gard et en collaboration avec le ministère chargé des Sports ainsi que la société Arut@m, Makina Corpus approfondit l'intégration du dispositif Suricate aux applications Geotrek-Rando et Geotrek-Admin.

Voir l'article
Image
GeoRivière sélection au Label Territoire Innovant 2022
22/02/2022 - 11:40

GeoRivière récompensée par le Label Or Territoire Innovant 2022 !

Créée en partenariat avec le Parc naturel régional du Haut-Jura et Makina Corpus, l'application GeoRivière a reçu le "Label Or Territoire Innovant 2022" catégorie "Territoire Intelligent et Durable" des Interconnectés.

Voir l'article

Inscription à la newsletter

Nous vous avons convaincus