ফিডার বাস পরিষেবা


9

প্রথমত, একটু পটভূমি

আমি একটি আঞ্চলিক ট্রানজিট এজেন্সির পক্ষে কাজ করি। আমরা আমাদের ফিডার বাস পরিষেবা সম্পর্কে একটি "ডায়াগনস্টিক" তৈরি করছি। আমরা জানতে চাই যে আমাদের ব্যবহারকারীদের অনুপাতের পরিমাণটি তাদের গাড়ি নেওয়ার পরিবর্তে ট্রেন স্টেশনে যাওয়ার জন্য বাসটি নিতে পারে। পাসে এটি বেশ কয়েকবার হয়ে গেছে, তবে আমরা এখন 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 নিচ্ছে? বাসে আরও কয়েক মিনিট?

কোন ধারনা? আমি এ পর্যন্ত চালিয়ে যাওয়া প্রচেষ্টাটি দেখানোর জন্য সাধারণত একটি দীর্ঘ কাজ-প্রগতি স্ক্রিপ্ট পোস্ট করি তবে আমি আটকে আছি!


অন্যান্য অদ্ভুত মামলার কারণে আমি এখন যাত্রীবাহী বাস থেকে নামতে পারে এমন রুটগুলি কাটা বিবেচনা করি। সুতরাং, প্রতিটি রুট "বিভাগগুলি" স্বাধীন হবে। আমার স্টপগুলি টপোলজিকভাবে সঠিক না হলে পোস্টজিআইএস-এ কীভাবে আমি আমার আকারগুলি কাটাতে পারি তা এখনও খুঁজে বের করতে হবে (আকারগুলি রাস্তায় অনুসরণ করে এবং স্টপগুলি মেরুতে থাকে) ...;)
fgcartographix

উত্তর:


3

আসলে আপনি যে লুপটি চান তা তৈরি করা এসকিউএল এর মাধ্যমে সত্যই সহজ:

SELECT DISTINCT ON (b1.line, b1.number) b1.line,b1.number,b2.waiting
FROM busstops AS b1
  LEFT JOIN busstops AS b2
    ON b1.line = b2.line
      AND b1.number<=b2.number
      AND b2.waiting IS NOT NULL
ORDER BY b1.line,b1.number,b2.number;

বেহালার

এটি বলাও সহজ হবে, আসুন বলা যাক, স্টপ থেকে থামার সময় যোগফলের যোগফল।

এবং আপনি নিয়মিত pgRouting ব্যবহার করতে পারতেন যদি আপনি কেবলমাত্র রুটগুলিকে অস্থায়ী গ্রাফে রূপান্তর করতে পরিচালনা করেন (যাত্রাপথের সময় এবং রুটের ব্যয়ের জন্য সময় উপস্থাপনকারী নোড সহ)।


Woot! এটি কাজ করে ... এমন অনেক অংশ রয়েছে যা আমি বুঝতে পারি না, তবে আমি ধারণাটি পেয়েছি ... যদি পরবর্তী স্টপসের অপেক্ষাকৃত ছোট সময় থাকে তবে অপেক্ষা করার সময়টি আপনাকে ওভাররাইড করতে পারে এমন প্রশ্ন করার জন্য আমি কি যথেষ্ট সাহসী হতে পারি? তত্ত্বটি হ'ল আপনি যদি প্রথম ট্রেন স্টেশনটি ছেড়ে যেতে পারেন তবে আপনাকে যদি 20 মিনিটের জন্য প্ল্যাটফর্মে অপেক্ষা করতে হবে এবং ট্রেন স্টেশন 2 পর্যন্ত বাসে থাকতে হবে, যদি অপেক্ষাটি কেবল 4 মিনিটের জন্য থাকে ...;) একটি মিলিয়ন বার ধন্যবাদ !!!
fgcartographichix

1
শুধু ORDER BYক্লজ পরিবর্তন করুন । প্রথম দুটি কলাম অবশ্যই থাকুক সেহেতু সেগুলি DISTINCT ONদফায় রয়েছে তবে অন্যথায় তার থেকে সমস্ত অনুমতি রয়েছে: sqlfiddle.com/#!1/24fab/2
জাকুব কানিয়া

আপনি একজন উইজার্ড !! :) ধন্যবাদ! আমি এর সাথে দীর্ঘকাল ধরে লড়াই করে যাচ্ছি !!
fgcartographichix

কেবল এক ঘন্টা পরে ট্রেনের জন্য 4 মিনিটের জন্য নয় তা নিশ্চিত করুন :)
জাকুব কানিয়া

নাহ! অনুমোদিত সর্বোচ্চ সর্বাধিক অপেক্ষার সময়টি 30 মিনিট এবং তারপরেও রয়েছে, একটি বড় লাল প্রতীক রয়েছে যা বলেছে এটি সত্যই ভাল নয়! ;) আবার ধন্যবাদ! এছাড়াও, আমি আমার বসের সাথে আমার বক্তব্য জিতেছি যে অপেক্ষা করার সময়টি সত্যই দীর্ঘতর হওয়া সত্ত্বেও, প্রথমের চেয়ে আরও একটি ট্রেন স্টেশন যেতে আরও 20 মিনিটের বেশি কোনও বাসে থাকতে হবে না কেউ। ;)
fgcartographichix

5

গত বছরের গুগল সামার অফ কোড প্রোগ্রামে এক শিক্ষার্থী বহু-মডেল রাউটিংয়ের জন্য একটি পিজারাউটিং ফাংশন বাস্তবায়ন করে। এটি এটি নতুন ২.০ প্রকাশে রূপান্তরিত করে নি, সুতরাং সম্ভবত এটি এখনই কাজ করে না, তবে আপনি উপলভ্য সংস্থানগুলি এটি কার্যকর কিনা না তা দেখার জন্য আপনি দেখতে পারেন:

পরের প্রকাশে এই ফাংশনটি পেয়ে ভাল লাগবে, সুতরাং আপনার আগ্রহের ক্ষেত্রে প্রয়োজনীয় কাজটি সমন্বয় করতে দয়া করে বিকাশকারী মেইলিং লিস্টের সাথে যোগাযোগ করুন: http://pgrouting.org/support.html

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.