मैं my gEDA fork पर काम कर रहा हूँ में एक स्थानिक सूचकांक की जरूरत है और एक वास्तविक स्थानिक सूचकांक के पक्ष में मौजूदा सरल टाइल आधारित प्रणाली से छुटकारा पाने के लिए चाहते हैं।मैं सी
एक एल्गोरिदम जो प्रभावी रूप से अंक पाता है पर्याप्त नहीं है: मुझे गैर-शून्य सीमा वाले ऑब्जेक्ट्स ढूंढने की आवश्यकता है। आयताकार आय वाले ऑब्जेक्ट्स के संदर्भ में सोचें, जो इंडेक्स में मुझे आवश्यक विस्तार के स्तर को काफी हद तक कैप्चर करता है। एक खोज आयत को देखते हुए, मुझे उन सभी वस्तुओं को कुशलतापूर्वक खोजने में सक्षम होना चाहिए जिनके बाध्य आयताकार अंदर हैं, या जो छेद, खोज आयताकार है।
सूचकांक केवल पढ़ने के लिए नहीं किया जा सकता है: gschem एक योजनाबद्ध कैप्चर प्रोग्राम है, और इसका पूरा बिंदु योजनाबद्ध आरेख के आसपास चीजों को स्थानांतरित करना है। तो चीजें एक आदान-प्रदान होने जा रहे हैं। इसलिए जब मैं खोज से थोड़ा महंगा होने का सम्मिलन कर सकता हूं, तो यह भी अधिक महंगा नहीं हो सकता है, और हटाना भी संभव और उचित दोनों होना चाहिए। लेकिन सबसे महत्वपूर्ण आवश्यकता एसिम्प्टोटिक व्यवहार है: खोज ओ (लॉग एन) होना चाहिए यदि यह ओ (1) नहीं हो सकता है। सम्मिलन/हटाना अधिमानतः ओ (लॉग एन) होना चाहिए, लेकिन ओ (एन) ठीक रहेगा। मुझे निश्चित रूप से कुछ भी नहीं चाहिए> ओ (एन) (प्रति क्रिया; स्पष्ट रूप से ओ (एन लॉग एन) ऑल ऑब्जेक्ट ऑपरेशन के लिए अपेक्षित है)।
मेरे विकल्प क्या हैं? मुझे the various options का मूल्यांकन करने के लिए पर्याप्त चालाक नहीं लगता है। आदर्श रूप से कुछ सी लाइब्रेरी होगी जो मेरे लिए सभी चालाक सामान करेगी, लेकिन मैं यांत्रिक रूप से एक एल्गोरिदम लागू करूँगा, अगर मुझे करना है तो मैं पूरी तरह से समझ सकता हूं या नहीं। जीईडीए तरफ से ग्लिब का उपयोग करता है, अगर यह सिफारिश करने में मदद करता है।
फुटनोट:
स्टैंडर्ड GEDA "टाइल" जो बाउंडिंग आयत में वस्तुओं के लिए खोजों की गति की सेवा की एक निश्चित संख्या (वर्तमान में 100) में एक योजनाबद्ध आरेख बिताते हैं। यह स्पष्ट रूप से खोज करने के लिए पर्याप्त रूप से अधिकतर स्कीमेटिक्स बनाने के लिए काफी अच्छा है, लेकिन जिस तरह से किया गया है, वह अन्य समस्याओं का कारण बनता है: बहुत से कार्यों को एक वास्तविक तथ्य के लिए एक सूचक की आवश्यकता होती है। टाइल्स ज्यामिति भी तय की गई है: केवल एक टाइल द्वारा कवर किए गए क्षेत्र में पैनिंग (और संभवतः ज़ूमिंग) द्वारा इस टाइलिंग सिस्टम को पूरी तरह से पराजित करना संभव होगा।
एक वैध जवाब टाइलिंग सिस्टम के तत्वों को रखना होगा, लेकिन इसकी कमजोरियों को ठीक करने के लिए: पूरे स्थान को फैलाने के लिए इसे पढ़ाना, और आवश्यक होने पर उप-विभाजित करना। लेकिन मैं दूसरों को अपने दो सेंट जोड़ना चाहता हूं इससे पहले कि मैं स्वायत्तता से निर्णय लेता हूं कि यह सबसे अच्छा तरीका है।
यह भी देखें http://www.boost.org/doc/libs/1_61_0/libs/geometry/doc/html/geometry/spatial_indexes/rtree_examples/quick_start.html और यदि यह अभी भी चल रहा है तो आपकी परियोजना पर शुभकामनाएँ! –