Vragen van een beginner (u bent gewaarschuwd)

678 views
Skip to first unread message

Maaike

unread,
Jan 18, 2015, 2:55:33 PM1/18/15
to ope...@googlegroups.com
Dag mensen,

Ik ben ontwerper en ik zou graag wat willen experimenteren met de OpenOV API. Ik ben echter geen programmeur en ik heb nauwelijks ervaring met het werken met API's, dus dat wordt een leuke uitdaging :-) Ik ga jullie zeker niet vragen om me alles uit te leggen, maar misschien mag ik een concrete vraag stellen? Ik vond de documentatie op https://github.com/skywave/KV78Turbo-OVAPI/wiki ietwat summier...

Wat ik wil maken is (in eerste instantie) een kleine webpagina voor privégebruik waarop altijd te zien is of de trams en bussen in de buurt van ons huis er al bijna aankomen. Zodat je weet of je je moet haasten of niet. Daarvoor wilde ik graag de REST API op http://v0.ovapi.nl/ gaan gebruiken.

Ik zag dat ik de informatie van een bepaalde lijn kan vinden via bijvoorbeeld http://v0.ovapi.nl/line/HTM_6_1. Ik wil graag een seintje als:
- De tram op of voor een bepaalde halte is (in dit geval bijvoorbeeld Ternoot)
- Zich tussen 2 haltes bevindt (bijvoorbeeld Oostinje en Stuyvesantplein)

Het lijkt me dat de pagina geregeld zichzelf moet verversen en "iets" moet doen als 1 van beide situaties zich voordoen. Maar nu zit ik vast. Hoe achterhaal je waar de tram op een bepaald moment is? Hoe vraag ik dat aan de API, zeg maar? Dat haal ik niet uit de docs... Tips zijn erg welkom.

Stefan de Konink

unread,
Jan 18, 2015, 3:28:34 PM1/18/15
to ope...@googlegroups.com
On Sunday, January 18, 2015 8:55:33 PM CEST, Maaike wrote:
> Ik ben ontwerper en ik zou graag wat willen experimenteren met
> de OpenOV API.

Jij hebt mazzel, want ontwerp(st)ers hebben we te weinig en programmeurs in
overvloed; we koesteren je wens tot verlichting ;)


> Het lijkt me dat de pagina geregeld zichzelf moet verversen en
> "iets" moet doen als 1 van beide situaties zich voordoen. Maar
> nu zit ik vast. Hoe achterhaal je waar de tram op een bepaald
> moment is? Hoe vraag ik dat aan de API, zeg maar? Dat haal ik
> niet uit de docs... Tips zijn erg welkom.

In principe heb je in de OV wereld te maken met twee concepten. Je kijkt
vanaf een halte naar een probleem, of je kijkt vanaf een rit naar een
probleem. KV78turbo is in principe een halte-georieerde aansluiting. Je
krijgt "wijzigingen" te zien op het moment dat er wat verandert op de
halte.

Als je denkt in "ik wil een seintje als de tram ergens rijdt" ben je
eigenlijk aan het kijken naar een rit-georienteerd systeem. Of je houdt
alle haltes op de route bij, en je weet wanneer het voertuig die halte is
gepasseerd.

Wat is nu wijsheid?

- We weten dat in een rit georienteerd systeem we minstens 1x per 60s een
update krijgen, maar daarvoor moeten we wel alle 'updates' uit heel
Nederland verwerken. Zie daarvoor: ovradar.nl, ovzoeker.nl, etc.

- Kijk met een redelijk interval naar de enkele halte waar in je bent
geinteresseerd. Minstens 1x per 5 minuten, maximaal 1x per minuut.

- Uit de API komt wat de voorspelde aankomst tijd op de halte is.
Je kunt dit als een aftel tijd laten zien, en iedere minuut opnieuw
calibreren, door opnieuw die tijd te vragen, zonder dat je hoeft te
weten
waar de tram nu rijdt.

Als je echt geinteresseerd bent in een systeem die seintjes geeft, vind ik
het leuk om daar ook nog eens over na te denken. Maar dan moet ik ook van
je weten hoe je die seintjes wilt ontvangen. Op een server, of een soort
van "long-polling" verbinding in je appje of de website. Een beetje zoals
ovradar ook de busjes update.

--
Stefan

Maaike

unread,
Jan 18, 2015, 3:58:56 PM1/18/15
to ope...@googlegroups.com
Hoi Stefan,

