Développement d'un package R pour le calcul d'indicateurs territorialisés

Un petit mot de présentation ?

Je m’appelle Cindy Andrieu-Dupin. Je suis directrice d’études et de projets numériques sur les transports à la DRIEAT, à la direction régionale aménagement transports d’Île-de-France, donc c’est un service déconcentré des ministères de l’Aménagement du territoire et de la Transition écologique.

Dans le cadre d’une initiative du ministère qui s’appelle la mission connaissance, je pilote actuellement un projet à périmètre national en collaboration avec le Commissariat général au développement durable et la Direction générale des infrastructures de transport et des mobilités, la DGITM.

Ce projet consiste en le développement d’un outil de suivi des politiques publiques de mobilité qui s’appelle le tableau de bord des mobilités durables.

En fait, cet outil se présente sous forme d’une application web qui s’adresse à la fois aux services de l’État en charge des transports et aux collectivités territoriales. Il a pour objectif de contribuer à identifier les leviers d’action qui peuvent être mobilisés pour réduire les émissions de gaz à effet de serre liées aux transports et d’orienter les stratégies de mobilité à l’échelle territoriale.

Cela repose sur une base d’indicateurs communs qui sont calculés aux différentes échelles (communes, intercommunalités, départements, régions, et France entière). Ces indicateurs sont construits à partir de données publiques nationales avec une fréquence d’actualisation annuelle.

Ce sont des indicateurs qui permettent, par exemple, de connaître les pratiques de déplacements sur le territoire : part modale, composition du parc de véhicules ou encore le bouquet de services de mobilité disponibles comme les linéaires d’aménagements cyclables ou la couverture du réseau de transport en commun.

Ces indicateurs sont calculés avec le langage R, puis stockés dans une base de données SQL qui est ensuite interrogée directement par l’application web.

C’est pour nous aider à structurer et à optimiser le calcul de ces indicateurs que nous avons fait appel à Data Champ’.

Comment as-tu découvert Data Champ’ et qu’est-ce qui t’a convaincue de collaborer avec nous ?

Lorsque nous avons sollicité Data Champ’, nous étions à une phase d’expérimentation du développement de l’application. Nous avions déjà réalisé un premier prototype avec une douzaine d’indicateurs calculés au sein d’un package R.

Dans le cadre du passage à l’échelle du projet et du développement de l’application finale, nous souhaitions d’une part revoir la structuration de ce package et l’optimiser, et d’autre part restructurer complètement la chaîne de calcul dans un objectif de standardisation des étapes permettant de calculer des indicateurs territorialisés, c’est-à-dire déclinés aux différentes échelles géographiques.

Pour cette mission, nous avons fait du sourcing, notamment sur Internet, et contacté plusieurs prestataires ayant des compétences en R, qui était la compétence principale ciblée.

Parmi eux, nous avons trouvé Data Champ’. Lors des entretiens avec les différents prestataires potentiels, nous avons tout de suite été impressionnés par leur très bonne compréhension de nos besoins. Déjà lors de notre premier échange avec Charles et Marc-Aurèle, ils avaient des premières pistes de travail à nous proposer, et cela même avant l’envoi de leur proposition commerciale.

Quand nous avons reçu leur proposition technique, qui était très claire et bien détaillée, cela a conforté notre choix de collaborer avec Data Champ’ pour cette mission.

Qu’est-ce qui t’a le plus marqué dans notre façon de travailler ?

Ce que j’ai particulièrement apprécié avec l’équipe de Data Champ’, c’est qu’au-delà de leur expertise en R, qui est indéniable, ils ont aussi une vraie expertise globale de l’ensemble des étapes de traitement de la donnée. Ils ont également pris en compte notre contexte métier, ce qui n’est pas toujours facile lorsqu’on intervient dans un domaine qu’on ne connaît pas.

Le fait qu’ils aient pris en compte ce contexte leur a permis de proposer des hypothèses de traitement en cohérence avec les données manipulées. Par exemple, lorsqu’il y avait des valeurs suspectes dans les données sources, ils cherchaient à comprendre la réalité terrain et à appliquer les bons traitements en conséquence.

