मानचित्र पर सड़क जंक्शनों का पता लगाने का एक कुशल तरीका क्या है?


14

मुझे अपनी परियोजना के लिए किसी भी स्रोत से नक्शे मिल सकते हैं, और सी ++ एल्गोरिथ्म के लिए जो मैं बना रहा हूं, यह एल्गोरिथ्म के लिए यह जानना अनिवार्य है कि सड़क जंक्शन (नोड्स जहां दो से अधिक सड़क खंड मिलते हैं) हैं। इसके अलावा, मेरे द्वारा प्राप्त किए गए कई मानचित्रों में, ओवरसोइंग और अंडरशूटिंग सड़कें हैं (यानी: सड़कें ठीक से जुड़ी नहीं हैं)। समस्या को ठीक करने का एक तरीका ऑटोकैड का उपयोग करके सड़क नेटवर्क की 'सफाई' करना है। मेरे पास प्रश्न हैं:

  1. क्या मेरे नक्शे को जीएमएल प्रारूप में प्राप्त करने के लिए एक कुशल तरीका (कोई भी सॉफ़्टवेयर जो यह कर सकता है?) है, जिसमें नक्शे में सड़क जंक्शनों के बारे में जानकारी है? (शायद एक GML टैग है जो कहता है कि एक विशेष नोड एक जंक्शन है)
  2. क्या सड़क नेटवर्क को 'साफ' करने का कोई और तरीका है?

सहकर्मियों ने एफएमई का सुझाव दिया है, लेकिन इसमें स्क्रिप्ट लिखना शामिल है और हम इस बारे में निश्चित नहीं हैं कि स्क्रिप्ट सभी मानचित्रों को पूरा करने के लिए पर्याप्त लचीली होगी या नहीं। जंक्शनों का पता लगाने का एकमात्र तरीका जानवर बल का उपयोग करना है और यह पता लगाना है कि किस सड़क खंड में सामान्य नोड हैं। क्या आर्कगिस मदद करेगा? (इसका इस्तेमाल नहीं किया है, लेकिन इसके बारे में सुना है) मुझे यकीन है कि वहाँ एक बेहतर तरीका होना चाहिए ...


2
क्या स्व-प्रतिच्छेदन सड़कों को खोजने की आवश्यकता है? यह पतित जियोमेट्रीज़ को कैसे संभालना चाहिए (पॉलीइन्स जहां सभी कोने संयोग से शून्य लंबाई होते हैं)। यह संयोग लाइनों को कैसे संभालना चाहिए जहां चौराहा एक रैखिक खंड है और न केवल एक बिंदु है?
किर्क कुएकेन्डल

@Kirk: आपके द्वारा बताई गई स्थितियों पर मैं थोड़ा हैरान हूं। मैं जीआईएस के लिए नया हूं, और यह भी नहीं जानता कि ऐसी संभावनाएं मौजूद थीं। 1. चौराहे के लिए कई खंडों की आवश्यकता होती है। जब तक यह एक फ्लाईओवर नहीं होता, मैं उन चौराहों को जंक्शन के रूप में मानता। 2. मैं यह भी कल्पना करने में सक्षम नहीं हूं कि पतित ज्यामिति क्या है, इसलिए मुझे नहीं पता कि क्या जवाब देना है। 3. कंसाइडिंग लाइनों को दो अलग-अलग सड़कों के रूप में माना जाना चाहिए, क्योंकि मैं मानता हूं कि वे वास्तविक जीवन में भी होंगे।
नव

जवाबों:


9

यदि आपके पास एक स्थानिक रूप में सड़कें हैं, जैसे कि शेपफाइल, तो आप उन्हें पोस्टजीआईएस में लोड कर सकते हैं और यह स्वचालित रूप से SQL क्वेरी का उपयोग करने वालों को ढूंढ सकता है। मैंने पहले भी ऐसा किया है - SQL स्टेटमेंट प्रत्येक सड़क को खोजने के लिए डिज़ाइन किया गया है जो भौगोलिक रूप से प्रतिच्छेद करते हैं और प्रत्येक क्रॉसिंग के लिए एक नोडल बिंदु बनाते हैं।

मैं इसे बाद में साफ करने की कोशिश करूंगा, लेकिन यहां मूल प्रवाह है जिसे आप ले सकते हैं ...

for line in road_layer_lines:
    ilines = get_intersecting_objects(line)
    for iline in ilines:
        road_junctions.extend(get_intersection(line, iline))

ST_ * फ़ंक्शंस वही हैं जो PostGIS के भीतर यह काम करता है

  • ST_Envelope : किसी दिए गए ज्यामिति के बाउंडिंग बॉक्स को पकड़ता है - इसका उपयोग एल्गोरिथ्म को गति देने के लिए किया जाता है। एक त्वरित-लेकिन-कम-सटीक पास में बाउंडिंग बॉक्स के साथ एक भौगोलिक खोज को संकीर्ण कर सकता है और फिर वास्तविक ज्यामितीय के साथ परिणामों को स्कैन कर सकता है।
  • ST_Intersects : निर्धारित करता है कि क्या दो ज्यामितीय प्रतिच्छेद करते हैं
  • ST_Intersection : दो ज्यामितीयों के प्रतिच्छेदन को लौटाता है

निम्नलिखित केवल स्निपेट हैं क्योंकि मेरे पास खत्म करने का समय नहीं है, शायद कोई मुझे यहां वापस आने से पहले इसे संपादित कर सकता है ...

