mobility-team / mobility

Mobility, an open-source library for mobility modelisation
MIT License
16 stars 10 forks source link

Adapter le code pour permettre de modéliser des zones de transport hors de France #116

Open FlxPo opened 1 month ago

FlxPo commented 1 month ago

Pour le moment Mobility se base exclusivement sur des données INSEE / IGN françaises. La modélisation de zones frontalières comme la Suisse nécessite cependant d'y ajouter des données d'autres sources, avec une organisation différente.

Les modifications à apporter sont les suivantes :

@Mind-the-Cap tu avais déjà commencé à travailler sur les données suisses, donc je veux bien ton avis sur ces différents points.

FlxPo commented 1 month ago

Suivi des modifications dans la branche https://github.com/mobility-team/mobility/tree/add-switzerland.

Mind-the-Cap commented 1 month ago

J'avais fait ça à l'ancienne, plusieurs classeurs dans le dossier CH.

En plus de ce que tu notes, il y a la superficie des communes (utilise pour les distances internes à une commune du modèle de radiation).

Il faudra aussi probablement publier une table (sur data.gouv.fr ?) pour faire la correspondance entre codes INSEE pour communes étrangères et codes locaux de ces communes.

Le revenu moyen suisse est environ 2 fois le revenu français, on peut donc doubler l'utilité pour commencer !

FlxPo commented 1 month ago

J'ai ajouté les communes suisses à la nouvelle classe LocalAdminUnits. Une question : est ce qu'on choisit un CRS de référence pour Mobility ? Lat / lon WGS 84 est le plus général mais on pourrait aussi choisir un standard européen comme le ETRS89 / 3035. Un avis @Mind-the-Cap ?

Mind-the-Cap commented 1 month ago

Je serais plutôt d'avis de prendre WGS 84, notamment pour être alignés avec OSM.

FlxPo commented 1 month ago

OK. Pour le moment j'ai choisi de rester sur ETRS89 / 3035, ce qui permet de calculer des distances et des aires directement, sans besoin de reprojection à chaque fois qu'on fait une opération géométrique (buffer, aire, distance...). Il faudrait vérifier si le niveau de distorsion est acceptable pour nos usages.

Je viens de faire un push avec l'intégration des "local admin units" dans la classe TransportZones.

Plusieurs breaking changes :

FlxPo commented 1 month ago

Nouveau push avec une classe GeofabrikRegions qui permet de gérer le téléchargement des extracts geofabrik.

Pour le moment on récupérait les données "latest", mais désormais ce sera à une date fixe ("240101" par exemple) pour éviter des soucis de désynchronisation que j'ai rencontrés en essayant de combiner des extracts français et suisses avec plusieurs mois d'écart.

FlxPo commented 1 month ago

Nouveau push avec l'ajout des données GTFS pour la Suisse. Pour le moment j'utilise l'aggrégation de tous les flux suisses produites par geOps. On pourrait aussi utiliser les données de opentransportdata.swiss mais le site ne fonctionnait pas hier. Je n'ai pas trouvé d'équivalent à transport.data.gouv.fr qui permettrait d'éviter de charger un GTFS de plus de 100 Mo qui couvre la Suisse entière (et les liaisons frontalières).

J'ai également remplacé tous les identifiants INSEE restants par les "local_admin_unit_ids". Tous les tests passent !

Une modification importante : j'ai changé la stratégie d'éxecution de la classe Asset pour être "lazy". Les données sont créées et chargées en mémoire uniquement si elles sont nécessaires (si on a besoin de la dataframe ou geodataframe pour faire qqc avec par exemple).

FlxPo commented 2 weeks ago

Nouveau push avec l'intégration des données OFS de répartition des emplois et des actifs, ainsi que de l'utilité apporté par le fait de travailler en Suisse plutôt qu'en France.