Báo cáo sự cố: Đưa ra một tuyến xe buýt (được định nghĩa là ln.the_geom) và một tập hợp các vị trí dừng xe buýt (pt1.the_geom, pt2.the_geom, ... ptn.the_geom), chia tuyến xe buýt thành các đoạn giữa các điểm dừng xe buýt . Tôi đang sử dụng hai chức năng 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))
Ở trên hoạt động tốt nếu tuyến xe buýt không có phần chồng chéo. Tuy nhiên, nếu có các phần chồng chéo, ST_line_locate_point sẽ chụp một điểm vào đầu kia của dòng. Ví dụ: Xe buýt đi từ A đến B, tạo một vòng lặp, sau đó đi từ B đến A. "A đến B" và "B đến A" là các tuyến song song với tất cả các điểm chồng chéo. Trong trường hợp xe buýt dừng P1 và P2, P2 được ánh xạ vào điểm P2 '(theo hướng ngược lại). Phân đoạn được trích xuất sai trong trường hợp này (trong đó bao gồm các phân đoạn bổ sung).
Làm thế nào để giải quyết vấn đề như thế này? Các tuyến xe buýt chồng chéo có thể xảy ra tại bất kỳ phần nào của tuyến đường ...