Declaración del problema: Dada una ruta de autobús (definida como una línea lineal ln.the_geom) y un conjunto de ubicaciones de paradas de autobús (pt1.the_geom, pt2.the_geom, ... ptn.the_geom), divida la ruta del autobús en segmentos entre las paradas de autobús. Estoy usando dos funciones 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))
Lo anterior funciona bien si la ruta del autobús no tiene secciones superpuestas. Sin embargo, si hay secciones superpuestas, ST_line_locate_point ajustará un punto al otro extremo de la cadena de líneas. Como ejemplo: el autobús viaja de A a B, hace un bucle y luego viaja de B a A. "A a B" y "B a A" son rutas paralelas con todos los puntos superpuestos. En el caso de las paradas de autobús P1 y P2, P2 se asigna en el punto P2 'en su lugar (en la dirección opuesta). El segmento se extrae incorrectamente en este caso (donde se incluyen segmentos adicionales).
¿Cómo resolver problemas como este? Las rutas de autobuses superpuestas pueden ocurrir en cualquier sección de la ruta ...