Detta inlägg är gammalt och kan innehålla inaktuell information.

Tolkning av sDaysB i XML-svar

Hej!

Jag undrar hur sDaysB ska tolkas i XML-svaret. Dokumentationen av svaret är inte tillräckligt utförligt för att jag ska förstå hur det ska tolkas. Det hade kanske hjälpt med ett exempel för sDaysB samt vad bokstäver/siffror i exemplet betyder.

Detta t.ex. "CF9F000000000000000000000000000000". Motsvarar varje tecken en vecka? Nollor betyder att det inte är någon trafik? Vad betyder tecknen C, F, 9?

Tacksam om jag kan få hjälp med detta!

Vänligen,
Claes

Kommentarer

  • Hej Claes,

    Fältet är relaterad till "ServiceDays" och tyder på när en vis trip körs (till exempel varje måndag förutom röda dagar mellan 15 juli och 15 augusti). Tyvärr har vi själv inte mycket information om det här fältet, jag försöker att dela det som jag vet:

    sDaysR: Regular service days ([…] [on which] the train has a regular schedule)[…].
    sDaysI: Irregular service days for this trip ([…] [on which] the train has a different schedule)[…].
    sDaysB: Schemat för hela året.
    (Källa: https://gist.github.com/derhuerst/77481f7a6115054f398799006c7062ef#file-rest-1-23-xsd-L1441,
    https://github.com/public-transport/vbb-hafas/issues/3)

    Du hittar ett exempel hur man tolkar det här:
    https://github.com/public-transport/hafas-client/blob/42b2a8a7bfd163504317279b967aa64e81996247/parse/journey.js#L6

    Jag kommer att lägga till ResRobot som datakälla där, då kan du testa/jämföra med den bibliotek.

    Bert på Trafiklab
  • Stort tack för hjälpen!

    Jag ska försöka luska lite mer i detta när tid finns 😀
  • Gammal fråga men eftersom man kommer hit när man googlar kan jag ju svara på frågan. Varje bokstav är ett hexadecimaltal motsvarande 0-15, där A=10, B=11, F=15.
    Konvertera varje tecken till binärt format, 4 bit.
    9 = 9 = 1001 dvs 8*1 + 4*0 + 2*0 + 1*1
    A = 10 = 1010 dvs 8*1 + 4*0 + 2*1 + 1*0
    C = 12 = 1100 dvs 8*1 + 4*1 + 2*0 + 1*0
    F = 15 = 1111 dvs 8*1 + 4*1 + 2*1 + 1*1

    Hela strängen representerar alla dagar i det intervall man får.
    CF9F000... som i frågan blir då
    1100 1111 1001 1111 0000 0000 0000...
    Intervallet böjar säkert på en torsdag i frågeställarens fall. Då åker bussen to, fr, men inte lö sö, sen är det fem ettor på raken för nästa veckas vardagar sen två nollor för helgen sen 5 ettor för nästa vecka sen är det massor med nollor vilket betyder att bussen inte går resten av intervallet, det kan vara tex att sommartidtabellen börjar där istället.

    Jag har inte läst att det fungerar så här men är 100% säker då mina tester matchar inte bara helger utan även röda dagar som 1/5 och kristi himmelsfärd där det är 0 mitt i veckor, samt att antal tecken*4 = antal dagar i intervallet.
    Henrik

Kommentera eller skriv ett nytt inlägg

Ditt namn och inlägg kan ses av alla. Din e-post visas aldrig publikt.