सबसे पहले, थोड़ा पृष्ठभूमि।
मैं एक क्षेत्रीय पारगमन एजेंसी के लिए काम करता हूं। हम अपनी फीडर बस सेवा के बारे में एक "निदान" बना रहे हैं। हम जानना चाहेंगे कि हमारे उपयोगकर्ता अपनी कार लेने के बजाय ट्रेन स्टेशन जाने के लिए किस अनुपात में बस ले सकते हैं। यह पास में कई बार किया गया है, लेकिन हम अब हमारे मुख्य डेटा स्रोत के रूप में gtfs का उपयोग कर रहे हैं, इसलिए हमें अपनी कार्यप्रणाली पर पुनर्विचार करना होगा।
ट्रेन को "फीडिंग" माना जाता है, बस स्टेशन का ट्रेन स्टेशन (लाल बफ़र्स) से एक निश्चित दूरी के भीतर एक स्टॉप होना चाहिए। इसके अलावा, ट्रेन सेवा के साथ सिंक्रोनाइज़ेशन बहुत महत्वपूर्ण है क्योंकि अगर आपकी बस ट्रेन से आधे घंटे पहले ट्रेन स्टेशन पर आती है, तो प्रतीक्षा समय बहुत लंबा है और आप सुबह 20 मिनट और सोना चाहते हैं और अपनी कार ले सकते हैं।
मान लीजिए कि आप लाइन ए (ब्लू) को स्टॉप १२ पर ले जाते हैं। आप स्टॉप १३ पर बस से उतर जाते हैं। बस स्टॉप १३ पर आती है, जो ट्रेन से १/५ मिनट पहले ट्रेन स्टेशन पर जाने के लिए स्टॉप है। वह बहुत अच्छा है। इसका मतलब यह होगा कि 1 से 13 तक के स्टॉप पर उस बस रूट को ले जाने वाला हर व्यक्ति उस ट्रेन से 5 मिनट पहले पहुंचेगा।
फिर, बहुत सारे स्कूल और क्रॉसिंग के साथ बहुत घनी आबादी वाले क्षेत्र से गुजरने वाली ट्रेन अपनी गति को कम करने के लिए मजबूर है। इस दौरान, बस यात्रियों को 14 से 17 पर रोकती है और उस ट्रेन से # 2 10 मिनट पहले ट्रेन स्टेशन पर आती है। ऐसे में 14 से 17 बजे बस को ले जाने वाले यात्री को ट्रेन स्टेशन पर पहुंचने के बाद सभी को 10 मिनट तक इंतजार करना होगा। तो, उस बस लाइन के साथ, स्टॉप 1 से 13 पर ले जाने वाले यात्रियों के पास 5 मिनट का समय होता है जब 14 से 17 स्टॉप पर बस लेने वालों के लिए 10 मिनट का समय होता है।
लाइन बी, ट्रैक के दूसरी तरफ, ट्रेन स्टेशन # 1 के पास से गुजरती है, लेकिन इसके स्टॉप्स "फीडिंग" ट्रेन स्टेशन # 1 पर विचार करने के लिए बहुत दूर हैं। यह ट्रेन से # 2 7 मिनट पहले ट्रेन स्टेशन पर आता है (सुबह की भीड़ के दौरान हर ट्रेन के लिए इसे करना; यह बहुत अच्छी तरह से सिंक्रनाइज़ है)। इसलिए लाइन बी से जाने वाले यात्रियों को बस स्टॉप 1 से 59 तक हर जगह ले जाने के लिए 7 मिनट का समय होगा।
अब, मेरा सवाल। एक बार जब मैंने निर्धारित कर लिया है कि लाइनए .१३ और स्टॉप ए .१ are स्टॉप मेरी ट्रेन को खिला रहे हैं (यह स्थानिक रूप से, पोस्टजीआईएस में किया गया है), और यह कि # १३ मिनट से पहले एक स्टॉप पर बस लेते समय प्रतीक्षा समय ५ मिनट है, लेकिन बाद में 10 मिनट के प्रतीक्षा समय, मैं उनके सामने सभी स्टॉप के लिए प्रतीक्षा समय कैसे दे सकता हूं?
मैं इसे Postgres / PostGIS (pl / pgsql या pl / python) में करना चाहता हूं, लेकिन मैं शुद्ध python (OS या arcpy) का भी उपयोग कर सकता हूं।
मैं सोच सकता था, मैं पिछड़ गया। इसलिए, जब मुझे एक बार ऐसा स्टॉप मिल गया जो फिट बैठता है (यहाँ लाइनए .१,), १६ को रोकने के लिए एक ही वेटिंग टाइम असाइन करें, तब १५ ... जब तक मुझे एक और स्टॉप नहीं मिल जाता जो मेरे मापदंड (लाइनए १.३) पर फिट बैठता है और फिर बाकी को असाइन करें बंद हो जाता है, 13 के रूप में एक ही प्रतीक्षा समय।
हालांकि इस तरह के एक लूप बनाने का मुझे कोई पता नहीं है। मुझे नहीं लगता कि मैं इसे SQL में कर सकता हूं इसलिए मुझे PostgreSQL में एक प्रक्रियात्मक भाषा का उपयोग करना होगा।
मेरे पास प्रत्येक फीडर स्टॉप के बीच मार्ग को खोजने के लिए pgRout का उपयोग करने का विचार था ताकि लाइन ए को दो में विभाजित किया जा सके (1 से 13 तक और फिर 13 से 17 तक रुक जाता है)। क्या यह आसान होगा?
अगला कदम, सभी स्टॉप से ड्राइविंग समय की गणना करने के लिए pgRout का उपयोग करना होगा, जिसमें प्रतीक्षा समय (LineA.18 और उससे अधिक खेद है!) और तुलनात्मकता की गणना करने के लिए बस के शेड्यूल के साथ तुलना करें (क्या यह 5 ले रहा है) कार में बस में मिनट अधिक?)
कोई विचार? अब तक मैंने जो प्रयास किया है, उसे दिखाने के लिए मैं सामान्य रूप से एक लंबी कार्य-प्रगति स्क्रिप्ट पोस्ट करता हूं, लेकिन मैं अटक गया हूं!