Je moet als ontwerper nu ook wel héél gemotiveerd zijn om hiermee te beginnen, denk ik. Omdat het allemaal zo technisch overkomt. Maar men heeft mij verzekerd dat het moeilijker lijkt dan het is :-)

En kijk, misschien is het niet zo moeilijk. Ik had me namelijk niet gerealiseerd dat er zoiets is als TargetArrivalTime. Is dat de tijd van de dienstregeling, aangepast met realtime-gegevens (bijvoorbeeld als de tram vertraagd is)? Want dan heb ik daar genoeg aan.

Maar hoe achterhaal ik de TargetArrivalTime van een bepaalde halte (zeg, Brouwersgracht)? Kan dat met een URL en wat is daar dan de syntax van?

Groet!
Maaike

Maaike

unread,
Jan 19, 2015, 5:39:28 PM1/19/15
to ope...@googlegroups.com
Bedankt voor je reactie!
Inmiddels ben ik al wat verder, want ik kan al achterhalen waar de trams zich momenteel bevinden: http://www.maaikedelaat.nl/lab/ov.php

De volgende stap zal zijn: achterhalen hoe lang het duurt voor er een tram op onze halte is. Want ik zag al dat je alleen de voorspelde aankomsttijd kunt zien van de eerstvolgende halte - niet van alle haltes. Klopt dat?

Wel leuk, dit :-)

Erik van Heck

unread,
Jan 19, 2015, 5:42:29 PM1/19/15
to ope...@googlegroups.com
Hoi Maaike,

Je kunt ook per halte de lijnen opvragen en dan specifiek die lijn eruit filteren. Of is dat niet wat je bedoeld? 🙈

Met vriendelijke groeten,


Erik van Heck
media developer & eigenaar

EvanheckCreations
Marsmanstraat 11, 3076 EC Rotterdam

www.evhcreations.nl
in...@evhcreations.nl
010 - 714 23 96
--
Je hebt dit bericht ontvangen omdat je bent geabonneerd op de groep "openov" van Google Discussiegroepen.
Als je je wilt afmelden bij deze groep en geen e-mails van de groep meer wilt ontvangen, stuur je een e-mail naar openov+un...@googlegroups.com.
Ga naar https://groups.google.com/d/optout voor meer opties.

Stefan de Konink

unread,
Jan 19, 2015, 5:43:55 PM1/19/15
to ope...@googlegroups.com
On Monday, January 19, 2015 11:39:28 PM CEST, Maaike wrote:
> Bedankt voor je reactie!
> Inmiddels ben ik al wat verder, want ik kan al achterhalen waar
> de trams zich momenteel bevinden:
> http://www.maaikedelaat.nl/lab/ov.php

Nice!


> De volgende stap zal zijn: achterhalen hoe lang het duurt voor
> er een tram op onze halte is. Want ik zag al dat je alleen de
> voorspelde aankomsttijd kunt zien van de eerstvolgende halte -
> niet van alle haltes. Klopt dat?
>
> Wel leuk, dit :-)

Kijk anders een ons de motorkap van 1313.nl/bb, daar zie je heel wat OVapi
calls langskomen. Volgende haltes (mits van de zelfde rit) pak je dan ook
mee:

https://1313.nl/kv78turbo/journey/VTN_20150119_4045_124_0

--
Stefan

Maaike

unread,
Jan 19, 2015, 5:50:22 PM1/19/15
to ope...@googlegroups.com, in...@evhcreations.nl
Hoi Erik,

Oh, dat klinkt ook erg handig. Maar kun je een tip geven waar ik dan moet beginnen? Ik gebruik nu de Line informatie: https://github.com/skywave/KV78Turbo-OVAPI/wiki/Line

(Ik denk dat ik heel omslachtig bezig ben, maar hey, wel leerzaam).

Maaike

Maaike

unread,
Jan 19, 2015, 5:54:19 PM1/19/15
to ope...@googlegroups.com


Kijk anders een ons de motorkap van 1313.nl/bb, daar zie je heel wat OVapi
calls langskomen. Volgende haltes (mits van de zelfde rit) pak je dan ook
mee:

https://1313.nl/kv78turbo/journey/VTN_20150119_4045_124_0

Goede tip, dank!

 

--
Stefan

Erik van Heck

unread,
Jan 20, 2015, 6:18:00 AM1/20/15
to ope...@googlegroups.com
Hoi Maaike,