Je me souviens notamment d’un sujet sur les doublons des stations de recharge pour véhicules électriques : certaines stations avaient des attributs différents et Charles avait pris l’initiative d’aller vérifier sur Internet pour déterminer la réalité et identifier le meilleur traitement à appliquer.

Cela a été très appréciable de voir qu’ils ne se contentaient pas simplement d’exécuter les tâches demandées, mais qu’ils allaient au-delà en cherchant à comprendre la donnée.

Il faut aussi souligner leur capacité à s’adapter à nos contraintes matérielles, qu’il s’agisse des limitations de calcul de nos PC ou des restrictions d’accès du réseau ministériel. Ils ont su contourner ces limites pour nous proposer des solutions permettant d’optimiser certains calculs complexes nécessitant des traitements spécifiques.

Par exemple, les indicateurs sur les arrêts de transport en commun, calculés à partir des fichiers GTFS de l’ensemble des réseaux de transport, représentaient un volume de données très important qui dépassait les capacités de stockage de nos PC. Pourtant, ils ont réussi à trouver une solution pour que le traitement fonctionne.

Il y a aussi eu le traitement des linéaires cyclables avec un redécoupage à l’échelle communale, qui nécessitait des calculs optimisés avec DuckDB. Marc-Aurèle a fait preuve d’une grande patience pour nous aider à contourner les blocages d’installation de DuckDB sur notre réseau ministériel, et au final, cela a fonctionné.

Un grand merci pour cela !

Peux-tu décrire ton expérience globale de collaboration avec notre équipe ?

Nous avons été très satisfaits de notre collaboration avec Data Champ’. L’équipe a fait preuve d’un grand professionnalisme, tout en étant à l’écoute de nos besoins et très réactive tout au long de la mission, notamment pour s’adapter à nos contraintes.

Nos points de suivi hebdomadaires étaient toujours très qualitatifs et dans la bonne humeur, ce qui rend le travail plus agréable. Nous avons pu collaborer en confiance avec eux tout au long de la mission.

Comment est-ce que notre prestation s’intègre dans l’ensemble du projet ?

Grâce aux travaux réalisés par Data Champ’, on a maintenant d’une part un package R bien propre qui est dédié au calcul d’indicateurs territorialisés et pas seulement pour le transport.

C’est un package qui pourrait être mutualisé pour des besoins de calculs d’indicateurs dans d’autres domaines que les transports. On a d’ailleurs d’autres projets du ministère qui commencent à s’en emparer et notamment dans le cadre d’un outil qui est en cours de développement, aussi sur la rénovation énergétique des logements.

Nous allons promouvoir ce package au sein du ministère pour le réutiliser pour d’autres usages.

Dans notre cas, pour le tableau de bord des mobilités durables, on a maintenant grâce à Data Champ’ un vrai projet R dédié au calcul des indicateurs de transport de notre application.

L’équipe de la DRIEAT l’a maintenant bien pris en main. Il répond bien aux attentes, que ce soit en termes d’utilisation et aussi de maintenabilité.

Aujourd’hui l’application du tableau de bord est en cours de déploiement. On a maintenant aussi une application qui est enrichie avec de nouveaux indicateurs puisque Data Champ’ a aussi calculé d’autres indicateurs qui n’étaient pas présents initialement

Maintenant, nous sommes bien outillé pour continuer à enrichir notre application avec d’autres indicateurs et aussi mettre à jour les indicateurs existants avec de nouveaux millésimes chaque année.

Qu’as-tu pensé de la solution que nous avons développée ? Etait-elle en phase avec tes attentes ?

C’est vrai qu’au début, dans le cahier des charges, on avait déjà mis l’accent sur le fait qu’on voulait essayer, que toutes les briques fonctionnelles de traitement de données, de calcul des indicateurs soient mutualisables et puisse resservir à d’autres.

