Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
jsonapihoraires [2017/07/25 08:51]
nw
jsonapihoraires [2017/08/31 15:02] (Version actuelle)
nw
Ligne 1: Ligne 1:
 ===== Réponse JSON horaires théoriques API ===== ===== Réponse JSON horaires théoriques API =====
 ==== Exemple de réponse d'un item (une circulation) ==== ==== Exemple de réponse d'un item (une circulation) ====
 +<​grid>​
 +<col sm="​6">​
 Voici un des items obtenus. Sa lecture vous sera assez simple, quelques points cependant. Voici un des items obtenus. Sa lecture vous sera assez simple, quelques points cependant.
 +</​col>​ 
 +<col sm="​6">​
 <​code>​ <​code>​
 { {
     "​calendars":​ [     "​calendars":​ [
 </​code>​ </​code>​
-Liste des périodes de validité de la circulation donnée+</​col>​ 
 +</​grid>​ 
 + 
 +<​grid>​ 
 +<col sm="​6">​ 
 +Liste des périodes de validité de la circulation donnée. Ici, les données présentées signifient que le train circule du 28/08/2017 au 02/09/2017 les lundi, mardi, mercredi, jeudi et vendredi.\\ 
 +Ce n'est pas la manière la plus simple de récupérer ces données de validité, le **validity_pattern** contenu en fin de réponse est nettement plus simple à prendre en compte informatiquement. 
 +</​col>​ 
 +<col sm="​6">​
 <​code>​ <​code>​
        {        {
Ligne 25: Ligne 36:
         }         }
     ],     ],
 +</​code>​
 +</​col>​
 +</​grid>​
 +
 +<​grid>​
 +<col sm="​6">​
 +« codes »  et « disruptions » ne nous intéressent pas, nous voulons juste les horaires et circulations théoriques.
 +</​col>​
 +<col sm="​6">​
 +<​code>​
     "​codes":​ [],     "​codes":​ [],
     "​disruptions":​ [],     "​disruptions":​ [],
 +</​code>​
 +</​col>​
 +</​grid>​
 +
 +<​grid>​
 +<col sm="​6">​
 +L'​identification de la circulation se fait logiquement par le numéro de circulation SNCF « name » attention cependant, il n'est pas toujours unique (des bus partagent parfois des mêmes numéros, voire du FRET avec du Transilien, pas totalement fiable !), et l'id qui lui est forcément unique (vous aurez remarqué qu'il contient le numéro SNCF).
 +</​col>​
 +<col sm="​6">​
 +<​code>​
     "​id":​ "​vehicle_journey:​OCE:​SN855807F01001",​     "​id":​ "​vehicle_journey:​OCE:​SN855807F01001",​
     "​journey_pattern":​ {     "​journey_pattern":​ {
Ligne 33: Ligne 64:
     },     },
     "​name":​ "​855807",​     "​name":​ "​855807",​
 +</​code>​
 +</​col>​
 +</​grid>​
 +
 +<​grid>​
 +<col sm="​6">​
 +Les **stop_times** sont en réalité la liste des arrêts avec les heures d'​arrivée et de départ, **headsign** correspond au numéro de la circulation affiché (attention à la parité, ou aux lignes Transiliennes) ainsi que le lieu **stop_point**
 +</​col>​
 +<col sm="​6">​
 +<​code>​
     "​stop_times":​ [     "​stop_times":​ [
        {        {
Ligne 38: Ligne 79:
             "​departure_time":​ "​060000",​             "​departure_time":​ "​060000",​
             "​headsign":​ "​855807",​             "​headsign":​ "​855807",​
 +</​code>​
 +</​col>​
 +</​grid>​
 +
 +<​grid>​
 +<col sm="​6">​
 +Un arrêt est déterminé par sa géolocalisation (lat/lon), son id unique, qui contient notamment à sa fin le [[numerouic|numéro UIC]] de l'​arrêt sur 2+6 chiffres.\\
 +Le **label** est le nom de l'​arrêt ou de la gare (ce n'est pas la même chose, voir la page des [[glossaire|définitions]],​ **name** également (à discriminer ?).
 +
 +Suivent à la suite la liste des arrêts prévus, dans l'​ordre d'​arrivée.
 +</​col>​
 +<col sm="​6">​
 +<​code>​
             "​stop_point":​ {             "​stop_point":​ {
                 "​coord":​ {                 "​coord":​ {
Ligne 59: Ligne 113:
        {...}        {...}
     ],     ],
 +</​code>​
 +</​col>​
 +</​grid>​
 +
 +<​grid>​
 +<col sm="​6">​
 +L'​objet **trip** contient de quoi identifier la circulation à nouveau, de la même manière que nous avons vu au début (les données sont d'​ailleurs les mêmes).
 +</​col>​
 +<col sm="​6">​
 +<​code>​
     "​trip":​ {     "​trip":​ {
         "​id":​ "​OCE:​SN855807F01001",​         "​id":​ "​OCE:​SN855807F01001",​
         "​name":​ "​855807"​         "​name":​ "​855807"​
     }     }
 +</​code>​
 +</​col>​
 +</​grid>​
 +
 +<​grid>​
 +<col sm="​6">​
 +Enfin, le **validity_pattern** est une manière plutôt commode de représenter les validités de circulation d'une circulation puisqu'​il s'​agît bêtement d'​indiquer jour par jour si le train circule (1) ou non (0) à compter d'une date donnée (**beginning_date**) incluse.
 +
 +L'​avantage de cette représentation est qu'​elle évite tout bug d'​interprétation des inclusions ou exclusions pouvant être contenues dans le champ **calendars** vu plus haut, et est extrêmement simple à //​parser//​... :)
 +</​col>​
 +<col sm="​6">​
 +<​code>​
     "​validity_pattern":​ {     "​validity_pattern":​ {
         "​beginning_date":​ "​20170703",​         "​beginning_date":​ "​20170703",​
Ligne 69: Ligne 145:
 } }
 </​code>​ </​code>​
 +</​col>​
 +</​grid>​