SELECT id, the_geom FROM road_lines
SELECT roads.id FROM road_lines roads WHERE ST_Intersects(roads.the_geom, my_geom)
SELECT ST_Intersection(roads.the_geom, my_geom) FROM road_lines roads WHERE roads.id = my_id

बस साझा करना: एक और डेटाबेस जो मेरे सामने आया है, वह यह है - < oracle.com/technetwork/database/berkeleydb/overview/index.html >। जाहिरा तौर पर क्वेरीज़ बहुत तेज़ हैं क्योंकि क्वेरीज़ लाइब्रेरी के रूप में उपलब्ध हैं जिन्हें एप्लिकेशन में एम्बेड किया जा सकता है।
नव

1
@ dmsnell- शायद आप इस कार्य को पूरा करने के लिए इस्तेमाल की जाने वाली SQL क्वेरी के प्रकार का उदाहरण दे सकते हैं?
रयानकेडलटन

11

आप बफ़र्स का उपयोग करके अद्भुत तरीकों से पॉलीइन्स का विश्लेषण कर सकते हैं। यह आमतौर पर अक्षम है - बफ़र्स कई अतिरिक्त कोने बनाते हैं - लेकिन (ए) यह कई जीआईएस (वेक्टर या रेखापुंज आधारित) में उपलब्ध एक तकनीक है और (बी) कभी-कभी यह जानकारी उत्पन्न कर सकती है जो अन्यथा प्राप्त करना कठिन है।

इस मामले में, एक छोटी राशि से सड़क को बफ़र करना और फिर उसी राशि के नकारात्मक द्वारा बफ़र करना सभी बेंड्स और सभी चौराहों के आसपास थोड़ा "द्वीप" छोड़ देता है । यह ज्यामितीय रूप से सिद्ध करना आसान है।

यहाँ एक मानचित्र में 10 मीटर पॉलीलाइन बफर (ग्रे) और उसके -10 मीटर बफर (हल्के लाल) का उदाहरण है जो कि 8.5 मीटर है:

आकृति 1

अब इन द्वीप बहुभुजों के साथ मूल पॉलीलाइन परत को काटें, द्वीप पहचानकर्ता द्वारा खंडों को मिलाएं, और टुकड़ों को गिनें:

चित्र 2

हल्के पीले सेगमेंट हाई-काउंट टुकड़ों को और डार्क सियान सेगमेंट्स लो-काउंट वालों को नामित करते हैं। इस फैशन में हमारे पास (ए) सभी बेंड और चौराहे (स्व-चौराहों सहित) और जंक्शनों के पास हैं (चरम बाएं देखें, जहां दो खंड काफी नहीं मिलते हैं) और (बी) ने चौराहों से झुकता अंतर किया। हम उन द्वीपों का चयन करके लगभग-जंक्शनों का पता लगा सकते हैं जिनमें दो या अधिक जुड़े हुए खंड होते हैं: झुकता में केवल जुड़े हुए खंड होते हैं।

बफरिंग की समरूपता के कारण, चौराहे द्वीपों के केंद्रक चौराहे के बिंदु हैं।

विश्लेषण की इस शैली का एक सुंदर पहलू यह है कि यह परवाह नहीं करता है कि अंतर्निहित पॉलीलाइन का प्रतिनिधित्व कैसे किया जाता है: यह एक एकल विशेषता हो सकती है, यह प्रत्येक पंक्ति खंड के लिए एक विशेषता हो सकती है, या बीच में कुछ भी हो सकती है।


6

हां, आप यह सुनिश्चित करने के लिए FME के ​​साथ कर सकते हैं। कई "ट्रांसफार्मर" हैं जो सफाई, चौराहों और टोपोलॉजी को संभालते हैं; मैं इस मामले में टोपोलॉजीब्यूलर ट्रांसफार्मर की कोशिश करूंगा ।

कोई भी स्क्रिप्टिंग सभी ग्राफिक माहौल में की जाती है, इसलिए इसे करना बहुत सरल है।

आप हमेशा www.safe.com से एक परीक्षण संस्करण प्राप्त कर सकते हैं

(खुलासा: मार्क आयरलैंड, उर्फ ​​एफएमई इंजीलवादी, सुरक्षित सॉफ्टवेयर इंक)


मैं इसके समर्थन में हूं। इस विशेष समस्या के लिए FME महान है, ऑटोकैड से GML और सामयिक सफाई दोनों में परिवर्तन। यह अपने आवेदन में आश्चर्यजनक रूप से सार्वभौमिक हो सकता है।
ब्लॉर्ड-कैस्टिलो


-1

आर्कगिस नेटवर्क विश्लेषक, जिसे आप नि: शुल्क परीक्षण के साथ प्राप्त कर सकते हैं, 10 सेकंड से कम समय में और कुछ ही क्लिक के साथ ऐसा करता है।


-1

प्रक्रिया नेटवर्क विश्लेषक के साथ आर्कजीआईएस में की जा सकती है।

आर्कगिस में एक और तरीका भी है: आप फोलिविंग चरणों के माध्यम से जा सकते हैं: "आर्कटबॉक्स" → "डेटा प्रबंधन उपकरण" → "सुविधाएँ" → "बिंदुओं के लिए सुविधा" और वहां आप वह कर सकते हैं जिसकी आपको आवश्यकता है।

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