2009-12-01 2 views
8

अक्षांश/देशांतर द्वारा प्रतिनिधित्व किए जाने वाले निकटतम स्थानों की गणना करने के लिए, मैं मानचित्र को छोटे ग्रिड में विभाजित करने पर विचार कर रहा था, लगभग 100x100 मीटर ग्रिड। अनिवार्य रूप से प्रत्येक बिंदु एक ग्रिड को सौंपा जाएगा।मैं दुनिया को छोटे ग्रिड में कैसे विभाजित कर सकता हूं जैसे कि यह मुझे प्रत्येक लेट/लम्बा स्थान को ग्रिड में असाइन करने की अनुमति देता है?

मैं समझता हूं कि मैं इसके बजाय स्थानिक इंडेक्स का उपयोग MySQL आदि के साथ भी कर सकता हूं, लेकिन कैसंद्रा जैसे गैर-रिलेशनल डेटाबेस का उपयोग करने की योजना बना रहा हूं जहां स्थानिक वस्तुओं पर अनुक्रमण करना मुश्किल होगा, और इसलिए किसी प्रकार की ग्रिड सन्निकटन तकनीक साफ हो सकता है।

ऐसी ग्रिड प्रणाली बनाने और 2-डी स्थानिक स्थानों को मैप करने का सबसे अच्छा तरीका क्या होगा?

संपादित 1: यह ठीक हो सकता है अगर ग्रिड पूरी तरह से समान नहीं हैं, तो ध्रुवों के चारों ओर अधिक।

+0

आसान नहीं है ... दुनिया फ्लैट नहीं है, यह एक आयताकार ग्रिड में विभाजित नहीं होता है। – skaffman

+0

शानदार सवाल। अंत में आपने क्या किया? – Zubair

+0

क्या आपको कोई समाधान मिला? –

उत्तर

4

आयताकार ग्रिड एक उचित अनुमान हो सकता है, लेकिन केवल अपेक्षाकृत छोटे क्षेत्र में जो ध्रुवों के बहुत नजदीक नहीं है। एक पूर्ण-ग्लोब समाधान के लिए एक अलग दृष्टिकोण की आवश्यकता होती है।

+0

धन्यवाद रिक। मुझे लगता है कि मेरे उपयोग के लिए, यह स्वीकार्य हो सकता है अगर ग्रिड समान नहीं हैं और अधिकतर ध्रुवों के आस-पास के क्षेत्र के लिए नहीं हैं। – Nishith

+0

गैर-वर्दी ग्रिड स्वाभाविक रूप से तब होंगे जब आप ध्रुवीय निर्देशांक (लैट, लांग, त्रिज्या) का उपयोग प्रत्येक किनारे पर कोणीय दूरी की समान संख्या के साथ करते हैं।यदि आप इसके बजाय कार्टेशियन निर्देशांक (x, y, z) में कनवर्ट करते हैं, तो आपको थोड़ा आसान होने के लिए अनुक्रमण, आदि मिल सकता है। सर्वोत्तम दृष्टिकोण आपकी विशिष्ट आवश्यकताओं पर निर्भर करता है, जिसमें सटीकता और गति जैसी चीजें शामिल हैं। – RickNZ

2

आप एक आयताकार ग्रिड नहीं बना सकते जो समान रूप से एक विश्व को मानचित्र बनाता है। यदि ग्रिड एक समान होना चाहिए, तो आपको इसके बजाय त्रिकोण का उपयोग करना होगा। लेकिन आम तौर पर, मुझे संदेह है कि इससे आपकी समस्या हल हो जाएगी। आपको जो चाहिए वह 2 डी octree है (यह एक Google खोज लिंक है; किसी भी प्रकार के कामों को आसानी से बनाने के लिए छवियों की जांच करें): आपको अपने निर्देशांक को पदानुक्रमों में विभाजित करना होगा (उदाहरण के लिए उत्तर/दक्षिण/पूर्व/मूल के पश्चिम पहले स्तर के लिए और फिर 90 डिग्री, आदि के बीच)।

फिर आप कुछ चयन कर सकते हैं जो जल्दी से छोटे आयताकार उत्पन्न करेंगे जिसमें मौजूदा निर्देशांक होते हैं। अब, आप आयत के आकार की जांच कर सकते हैं। यदि यह < 100 मीटर है, तो आपको एक समाधान मिला है। अन्यथा, आपके पास जांचने के लिए केवल कुछ पद होंगे (आमतौर पर एक)।

कार्यान्वयन के लिए "octree sql डेटाबेस" के लिए Google।

4
अपने सटीक आवेदन आवश्यकताओं Geohashing जानने के लिए एक उपयुक्त तकनीक हो सकता है बिना

:। http://en.wikipedia.org/wiki/Geohash

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

7

आपके स्थानिक सूचकांक/भूहाश में द्वि-आयामी स्थानिक निर्देशांक से मानचित्रण एक दिलचस्प समस्या है। आप this article on quadtrees, geohashes and Hilbert curves देख सकते हैं। Hilbert curve एक अंतरिक्ष-भरने वाला वक्र है जो इलाके प्रदान करता है; आपके उद्देश्यों के लिए, इसका मतलब है कि एक-आयामी स्थानिक सूचकांक में आस-पास की वस्तुएं द्वि-आयामी अंतरिक्ष में पास होंगी।

लक्ष्य (जैसा कि अन्य उत्तरदाताओं द्वारा वर्णित है) सर्वर से अनावश्यक डेटा के अनुरोध किए बिना प्रश्न में अंतरिक्ष को कवर करने के लिए आवश्यक प्रश्नों की संख्या को कम करना है। आप 2-डी स्पेस से 1-डी इंडेक्स में मैपिंग कैसे करते हैं, उस लक्ष्य को प्रभावित करेंगे।

संबंधित मुद्दे

 संबंधित मुद्दे