PgRouting - अधिकतम लागत तक पहुंचने पर लिंक कैसे क्लिप करें?


13

मेरे पास एक पॉलीलाइन शेपफाइल है जो एक रोड नेटवर्क और दूसरे शेपफाइल युक्त बिंदुओं का प्रतिनिधित्व करता है। मैं इन बिंदुओं से निकलने वाले उप-नेटवर्क या सेवा क्षेत्रों की पहचान करने के लिए PostGIS (संभवतया PgRout) का उपयोग करना चाहूंगा।

अनिवार्य रूप से, मैं सवाल पूछने की उम्मीद कर रहा हूं, "बिंदु X से शुरू होकर, मैं किसी भी दिशा में कितनी दूर चल सकता हूं, सड़क नेटवर्क का अनुसरण करते हुए, 1 किमी का कुल यात्रा बजट दिया गया है?" परिणाम यात्रा की संभावना की कुल सीमा का प्रतिनिधित्व करने वाले क्लीप्ड पॉलीनेस का एक सेट होगा, जिसे 1 किमी का यात्रा बजट दिया जाता है।

संदर्भ के लिए, यह GRASS विश्लेषण ठीक वैसा ही प्रतीत होता है जैसा मैं करना चाहता हूं (इसके अलावा मैं पोस्टगिस में ऐसा करना चाहता हूं): http://www.gdf-hannover.de/lit_html/grass60_v1.2_en/node57##ecec: optalloc

यह अगला उदाहरण लगभग ऐसा प्रतीत होता है कि मैं क्या करना चाहता हूं, सिवाय इसके कि यह प्रश्न का उत्तर देता है "मैं X दूरी का यात्रा बजट देने के लिए किस नोड पर जा सकता हूं?" http://underdark.wordpress.com/2011/02/12/drive-time-isochrones/

दूसरा वह जवाब नहीं है जिसकी मैं तलाश कर रहा हूं, क्योंकि मैं चाहता हूं कि पॉलीइन्स मेरी यात्रा की दूरी पर चले गए - मुझे परवाह नहीं है अगर मैं इसे एक नोड के लिए सभी तरह से बनाऊं।


एक विकल्प जो मुझे होता है, वह यह है कि मैं अपने पॉलीइन्स को बहुत सारे बिंदुओं में विभाजित करूँ। यह मुझे सही उत्तर के करीब ले जाता है, लेकिन बहुत हैकरी लगता है, और अभी भी मुझे वहाँ नहीं मिलता है।
पीटर

जवाबों:


2

एक ने सोचा कि मुझे 1 था) ड्राइविंग_डिस्टेंस रूटीन चलाएं और 2) pgRout से "points_as_polygon" रूटीन का उपयोग करें (जिसे अल्फाजेप फ़ंक्शन कहते हैं) ड्राइविंग_डिस्टेंस रूटीन के आधार पर दिए गए लागत दूरी पर सबसे छोटी बहुभुज उत्पन्न करने के लिए। रिटर्न। फिर आप बहुभुज के भीतर सभी सड़कों का चयन कर सकते हैं जो आपको यात्रा का एक सामान्य विचार देगा।

यदि आप pgRout उपयोगकर्ताओं की सूची पर चर्चा का अनुसरण नहीं कर रहे हैं, तो वे हाल ही में (मई और जून 2011 धागे) अधिक विकल्पों पर चर्चा कर रहे हैं।


1
दिलचस्प उपयोगकर्ता सूची चर्चा। बहुत बुरा ड्राइविंग_स्टैंडेंस फ़ंक्शन छोटी गाड़ी है।
UnderDark

1

चूँकि यह वास्तव में एक ग्राफ़ समस्या है, जो आपको चाहिए वह है कनेक्टिविटी / टोपोलॉजी + लागत की जानकारी। Pg_rout के लिए, वह तालिका है जिसे आप सबसे छोटे पथ एल्गोरिदम पर भेजते हैं। इस आलेख में जानकारी है कि कैसे एक का निर्माण करें (मुझे लगता है कि आपके पास पहले से ही एक है)। क्षमा करें, मैं आपके सटीक कार्य को pg_rout में नहीं दे सकता जो ऐसा करता है, लेकिन लेखन एक योग्य होना चाहिए। हालाँकि, मैं आपको बता सकता हूं कि यदि आप छोटी से छोटी और अधिक से अधिक कॉल करते रहते हैं, तो नीचे दिए गए एल्गोरिथम को ओवर-ओवर कर रहे हैं और परिणाम को रौंद रहे हैं - बिल्कुल भी कुशल नहीं है।

आपका समाधान तब "बढ़त वाली सूची" में जोड़ते हुए हर किनारे पर चलता है और आपके बजट (यानी दूरी) को पूरा करने तक लागत की गणना करता है। यदि बजट स्वीकार्य है (यानी बजट अतिदेय नहीं हुआ है), तो आप ज्यामिति को "स्वीकार्य सूची ज्यामिति बैग" में भी जोड़ सकते हैं। आपको प्रत्येक किनारे को केवल एक बार संसाधित करना होगा। बहुत अंतिम धार के लिए (जहां आपके बजट अतिदेय हैं), आपको लंबाई प्राप्त करने और उस सटीक दूरी को प्रक्षेपित करने की आवश्यकता है जिसे आप यात्रा करना चाहते हैं , फिर परिणाम को "स्वीकार्य सूची" में जोड़ें। आपका परिणाम उस ज्यामिति बैग का एक संघ है।


1
अंतिम चरण में एक सूक्ष्मता है: कुछ छोरों को इसके समापन बिंदुओं में से किसी एक पर पहुँचा जा सकता है। इससे दोनों सिरों के कुछ हिस्सों को शामिल किया जा सकता है या पूरे किनारे को भी शामिल किया जा सकता है, भले ही पूरे छोर को किसी एक छोर से ट्रेस करना बजट सीमा से अधिक हो। उदाहरण के लिए, बिंदु से यात्रा करने पर विचार एक यूनिट-लंबाई किनारों {(क, ख), (क, ग), (ख, ग)} और 1.6 के बजट के साथ एक अनिर्दिष्ट ग्राफ के साथ। आप 1 की लागत पर या तो b या c तक पहुँच सकते हैं , जिसमें 0.6 खर्च करने के लिए शेष है। यह बढ़त के साथ हर बिंदु (बी, सी) को सुलभ बनाता है।
whuber

आप सही हैं :) +1
रागी यासर बुरहम

1

"बिंदु X से शुरू होकर, सड़क नेटवर्क का अनुसरण करते हुए, मैं किसी भी दिशा में कितनी दूर चल सकता हूं, 1 किमी का कुल यात्रा बजट दिया गया है?"

जैसा कि आपको केवल एक छोटे से क्षेत्र (अधिकतम पर 1 किमी त्रिज्या) पर विचार करना होगा, आप संभवतः कई छोटे टुकड़ों में लिंक को विभाजित करने के साथ दूर हो सकते हैं (आवश्यक सटीकता आप प्राप्त करना चाहते हैं) के आधार पर और आवश्यक नोड्स बनाना। परिणामस्वरूप "उच्च-रिज़ॉल्यूशन" नेटवर्क अभी भी प्रबंधनीय होना चाहिए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.