সমস্যার বিবৃতি: একটি বাস রুট দেওয়া হয়েছে (একটি লাস্টারিং 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_locon_Point লাইনস্ট্রিংয়ের অন্য প্রান্তে একটি বিন্দু স্ন্যাপ করবে। উদাহরণ হিসাবে: বাস এ থেকে বিতে ভ্রমণ করে, একটি লুপ তৈরি করবে, তারপরে বি থেকে ক এ ভ্রমণ করবে "এ থেকে বি" এবং "বি থেকে এ" সমস্ত পয়েন্টকে ওভারল্যাপ করে সমান্তরাল রুট। P1 এবং P2 বাস থামার ক্ষেত্রে P2 কে পরিবর্তে (বিপরীত দিকে) পয়েন্ট P2 'তে ম্যাপ করা হবে। এই ক্ষেত্রে বিভাগটি ভুলভাবে উত্তোলন করা হয়েছে (যেখানে অতিরিক্ত বিভাগগুলি অন্তর্ভুক্ত করা হয়েছে)।
এই জাতীয় সমস্যাগুলি কীভাবে সমাধান করবেন? ওভারল্যাপিং বাসের রুটগুলি রুটের যে কোনও বিভাগে ঘটতে পারে ...