Dichiarazione del problema: data una linea di autobus (definita come linestring ln.the_geom) e una serie di posizioni delle fermate di autobus (pt1.the_geom, pt2.the_geom, ... ptn.the_geom), dividere la rotta del bus in segmenti tra le fermate . Sto usando due funzioni postgis
ST_line_substring(ln.the_geom,ST_line_locate_point
ln.the_geom,pt1.the_geom),ST_line_locate_point(ln.the_geom,pt2.the_geom))
Quanto sopra funziona bene se il percorso del bus non ha sezioni sovrapposte. Tuttavia, se sono presenti sezioni sovrapposte, ST_line_locate_point eseguirà lo snap di un punto sull'altra estremità della stringa lineare. Ad esempio: il bus viaggia da A a B, crea un loop, quindi viaggia da B a A. "A a B" e "B a A" sono percorsi paralleli con tutti i punti sovrapposti. In caso di fermate bus P1 e P2, P2 viene invece mappato nel punto P2 '(nella direzione opposta). Il segmento viene estratto in modo errato in questo caso (in cui sono inclusi segmenti extra).
Come risolvere problemi come questo? Le linee di autobus sovrapposte possono verificarsi in qualsiasi sezione del percorso ...