Je kunt via https://github.com/skywave/KV78Turbo-OVAPI/wiki/TimingPointCode de komende lijnen ophalen voor een specifieke halte.
Als je daaruit alleen de lijnen filtert die je wilt, zie je toelaat het eerst volgende voertuig komt van een lijn op die halte.

Groet,
Erik

Sven Boor

unread,
Jan 20, 2015, 6:38:03 AM1/20/15
to ope...@googlegroups.com
Hoi Maaike,

TargetArrivalTime is de vertrektijd zoals die in de dienstregeling
staat, ExpectedArrivalTime is de tijd uit de dienstregeling aangepast
met realtime gegevens.

Elke quay, dat is een halte per richting (een simpele halte heeft dus
altijd twee quays), heeft zijn eigen tpc (TimingPointCode). Als je de
timingpointcode van een bepaalde halte wilt opzoeken kun je het best
deze site gebruiken http://www.haltebeheer.nl/

Informatie per halte ophalen kan dan vervolgens met:
/tpc/<tpc>
/tpc/32002646

via de ovapi dus
http://v0.ovapi.nl/tpc/32002646

Als je wil doen wat je in je opzet je laat zien moet je eigenlijk
meerdere api calls combineren, eerst de trams ophalen die langs jouw
halte komen met bovenstaande query en dan met die gegevens
/journey/<DataOwnerCode>_<LocalServiceLevelCode>_<LinePlanningNumber>_<JourneyNumber>_<FortifyOrderNumber>
een nieuwe api-call doen om te bepalen waar de tram zich bevindt.


Groet,

Sven

Maaike

unread,
Jan 21, 2015, 2:25:43 PM1/21/15
to ope...@googlegroups.com
Hoi Sven,

Bedankt voor je uitgebreide antwoord! Ik ga ermee aan de slag.
Ik denk dat ik genoeg heb aan ExpectedArrivalTime, dan hoef ik niet per se meer precies te weten waar de tram is. Al is het wel leuk natuurlijk :-)

Groet,
Maaike

Maaike

unread,
Jan 21, 2015, 2:27:40 PM1/21/15
to ope...@googlegroups.com
Super! Dat is inderdaad ongeveer wat ik nodig heb.
Groet,
Maaike


On Tuesday, January 20, 2015 at 12:18:00 PM UTC+1, Erik van Heck wrote:
Hoi Maaike,

Maaike

unread,
Jan 27, 2015, 5:09:08 PM1/27/15
to ope...@googlegroups.com
Ik heb hem nu aan de praat voor 1 halte: http://www.maaikedelaat.nl/lab/oostinje.php
Valt eigenlijk best mee :-)
Bedankt voor de hulp!



On Tuesday, January 20, 2015 at 12:38:03 PM UTC+1, Sven Boor wrote:

Geert Wirken

unread,
Jan 28, 2015, 8:08:00 AM1/28/15
to ope...@googlegroups.com
On 27-01-15 23:09, Maaike wrote:
> Ik heb hem nu aan de praat voor 1 halte:
> http://www.maaikedelaat.nl/lab/oostinje.php
> Valt eigenlijk best mee :-)
> Bedankt voor de hulp!

Wat handig, dat is de tramhalte bij mij om de hoek! :-)
Zie nog wel "14:5 uur" staan ipv 14:05, dat lijkt me niet de bedoeling?

Geert

Maaike

unread,
Jan 31, 2015, 2:47:46 PM1/31/15
to ope...@googlegroups.com

Zie nog wel "14:5 uur" staan ipv 14:05, dat lijkt me niet de bedoeling?

Nee, dat is niet de bedoeling. Had ik al gezegd dat ik geen programmeur ben? :-D
Ik zal eens kijken of ik het kan oplossen.

Maaike


 

Geert

Stefan de Konink

unread,
Jan 31, 2015, 2:49:20 PM1/31/15
to ope...@googlegroups.com
On Saturday, January 31, 2015 8:47:46 PM CEST, Maaike wrote:
>
> Zie nog wel "14:5 uur" staan ipv 14:05, dat lijkt me niet de bedoeling?
>
> Nee, dat is niet de bedoeling. Had ik al gezegd dat ik geen
> programmeur ben? :-D
> Ik zal eens kijken of ik het kan oplossen.

http://php.net/sprintf

Iets met %.2d ;)

--
Stefan

Maaike

