Traffic masz tu: http://osmapa.pl/beta/
Włącz sobie warstwę Traffic (korki)
Ja mam do dyspozycji (podobnie jak Ty) ślad po samochodzie, przy czym on ma rozrzut przez niedokładność gps, rzadką rejestrację śladu itp. Aby wyrysować traffic po drogach muszę (tak jak Ty) znaleźć drogę (i później w niej odpowiedni odcinek) najbardziej pasujący do kursu pojazdu.
Więc biorę punkt ze śladu GPS, robię wokoło niego bbox i szukam dróg przecinających ten bbox (w postgis robi to odpowiednia funkcja np:
select way from planet_roads where ST_Intersects(way,ST_GeomFromText(‘POLYGON((14 49, 24 49, 24 55, 14 55, 14 49))’,4326))
wyjmie wszystkie drogi w zgrubnym BBOX Polski. Oczywiście szukając dróg do traffica używam malutkiego bboxa który obejmuje mniej więcej kwadrat 50x50m. Takie użycie spowoduje że zadziała index gis postgresa - ST_distance nie użyje indexu.
Następnym warunkiem w where jest ST_Distance które wymaga już policzenia dystansu i on jest też wspomagany przez ST_ClosestPoint szukający najbliższego punktu z tej drogi i szukam wtedy podejrzanych odcinków dróg po których mogę potencjalnie jechać, sortuję je po odległości. Jak mam wycięte podejrzane odcinki to już aplikacyjnie szukam tego który ma odpowiedni azymut do odczytu z GPS i ten odcinek notuję - sumując prędkość i inkremetując ilość pomiarów.
Ta baza pozwala mi wyrysować wyżej widoczne kafelki - tu tez się bbox przedaje - tym razem bbox kafelka wyliczony z XYZ kafelka.