PostGIS से अप्रत्यक्ष ग्राफ को कैसे आबाद करें?


9

यह प्रश्न उन संसाधनों से अधिक संबंधित है जिन्हें मैंने अभी तक नहीं पहचाना है, हालांकि मैं थोड़ी देर के लिए वेब खोज रहा हूं।

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

प्रस्तुति परत के लिए मैंने MapServer के साथ पाइथन स्क्रिप्टिंग का उपयोग करने के बारे में सोचा, लेकिन अब मैं OpenEV से उत्पन्न पोस्टगिस db में से आकृति (आकृतिफिल्स को उत्कीर्ण किया गया) से ग्राफ बनाने का अधिक विचार दे रहा हूं ताकि किनारों को जोड़ना या निकालना आसान हो जाए वज़न या उसके बाद के बिंदुओं के बारे में जानकारी।

पाइथन के लिए नेटवर्कएक्स नामक एक मॉड्यूल है जो ग्राफ़ के साथ काम करता है, और हालांकि इस मुद्दे को स्टैटेक्सचेंज में लाया गया है , मैं जिस ग्राफ का निर्माण करने की कोशिश कर रहा हूं वह एक नहीं बल्कि एक अप्रत्यक्ष है।

अपडेट: 5 दिन पहले नेटवर्क प्रोजेक्ट के लिए बेन रेली का यूटिलिटी नेटवर्क जोड़ा गया है। यूटिलिटी नेटवर्क्स आकृति आकृति सुविधाओं से एक निर्देशित ग्राफ बनाता है।
पोस्टजीआईएस डेटाबेस से रीडिंग सुविधाओं के समान दृष्टिकोण के लिए प्रश्न खुले रहते हैं।


आप pgRout का उपयोग नहीं करना चाहते हैं?
UnderDark

मैं pgRout का उपयोग करूँगा, हालाँकि जिस एल्गोरिथ्म को मैं लागू करने की कोशिश कर रहा हूँ वह द्विदिश एक-सितारा है और एक ऑफ-द-शेल्फ विकल्प नहीं है।
user39901230

जवाबों:


5

NetworkX में निर्देशित ग्राफ़ को अप्रत्यक्ष में बदलने की एक विधि है

इसके अतिरिक्त, कोड को शेपफाइल (या शेपफाइल्स की निर्देशिका) को पढ़ने के लिए वास्तव में एक निर्देशित ग्राफ को आउटपुट करने की आवश्यकता नहीं है, बस उस समय मेरी जरूरत थी। मैंने कोशिश नहीं की है, लेकिन सिंगल लाइन की जगह:

net = nx.DiGraph()

... बस चाल चल सकता है।

NetworkX ऐसा लगता है कि यह 1.4 ( फीचर ) में बॉक्स के बाहर शेपफाइल्स (OGR के साथ) पढ़ने का समर्थन करेगा ।


गलतफहमी के लिए खेद है। जो मैं वास्तव में करने की कोशिश कर रहा हूं वह है शेपफाइल्स को श्प 2 पीजीएससीएल और फिर पोस्टजीआईएस डेटाबेस से नेटवर्कएक्स ग्राफ में आयात करने के लिए पोस्टगिस डेटबसे में परिवर्तित करना।
user39901230

धन्यवाद बेन। बस देखा कि 5 दिन पहले उन्होंने टिकट बंद कर दिया और आपका कोड नेटवर्कएक्स प्रोजेक्ट में जोड़ दिया गया। यह देखना दिलचस्प होगा कि क्या पोस्टगिस डेटाबेस से सुविधाओं के साथ एक ही काम करना संभव होगा, लेकिन मैं क्रिसमस की छुट्टी पर उस पर एक नज़र डालूंगा।
user39901230

चूंकि नेटवर्कएक्स ने मॉड्यूल को शामिल किया है, लेकिन अभी तक जारी नहीं किया गया v1.4 क्या उपयोगितावादी नेटवर्क का उपयोग करने के कुछ नमूने देना संभव होगा। अब तक मैंने टेस्टनेटवर्क लोड के माध्यम से और यहां पाए गए आपके नमूनों के माध्यम से स्किम्ड किया है: gis.stackexchange.com/questions/210/alternatives-to-pgrout/…
user39901230

इस पर अभी भी कुछ काम करना बाकी है, यही वजह है कि मैंने इसे पीपीपी पर नहीं डाला है। मैंने अब विकी को सार्वजनिक कर दिया है, इसमें सबसे अच्छा काम करने वाले नमूने होने चाहिए: bitbucket.org/gallipoli/utilitynetwork/wiki/Home
bwreilly

चूंकि मैं इसे अपनी अंतिम स्नातक वर्ष परियोजना में शामिल करने की योजना बना रहा हूं, क्या मेरे लिए भी योगदान करना संभव होगा?
user39901230


2

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

जियोडजैंगो लिंक यहां है: http://docs.djangoproject.com/en/dev/ref/contrib/gis/install/#overview

ध्यान दें कि Django अजगर के लिए एक वेब फ्रेमवर्क है, जियोडजैंगो ने बैकएंड वेबडेवलपमेंट के लिए जीआईएस डेटा को संपादित करने और प्रदर्शित करने के बारे में आया था, लेकिन यह प्रत्यक्ष OGR पायथन बाइंडिंग (बहुत अधिक 'पायथोनिक' के बजाय कक्षाओं का अधिक सहज और शक्तिशाली सेट देता है) सीधे 'सी सिंटैक्स से परिवर्तित', उदाहरण के लिए आप एक django.contrib.gis.geos.linestring.LineString क्लास बना सकते हैं बजाय सीधे निर्माण में wkbLineString के साथ एक ogr.Geometry वर्ग बनाने के लिए)।

भूगोदंगो ट्यूटोरियल में स्थित: http://docs.djangoproject.com/en/dev/ref/contrib/gis/prof//

आपके पोस्टग्रेज डेटाबेस से रीड / राइट को कॉन्फ़िगर करने के लिए आवश्यक कदम अन्य django python मॉडल का उपयोग करने के रूप में सरल हैं, सिरदर्द आपके भू-स्थानिक डेटाबेस को सेट कर रहा है। इसलिए, डेटा को पोस्टग्रेज डेटाबेस में लोड करने के लिए, ऊपर दिए गए ट्यूटोरियल में एंकर #layermapping लिंक देखें; यह डेटाबेस स्तंभों के लिए आकृति फ़ाइल में उपलब्ध डेटा के बीच फ़ील्ड मैपिंग है जो आपके डेटा मॉडल के लिए सेटअप है।

बहुत कम से कम, मुझे ट्यूटोरियल के माध्यम से जाने और PostGIS बाइंडिंग को सेट करने में 2-3 घंटे का समय लगेगा और देखना होगा कि क्या यह GIS टूल वह है जिसे आप ढूंढ रहे हैं।

यह भी ध्यान दें, कि जब आपके पास एक जीआईएस सक्षम डेटाबेस (जैसे कि पोस्टजीआईएस pgsql के लिए बाइंडिंग) है, तो आप डेटाबेस संग्रहित फ़ंक्शंस का उपयोग करके डेटाबेस ज्यामिति (लाइन्स / बहुभुज) डेटा पर सीधे '' '' कर सकते हैं '' (जैसे ST_Contains(...)कि नमूना SQL देखें) पोस्टगिस / pgsql के लिए यहां: http://postgis.refractions.net/docs/ch04.html#id2639062 ... और जियोड्जैंगो के बारे में सबसे अच्छी बात यह है कि यह आपके लिए इन स्थानिक नज़रिए को करने के लिए अनुकूलित है

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