समस्या कथन: एक बस मार्ग (एक linestring ln.the_geom के रूप में परिभाषित), और बस स्टॉप स्थानों का एक सेट (pt1.the_geom, pt2.the_geom, ... ptn.the_geom) को देखते हुए, बस स्टॉप के बीच बस मार्ग को खंडों में विभाजित करें । मैं दो पोस्टगिस कार्यों का उपयोग कर रहा हूं
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))
यदि बस मार्ग में कोई अतिव्यापी खंड नहीं है, तो उपरोक्त अच्छी तरह से काम करता है। हालाँकि, यदि ओवरलैपिंग सेक्शन हैं, तो ST_line_locate_point लाइनिंग के दूसरे छोर पर एक बिंदु को स्नैप करेगा। एक उदाहरण के रूप में: बस A से B तक जाती है, एक लूप बनाती है, फिर B से A. "A से B" और "B से A" की यात्रा करती है। सभी मार्गों के समानांतर मार्ग हैं जो ओवरलैप किए गए हैं। बस स्टॉप P1 और P2 के मामले में, P2 को बिंदु P2 'में बदले (विपरीत दिशा में) में मैप किया जाता है। इस मामले में खंड को गलत तरीके से निकाला जाता है (जहां अतिरिक्त खंड शामिल हैं)।
इस तरह की समस्याओं को कैसे हल करें? ओवरलैपिंग बस मार्ग मार्ग के किसी भी हिस्से में हो सकता है ...