প্রথমত, একটু পটভূমি
আমি একটি আঞ্চলিক ট্রানজিট এজেন্সির পক্ষে কাজ করি। আমরা আমাদের ফিডার বাস পরিষেবা সম্পর্কে একটি "ডায়াগনস্টিক" তৈরি করছি। আমরা জানতে চাই যে আমাদের ব্যবহারকারীদের অনুপাতের পরিমাণটি তাদের গাড়ি নেওয়ার পরিবর্তে ট্রেন স্টেশনে যাওয়ার জন্য বাসটি নিতে পারে। পাসে এটি বেশ কয়েকবার হয়ে গেছে, তবে আমরা এখন gtfs কে আমাদের প্রধান ডেটাসোর্স হিসাবে ব্যবহার করছি যাতে আমাদের আমাদের পদ্ধতিটি পুনর্বিবেচনা করতে হয়।
ট্রেনটিকে "খাওয়ানো" হিসাবে বিবেচনা করার জন্য, একটি বাসের রুটে একটি ট্রেন স্টেশন (লাল বাফার) থেকে নির্দিষ্ট দূরত্বে একটি স্টপ থাকতে হবে। এছাড়াও, ট্রেন পরিষেবাটির সাথে সংলগ্নতা খুব গুরুত্বপূর্ণ কারণ আপনার বাস যদি ট্রেনের আধ ঘন্টা আগে ট্রেন স্টেশনে উপস্থিত হয়, অপেক্ষার সময়টি অনেক দীর্ঘ এবং আপনি সকালে আরও 20 মিনিট ঘুমাতে এবং আপনার গাড়ীটি নিতে চাইবেন।
বলুন যে আপনি স্টপ থেকে লাইন এ (নীল) নিয়ে যাচ্ছেন ১২. আপনি স্টপ ১৩ এ বাসটি থেকে সরে যাচ্ছেন। বাসটি স্টপ ১৩ এ পৌঁছেছে, যা ট্রেনের # 1 মিনিট আগে ট্রেন স্টেশন যেতে স্টপেজ। সেটা খুব ভালো. এর অর্থ হ'ল যে 1 জন অন্তর্ভুক্ত 1 থেকে 13 এর স্টপে এই বাসের যাত্রা করে সেই ট্রেনের 5 মিনিটের আগে এসে পৌঁছেছিল।
তারপরে, ট্রেন, একটি প্রচুর স্কুল এবং ক্রসিংয়ের সাথে খুব ঘনবসতিপূর্ণ অঞ্চলগুলির মধ্য দিয়ে যায়, তার গতি অনেকটা হ্রাস করতে বাধ্য হয়। ইতিমধ্যে, বাসটি যাত্রীদের 14 থেকে 17 স্টপ ধরে নিয়ে যায় এবং ট্রেনের # 2 মিনিট আগে এই ট্রেনের পৌঁছায়। তাই যাত্রী 14 থেকে 17 স্টপে বাসে উঠতে সমস্ত ট্রেন স্টেশনে একবার 10 মিনিটের অপেক্ষা করতে পারে। সুতরাং, সেই বাসের লাইনের সাথে, 1 থেকে 13 স্টপে বাসে চলা যাত্রীদের 5 মিনিটের অপেক্ষার সময় থাকতে হবে যখন 14 থেকে 17 স্টপে বাসটি নেওয়া 10 মিনিটের অপেক্ষা করে।
ট্র্যাকের অন্যদিকে লাইন বি, ট্রেন স্টেশন # 1 এর নিকটবর্তী হয়, তবে এর স্টপগুলি ট্রেন স্টেশন # 1 "খাওয়ানো" বিবেচনা করার জন্য খুব বেশি দূরে। এটি ট্রেনের # 2 মিনিট আগে ট্রেন স্টেশন পৌঁছেছে (সকালের রাশ ঘন্টা সময় প্রতিটি ট্রেনের জন্য এটি করণীয়; এটি খুব ভালভাবে সিঙ্ক্রোনাইজ হয়েছে)। সুতরাং লাইন বি এর সাথে যাত্রীরা 1 টি স্টপ থেকে শুরু করে 59 পর্যন্ত যেকোন জায়গায় বাসে taking মিনিটের অপেক্ষা করবে।
এখন, আমার প্রশ্ন। একবার আমি স্থির করেছি যে LineA.13 এবং LineA.17 স্টপগুলি আমার ট্রেনটি খাওয়াচ্ছে (এটি পোস্টগিসে স্পষ্টভাবে সম্পন্ন করা হয়েছে), এবং # 13 এর আগে বাস থামানোর সময় অপেক্ষার সময়টি 5 মিনিটের সময় তবে পরে 10 মিনিটের অপেক্ষার সময়, আমি কীভাবে তাদের আগে সমস্ত স্টপের অপেক্ষার সময়টি নির্ধারণ করতে পারি?
আমি এটি পোস্টগ্র্রেস / পোস্টজিআইএস (pl / pgsql বা pl / পাইথন) এ করতে চাই তবে আমি খাঁটি পাইথন (ওএস বা আরকি) ব্যবহার করতে পারি।
আমি করতে পারি, আমি পিছনে লুপ করতে পারি। সুতরাং, একবার আমি একটি স্টপ দেখতে পেলাম (এখানে LineA.17), 16 টি থামার জন্য একই অপেক্ষার সময় নির্ধারণ করুন, তারপরে 15 ... যতক্ষণ না আমি আমার মানদণ্ডের সাথে ফিট করে এমন একটি অন্য স্টপ না পেয়ে (LineA.13) এবং বাকিটি নির্ধারণ করুন স্টপগুলির মধ্যে, 13 হিসাবে একই অপেক্ষার সময়।
যদিও এ জাতীয় লুপটি কীভাবে তৈরি করা যায় সে সম্পর্কে আমার কোনও ধারণা নেই। আমি মনে করি না যে আমি এসকিউএল এ এটি করতে পারি তাই আমাকে পোস্টগ্রিজ এসকিউএল এ একটি পদ্ধতিগত ভাষা ব্যবহার করতে হবে।
আমি প্রতিটি ফিডার স্টপসের মধ্যবর্তী রুটটি খুঁজে পেতে পিজিআরটিং ব্যবহার করার একটি ধারণা পেয়েছিলাম যাতে লাইন এ দুটি বিভক্ত হয়ে যায় (1 থেকে 13 এবং তারপরে 13 থেকে 17)। এটা কি সহজ হবে?
পরবর্তী পদক্ষেপটি অপেক্ষার সময় রয়েছে এমন সমস্ত স্টপগুলি (লাইনএ.18 এবং তার চেয়ে বেশি সময় ধরে দুঃখিত!) থেকে ড্রাইভিংয়ের সময় গণনা করার জন্য পিজিআরটিং ব্যবহার করা হবে এবং প্রতিযোগিতা গণনা করার জন্য বাসের শিডিয়ুলের সাথে তুলনা করুন (এটি কি 5 নিচ্ছে? বাসে আরও কয়েক মিনিট?
কোন ধারনা? আমি এ পর্যন্ত চালিয়ে যাওয়া প্রচেষ্টাটি দেখানোর জন্য সাধারণত একটি দীর্ঘ কাজ-প্রগতি স্ক্রিপ্ট পোস্ট করি তবে আমি আটকে আছি!