Putin ajutor, mapping big data

Hello fanii big dada, am si eu peste 10 milioane de lat, long si date-time, vreau sa le vizualizez pe o harta.

Idei?

sunt curios daca ai gasit ceva :slight_smile: cu fusion tables cred ca poti folosi pana la vreo 300k pe harta.

IMHO nu ai cum sa arati 1 milion de coordonate in acelasi timp, vizual vorbind devine irelevant (cu exceptia cazului cand generezi un fel de heatmap). As sugera o impartire in tile-uri (de exemplu de 10 grade) si ceva de genul select count(*) group by lat%10, lon%10, afisezi per tile ceva de genul “2316 items” iar la click faci un zoom pe acel tile unde - sa zicem - afisarea a pana in 5k locatii poate deveni decent.

1 Like

E posibil ca 10m coordonate vizualizate simultan să fie totuși un pic prea mult. La fel cum a zis și @Adrian_Zaharia mai sus, poate că ar fi bine să limitezi pinii afișați la un moment dat și la fiecare nivel de zoom detaliezi pinii. 5k pini probabil sunt prea mulți totuși, eu aș merge la maximum 100.

http://www.html5rocks.com/en/tutorials/casestudies/100000stars/

Update: aparent am ajuns la 40 milioane de row-uri.

În primul rând vreau să te întreb ce reprezintă acele puncte? Oricum, indiferent de ce sunt, atât de multe date nu poți afișa simultan. Și până la urmă chiar dacă ai putea, ar fi neoptimizat. La un zoom mic, enorm de multe puncte sunt suprapuse, iar afișarea lor ar fi inutilă. Pentru a evita numărul ăsta enorm de mare, cei de la Google au făcut un sistem interesant. Poți afla mai multe detalii aici.

Curiozitate :smile: Cât ocupă acea bază de date? O poți urca undeva să ne jucăm și noi cu ea?

Ca fapt divers, pe o rezoluție de 1920x1080 îți încap 2.073.600 pixeli.

Ceva de genul asta cat despre date:

din data de 2014-12-22 fac scraping din 10 in 10 secunde la clever taxi si star taxi, si stochez coordonatele masinilor.

la ora actuala:
Clevertaxi: ~49,267,849 rows
Startaxi: ~9,760,149 rows

Size: 2.9 GB

ma gandesc sa il opresc, zilele astea.

mica sugestie probabil luata deja in calcul: filtrarea lor pe data/ora ar putea returna un numar de randuri cu care se poate lucra

Din câte se pare nu este o “banală” afișare. Se pare că este generat și un heatmap în spate. Vrei să faci filmulețe sau vrei o randare în timp real?

nu este un heatmap, culorile reprezinta categoriile de venu-uri.

Este clar că prin metodele clasice nu putem ajunge la un final bun. Să încarci mii de puncte în același timp și să le schimbi de zeci de ori în câteva secunde, probabil ar îngenunchia toate calculatoarele. Dar să privim și partea bună a lucrurilor. Am tot căutat metode prin care se poate face așa ceva și… am găsit :smile:

Majoritatea hărților online sunt construite la fel. Pentru afișarea străzilor, punctelor de interes, poligoane, etc. sunt generate, pe baza informațiilor, foarte multe poze de 256x256px (aici este o hartă cu acele poze evidențiate). Noi când ne uităm la hartă, vedem acele poze deja generate, nu ni se descarcă efectiv datele și apoi să fie randate în browser. Asta putem face și noi aici. Să generăm acele poze pe baza tuturor punctelor, iar apoi să le afișăm, peste hartă. Harta de aici este construită exact cum zic eu. Pentru un plus de realism, acele imagini pot fi defapt canvas-uri, dar generarea se va face în browser. Fără să testăm, nu ne putem da seama dacă necesită multe resurse sau nu. Un exemplu ar fi aici.

Din nefericire, realizarea ei durează destul de mult. Nu este puțin cod de scris… În cazul în care ești interesat de mai multe detalii, te rog să-mi spui.

Ok, revin cu un update:

De pe 22 decembrie pana pe la jumatatea lu’ Ianuarie, am facut scraping la “API-ul” de la Clever si Smart Taxi

Ce?

Din 10 in 10 secunde, am parsat un json, ma rog 2 jsoane, si am colecatat datele.

Initial vruiam sa le mapez, sa fac asa un heatmap, dar lenea mea si timpul nu sunt de partea mea. Daca vrea cineva sa se distreze sa faca ceva, enjoy.

Github
DB - 665 MB (Digi Storage) .7z, dezarhivat are 5,06 GB

Enjoy?!

2 Likes