Pernyataan masalah: Diberikan rute bus (didefinisikan sebagai linestring ln.the_geom), dan satu set lokasi halte bus (pt1.the_geom, pt2.the_geom, ... ptn.the_geom), bagi rute bus menjadi beberapa segmen di antara halte bus . Saya menggunakan dua fungsi 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))
Di atas berfungsi dengan baik jika rute bus tidak memiliki bagian yang tumpang tindih. Namun, jika ada bagian yang tumpang tindih, ST_line_locate_point akan mengambil titik ke ujung linestring yang lain. Sebagai contoh: Bus bergerak dari A ke B, membuat satu lingkaran, kemudian melakukan perjalanan dari B ke A. "A ke B" dan "B ke A" adalah rute paralel dengan semua titik tumpang tindih. Dalam hal halte bus P1 dan P2, P2 dipetakan ke titik P2 'sebagai gantinya (pada arah yang berlawanan). Segmen diekstraksi secara salah dalam kasus ini (di mana segmen tambahan termasuk).
Bagaimana cara mengatasi masalah seperti ini? Rute bus yang tumpang tindih dapat terjadi di bagian mana pun dari rute ...