Osmosis zassa bazę inaczej niż osm2pgsql, ale dla Twoich potrzeb nie ma to aż tak dużego znaczenia. Zassaj PL do bazy.
przykład z tabelą planet_roads był po zassaniu przez osm2pgsql - tam jest osobna tabela na ulice.
W przypadku zassania osmosis metodą --write-pgsql drogi trafią do tabeli ways - ale wszystkie drogi, będziesz musiał wyjąc te których ways.id=way_tags.way_id i way_tags.k=‘highway’ i ewentualnie jeszcze typ way_tags.v = ‘motorway’, ‘primary’ itd. jakie tam potrzebujesz (budynek w osm też może mieć way, ale będzie miał k=‘building’ v=‘yes’. Co do obszaru bbox to będziesz musiał użyć ways.bbox - najszybciej - osmosis trzyma pudełko w bazie (chociaż nie wiem po co, łatwiej trzymać chyba index na st_envelope(linesting) i tak się do tego index na bbox sprowadzi, a użyteczność pudełka poza wyszukiwaniem jest IMO niewielka), a do dokładnego porównania ways.linestring.
Osmosis bardziej uniwersalnie zasysa dane, do takich operacji wygodniej niż osm2pgsql.
No co do traku to tak, powinieneś każdy punkt spróbować przyciągnąć do jakiejś drogi, zapewne kilka punktów się do 1 też może przyciągnąć.
Co gorsza, Ciebie interesuje FRAGMENT drogi, nie cała
ale co i jak to już pisałem we wątku, myśl, bo nie zaliczysz praktyk 