etalab / transport-site

Rendre disponible, valoriser et améliorer les données transports
https://transport.data.gouv.fr
192 stars 30 forks source link

Netex non généré pour le réseau Marinéo après un mois de publication #1527

Closed Miryad3108 closed 3 years ago

Miryad3108 commented 3 years ago

Il n'y a que le GeoJson qui a été généré dans les ressources communautaires alors que la ressource a été mise à jour il y a un mois : https://transport.data.gouv.fr/datasets/horaires-theoriques-du-reseau-de-transport-marineo/

[Je n'ai pas cliqué sur "Générer Ressources communautaires" dans le Backoffice pour que vous puissiez mieux détecter d'om l'erreur]

thbar commented 3 years ago

Merci pour le ticket, je vais aller voir (jeudi après-midi si tout va bien).

fchabouis commented 3 years ago

J'ai creusé cette histoire, j'ai compris ce qu'il se passait, il y a plusieurs aspects

La conversion échoue silencieusement

Il y a le côté silencieux que l'on a bien en tête avec @thbar , pour le moment on n'a pas de retour quand une conversion se passe mal et il va falloir changer cela.

Le fichier GTFS a un souci

Dans le fichier stops.txt, à partir de la ligne 662 (les 3 dernières), il manque une colonne. Il n'y en a plus que 10 au lieu de 11.

Correction possible : Ajouter une virgule à ces 3 dernières lignes et re-uploader le fichier sur data.gouv. J'ai fait le test et la conversion passe avec succès.

Mais la validation passe ?!

Notre validateur utilise la crate gtfs-structure, qui lit les fichiers csv avec l'option flexible à true et c'est n'est pas configurable. Cette option ignore justement les erreurs de changement de nombre de colonnes.

pub fn flexible(&mut self, yes: bool) -> &mut ReaderBuilder
Whether the number of fields in records is allowed to change or not.
When disabled (which is the default), parsing CSV data will return an error if a record is found with a number of fields different from the number of fields in a previous record.
When enabled, this error checking is turned off.

Alors que gtfs2netex, l'outil de conversion que nous utilisons, lui ne l'ignore pas et échoue. Je n'ai pas vu non plus de possiblité de régler ça par de la configuration, mais je ne suis pas sûr de moi.

Peut-être que @antoine-de ou @Tristramg pourraient nous tuyauter ?

antoine-de commented 3 years ago

hum c'est embêtant en effet, c'est assez commun pour les GTFS de ne pas avoir toutes les colonnes remplies (il y a plusieurs issues sur rust-csv la dessus, par exemple https://github.com/BurntSushi/rust-csv/issues/33 )

Il faudrait rajouter le flexible = true à https://github.com/CanalTP/transit_model je pense. Le plus simple c'est de leur faire une issue et vous avez un contrat de maintenance il me semble (et de base ca devrait être rapide).

fchabouis commented 3 years ago

Le NeTEx est maintenant généré :+1: