auto-mat / prahounakole

Cyklistická mapa Prahou na kole
GNU General Public License v3.0
10 stars 5 forks source link

integrace dat ze sčítačů cyklistů #1

Open washeck opened 12 years ago

washeck commented 12 years ago

TSK provozuje automatické sčítače cyklistů s veřejně přístupnými daty na http://unicam.camea.cz/Discoverer/BikeCounter/map. Data z jednotlivých sčítačů za vybrané období je možné stáhnout ve formátu CSV.

Bylo by užitečné integrovat data ze sčítačů do PNK tak, aby bylo možné

1) u jednotlivých sčítačů v mapě ukazovat aktuální stav za daný den a případně graf z historických dat místo v současnosti ručně zadaných hodnot za pár vybraných dní (viz třeba http://mapa.prahounakole.cz/misto/15/)

2) na hlavní stránce PNK (ve wordpressu) ukázat součet zaznamenaných průjezdů za všechny sčítače

Idealní by bylo stahovat data každou hodinu, ale je třeba dát pozor, abychom nezpůsobili nějaké výpadky sčítačů (a nedošlo k jejich uzavření veřejnosti)

aleszoulek commented 12 years ago

Ahoj,

chteli bychom se na to kouknout se studentikama na zitrejsim django-cs sprintu.

Jedno z moznych reseni by bylo udelat to pres ScraperWiki. Mohlo by to byt rychle hotove a rozjete bez reseni cronu (nebo jinych scheduleru) na strane pnk serveru, kluci by se do toho rychle dostali a integrace do pnk (nebo jinam) by byl jen jednoduchy JS, ktery se bude ptat ScraperWiki (bez zatezovani TSK), a pujde dat lehce jak do mapy, tak do WordPressu. Hlavni nevyhoda je, ze by se poustel jen jednou denne.

Zkusil bych to teda zatim rychle udelat takhle (treba jako proof of concept) a pokud bude potreba a nebude to vyhovovat, tak to presunout ze scraper do PNK a poustet do po hodinach.

washeck commented 12 years ago

Super, díky. ScraperWiki neznám, představoval jsem si přidat do PNK 1 django model a pravidelně ho plnit přes cron nebo celery, ale pokud to bude funkční takhle, proč ne.

aleszoulek commented 12 years ago

Hmm....

Ty URL pro CSV soubory se generujou nejak desne divoce. Netusis, jak to tam je? Nebo budu muset odesilat a parsovat ten form s datama pred tim? Grrr...

A.

washeck commented 12 years ago

To bohužel nevím. Koukal jsem na to jen chvilku a přišlo mi, že se bude muset něco poslat POSTem. Ale detaily fakt nevím.

aleszoulek commented 12 years ago

Jasny. No problemo.

Ja jen doufal, ze primo to CSV URL bude v nejakym rozumnym formatu. Diky moc,

A.

aleszoulek commented 11 years ago

Hola,

tak po dlouhy odmlce jsem si nasel trochu casu, abych s timhle pohnul. Napsal jsem jednoduchej script na scrapovani ten cykloscitacu. Bezi jednou denne a vzdy updatuje dva dny zpet. Zkousel jsem i vic, ale to presahne povolenej CPU time ve free uctu scraperwiki. Navic 2 dny zpet snad v pohode dostacuje.

Zatim mam jednoduchou tabulku datetime (zaohkrouhlenej na cely hodiny, ID scitace, pocet). Viz

https://scraperwiki.com/scrapers/pnk/

Pozn.: Scitac je konkretni pocitadlo s ohledem na smer. Tzn na Vytoni jsou dva scitace (do centra a ven).

Mozna bych tam doplnil par jednoduchejch lookup tabulek, ktery budou vazat scitace na stejnem miste. Popr jejich "human readable nazev".

Druha vec je, ze ID sctacu maji ve zdrojovem HTML nekdy s BC_ prefixem, nekdy bez. Sice je to pro konkretni scitac vzdy stejne, ale bylo by asi hezky to pri parsovani odstranovat.

Zatim jde ID scitace desifrovat jednoduse rucne. Staci se podivat jak vypadaji odkazy zde: https://unicam.camea.cz/Discoverer/BikeCounter/Index

Napr Podolske nabrezi ma na konci kod BCPN-VYBR. Kod je slozenina BC[MISTO]_SMER1SMER2. V tomto pripade PN = Podolske nabrezi, VY = Smer vyton, BR = Smer branik. Scitace budou tedy v tabulce pod kodem PN-VY a PN-BR (popr. BC_PN-VY a BC_PN-BR).

TODO:

aleszoulek commented 11 years ago

Co se tyce dotazovani primo z PNK stranek, viz

wget 'https://api.scraperwiki.com/api/1.0/datastore/sqlite?format=jsondict&name=pnk&query=select * fromswdatalimit 10' -O -

Popr dalsi doc zde: https://scraperwiki.com/docs/api

a priklad zde https://scraperwiki.com/docs/python/ajax_topic_guide/

aleszoulek commented 11 years ago

Hola. Tak jsem tam pridal ty lookup tabulky.

Takze jdou takovyhle dotazy. Tzn znas ID toho jmena, definujes si rozsah datumu a vrati ti to casy a hodnoty v obou smerech.

wget 'https://api.scraperwiki.com/api/1.0/datastore/sqlite?format=jsondict&name=pnk&query=select places.name as place_name, directions.name as direction_name, swdata.count, swdata.datetime from places left join directions on (places.place_id = directions.place_id) left join swdata on (directions.direction_id = swdata.direction) where directions.place_id = "BC_VK-MOKO" and swdata.datetime between "2013-04-15T00:00:00" and "2013-04-16T00:00:00"' -O -