unread,
Jan 31, 2015, 3:09:29 PM1/31/15
to ope...@googlegroups.com
Geweldig, dat was exact wat ik nodig had. Hij doet het nu goed. Bedankt!

Maaike

Maaike

unread,
Feb 4, 2015, 3:33:46 PM2/4/15
to ope...@googlegroups.com
Hoi Sven (of iemand anders),

Ik heb nog een vraag. Hoe achterhaal je van een halte (een TimingPointName dus) de nummers van de bijbehorende quays?
Ik heb gekeken op haltebeheer.nl, maar ik geloof niet dat die site werkt?
Ik zoek ze nu handmatig op op ovradar.nl, maar ik zou het graag willen automatiseren...

Groeten!
Maaike


On Tuesday, January 20, 2015 at 12:38:03 PM UTC+1, Sven Boor wrote:

Stefan de Konink

unread,
Feb 4, 2015, 3:39:55 PM2/4/15
to ope...@googlegroups.com
On Wednesday, February 4, 2015 9:33:46 PM CEST, Maaike wrote:
> Ik heb nog een vraag. Hoe achterhaal je van een halte (een
> TimingPointName dus) de nummers van de bijbehorende quays?
> Ik heb gekeken op haltebeheer.nl, maar ik geloof niet dat die site werkt?
> Ik zoek ze nu handmatig op op ovradar.nl, maar ik zou het graag
> willen automatiseren...

Als je je bij https://ndovloket.nl/aanmelden/ aanmeldt kun je het Centraal
Halte Bestand downloaden. Daarin staan alle quay numbers en namen. Heb je
nou zoiets van "ja maaaaarrrr", kun je hem hier ook gewoon in geojson
downloaden.

http://haltebeheer.nl/data/quays.geojson

Stefan

Maaike

unread,
Feb 4, 2015, 3:53:08 PM2/4/15
to ope...@googlegroups.com
Hey, bedankt voor de snelle reactie!
Ik heb inmiddels een versie die altijd werkt, mits de goede perronnummers in de url staan: http://www.maaikedelaat.nl/lab/vertrektijden.php?quay1=37324580&quay2=37323910

Vandaar.
Bedankt! Eens kijken of ik iets met die JSON kan.

Maaike

Maaike

unread,
Feb 6, 2015, 5:01:36 PM2/6/15
to ope...@googlegroups.com


Als je je bij https://ndovloket.nl/aanmelden/ aanmeldt kun je het Centraal
Halte Bestand downloaden. Daarin staan alle quay numbers en namen.

Dat klinkt goed, maar na het bekijken van de toegestuurde overeenkomst heb ik toch iets van "ja maaaaarrrr" ;-)
De geojson krijg ik om de een of andere reden niet verwerkt. Misschien is het bestand te groot(?). Er is geen manier om via de API op http://v0.ovapi.nl uit te vinden welke quays bij welke halte horen? Wat ik eigenlijk wil maken is zoiets als dit: https://1313.nl/bb/#zoek. Dat kan dus alleen als je uit de voeten kunt met dat enorme geojson-bestand?

Groet,
Maaike

Stefan de Konink

unread,
Feb 6, 2015, 5:30:03 PM2/6/15
to ope...@googlegroups.com
On Friday, February 6, 2015 11:01:36 PM CEST, Maaike wrote:
> Wat ik eigenlijk wil maken is zoiets als dit:
> https://1313.nl/bb/#zoek. Dat kan dus alleen als je uit de
> voeten kunt met dat enorme geojson-bestand?

Dit gaat wel richting een korte studie informatica ja ;) Zo'n zoeksysteem
werkt omdat er een database achter zit of een free text search. Grote
stappen snel thuis is SQLite met FT3 extensies. In het verleden hebben we
SphinxSearch gebruikt en ik denk dat je voor die zoekmachine naar een
embedded Lucene zit te kijken.

Als je het helemaal zelf zou willen maken (zo'n autocomplete) moet je een
systeempje maken dat het bestand verwerkt en in een representatie stopt
waar je snel van de een naar de andere code komt. Een radixtree
<http://en.wikipedia.org/wiki/Radix_tree> is daarvoor best een aardige
oplossing.

Een omnummer API zou best snel te maken zijn denk ik ;) Zeker als je gewoon
een tabel maakt met twee kolommen: haltecode, quaycode.

--
Stefan
Reply all
Reply to author
Forward
0 new messages