[US] Intégrer le calcul des opportunités de loisirs dans LeisureMotive
En tant qu'utilisateur·ice de Mobility, je veux que les zones de loisir soient récupérées automatiquement afin de calculer les opportunités de loisirs.
Idées à l’œuvre
- Pour l'instant les opportunités reposent sur un export manuel d'OSM, avec une requête Overpass qui prend en compte les éléments suivants :
nwr["leisure"]["leisure" != "garden"]["leisure" != "swimming_pool"]["access" != "private"(tous les nœuds, les voies et les relations taguéesleisurequi ne soient pas d'accès privé, et qui ne soient pas des jardins ni des piscines (car ces deux derniers ne sont pas forcément marqués privés) - Il faudrait tout d'abord récupérer automatiquement les données OSM, à l'aide d'Osmium et des données déjà téléchargées
- Il faudrait ensuite trouver des coefficients qui mesurent mieux comment chaque type d'infrastructure peut attirer des personnes (avec des coefficients par m² comme pour les écoles)
- Idéalement, pour certaines infrastructures à très forte fréquentation (ex. Bains des Pâquis à Genève), il faudrait permettre aux utilisateur·ices d'entrer manuellement des capacités
Modélisation concernée
| Sujet | Changements |
|---|---|
| Modes | NC |
| Utilités | NC |
| Coûts | NC |
| Puits et opportunités | Opportunités loisirs |
| Prospective | NC |
Livrables
Données
Tableau des opportunités par commune ?
Visualisations
NC
Visualisations intermédiaires
Visualisation intermédiaire des lieux considérés et de leur densité (éventuellement avec un lien vers Overpass)
Le développement sera réussi si...
- [ ] Tous les tests pré-existants continuent de passer (rétro-compatibilité)
- [ ] Le code respecte les normes de formatage
- [ ] Le taux de couverture ne baisse pas ou marginalement
- [ ] Les visualisations intermédiaires permettent de déboguer
- [ ] Le temps de calcul n'est pas affecté, ou raisonnablement peu
- [ ] Les opportunités de loisir sont récupérées automatiquement
- [ ] La modélisation loisirs est améliorée
Retour d'expérience
Compléter cette partie une fois le développement terminé
@lucas-boh est-ce que tu serais ok de travailler sur cette US ? (suggestion de @FlxPo, ça fait sens vu ton super travail sur les écoles)
Commit : ca253ca3a500d033fa1fb8fde1c50fc022198391
Les données OSM leisure=* sont extraites directement via Osmium. On récupère l’ensemble des points de loisirs, et les polygones sont convertis en points pour avoir un format homogène. J'ai appliqué les filtres suivant sur les résultats :
- exclusion systématique des zones de loisirs privées
access=private. - Les piscines qui ne sont pas tagguées comme publiques sont retirées.
- Les jardins sont exclus (presque en totalité privés).
- Les tables de picnic, les cours de récréation d'école, et les loisirs taggués
commonssont retirés. Selon moi ce ne sont pas des motifs de déplacement, ou du moins négligeables.
L'extraction est faite sur la France et la Suisse. Un petit aperçu de la répartition :
Un score de fréquentation (freq_score) est attribué à chaque type de zone de loisir, puis agrégé par zone de transport comme auparavant. Les scores de fréquentations viennent de ChatGPT avec quelques modifications de ma part, l'idée est d'avoir un template de pondération qu'on pourrait éditer. Il n'est pas encore possible de modifier le score d'un centre de loisir en particulier (comme le Bains des Pâquis à Genève @Mind-the-Cap).
Les coefficients et le mapping sont dans un fichier dédié leisure_freq.py.
Quelques exemples d’ordres utilisés (plus l'ordre est élevé, plus le centre de loisir sera vu comme fréquenté) :
- 4 : piscines publiques, centres sportifs, salles de sport, parcs d’attractions.
- 3 : parcs, aires de jeux, stations de fitness, ports de plaisance.
- 2 : tables de ping-pong, équitation, pêche.
- 1 : petits espaces verts, saunas.
Je n'ai pas encore essayé de faire passer les tests vu que je crois qu'il y a de la réorganisation, lequel permet de tester si le parsing est ok ?
J'ai aussi ajouté la même fonction que pour les études pour la visualisation :
Génial ! Hyper bien expliqué, merci beaucoup @lucas-boh (superbe carte franco-suisse d'ailleurs, les couleurs c'est selon les catégories ? tu as un code pour la reproduire ?)
Tu dis que les tables de pique-nique sont retirées, mais je les vois avec un coef de 2 ici : https://github.com/mobility-team/mobility/blob/leisures/mobility/parsers/leisures_frequentation.py#L90-L91
Personnellement, je suis plutôt pour les garder, car elles sont un proxy pour les chemins de randonnées, difficiles à repérer sinon (idée néanmoins : utiliser le tag sac_scale (doc) pour ce motif spécifique)
Par ailleurs, je serai pour avoir les nombres beaucoup plus élevés pour les stades, piscines et centres de sport car la fréquentation me semble un ou deux ordres de grandeur (voire trois) à une table de ping. Preneuse de ton avis @FlxPo
Concernant les tests, à la réflexion je me dis qu'un test spécifique au parseur serait chouette !