Donc on avait un peu l’idée déjà d’arriver à décomposer un package avec les fonctions de calcul et après un projet R spécifique aux indicateurs transports. Mais les choses n’étaient pas claires sur la faisabilité technique.

Là dessus, l’équipe Data Champ’ a très rapidement proposé ce découpage en deux packages qui ont été optimisés au fur et à mesure de la mission. On avançait un peu aussi pas à pas.

Il y avait aussi le déploiement de l’application qui était fait en parallèle, qui nous re-challengeait sur le format des données de sortie. Donc ce qui n’était pas facile non plus à gérer.

Et là dessus, c’est vraiment l’expertise de Data Champ’ qui a été d’une grande aide pour avoir vraiment cette séparation en deux entre un package qui peut calculer n’importe quel type d’indicateurs avec des fonctions réutilisables et nous notre projet avec les fonctions de calcul des indicateurs de mobilité qui viennent alimenter notre application.

Quel a été l’aspect de notre collaboration que tu as le plus apprécié ?

Pour moi ça rejoint vraiment le fait que c’est la vision pas que R, que j’avais plus ce ressenti avec d’autres expériences.

Vous maîtrisez vraiment toute la chaîne de la donnée et aussi les compétences multiples, que ce soit SQL ou sur d’autres technos où on n’a pas pu exploiter plus que ça.

Comme par exemple l’utilisation de Duck DB, même si on en a fait peu, on aurait pu aller plus loin.

Ou bien aller sur des fichiers parquer pour encore améliorer le application ou optimiser les calculs.

Nous n’avons pas été jusque là. Mais en tout cas c’étaient des choses où on savait que vous aviez les compétences pour nous accompagner.

Et ça, c’était un gros point fort.

Et comme je le disais aussi, vous prenez vraiment en compte le contexte métier qui est quand même importante parce que même si vous ne pouvez pas savoir tout, bien sûr, sur une vision métier, vous essayez quand même à chaque fois de comprendre par vous même ou en nous interrogeant sur qu’est ce que c’est que cette donnée ? Qu’est ce qu’elle représente, pour savoir si les résultats obtenus étaient cohérents.

Y a-t-il un point que tu penses que nous pourrions améliorer pour rendre notre service encore plus adapté ?

Je n’ai pas trop de remarques. J’étais vraiment satisfait de l’ensemble. Donc à part parfois prévenir quand vous faites un push parce qu’on ne voyait pas toujours les derniers pushs. Blague à part, je n’ai pas grand chose à rajouter sur l’amélioration.

Comment vois-tu la suite ?

Nous sommes aujourd’hui à l’étape de déploiement de l’application. Mais bien sûr, c’est une application qui a vocation à être enrichie au fur et à mesure avec de nouveaux indicateurs.

Donc, aujourd’hui, on a pris en main le package et on est plutôt autonomes sur l’ajout de nouveaux indicateurs. On en a déjà rajouté quelques uns depuis la fin de la prestation.

On n’exclut pas de pouvoir refaire appel à Data Champ’ par exemple pour créer des indicateurs complexes qui nécessiteraient des optimisations de calculs dont on n’a pas les compétences.

Je pense notamment au travail avec Duck DB. Ce sont des choses qu’on découvre et donc on pourrait tout à fait resolliciter Data Champ’ pour nous aider sur ces points là et éventuellement pour optimiser de manière globale les requêtes.

On peut également réfléchir à stocker les données plutôt en format parquet pour accélérer les requêtes plutôt que directement en tables SQL.

Pour l’instant ce n’est pas sur les points prioritaires. L’application fonctionne bien telle qu’elle est, mais on n’exclut pas de d’essayer après de l’améliorer et de l’optimiser.

Et en tout cas, on n’hésitera pas à recollaborer avec eux avec Data Champ’ sur la suite de ce projet ou peut être sur d’autres projets futurs.

Merci à Cindie d’avoir pris le temps de répondre à nos questions !

Commentaires

Laisser un commentaire

Les champs obligatoires sont marqués d'un astérisque *

Markdown accepté

Les commentaires sont validés manuellement.
La page va se rafraîchir après envoi.