अब मैं जियोहाशिंग एल्गोरिदम (http://www.geohash.org) के पड़ोसियों के पड़ोसियों को खोजने के लिए एक सुरुचिपूर्ण एल्गोरिदम खोज रहा हूं।
मूल रूप से एक केंद्रीय भू-रंग लेते हैं, और फिर इसके चारों ओर समान आकार के हैंश (8 तत्व) की पहली 'अंगूठी' प्राप्त करें, फिर, अगले चरण में, अगली अंगूठी को पहले आदि के आसपास प्राप्त करें आदि क्या आपने सुना है ऐसा करने के लिए एक शानदार तरीका है?जियोहाशिंग - पड़ोसियों के पड़ोसियों को दोबारा मिलते हैं
प्रत्येक पड़ोसी को लेने और अपने पड़ोसियों को बड़े पैमाने पर ओवरलैप को अनदेखा करने के लिए ब्रूट फोर्स हो सकता है। (इसी देखने-टेबल के साथ एक केंद्र कुंजी और एक दिशा में गुजर, इस तरह के साथ वर्तमान समाधान,: एक केंद्रीय geohash चारों ओर पड़ोसी (रूबी में यहां उदाहरण के लिए: http://github.com/masuidrive/pr_geohash/blob/master/lib/pr_geohash.rb) कई बार हल किया गया है स्पष्टीकरण के लिए
संपादित करें):
def adjacent(geohash, dir)
base, lastChr = geohash[0..-2], geohash[-1,1]
type = (geohash.length % 2)==1 ? :odd : :even
if BORDERS[dir][type].include?(lastChr)
base = adjacent(base, dir)
end
base + BASE32[NEIGHBORS[dir][type].index(lastChr),1]
end
(Yuichiro MASUI के lib से उद्धरण)
मैं कहता हूँ इस दृष्टिकोण बदसूरत जल्द ही मिल जाएगा, क्योंकि दिशाओं बदसूरत हो जाता है एक बार हम अंगूठी दो या तीन में हैं। एल्गोरिदम आदर्श रूप से केवल दो पैरामीटर, केंद्र क्षेत्र और 0 से दूरी केंद्र केंद्र (["u0m"]
और 1 (=> [["u0t", "u0w"], ["u0q", "u0n"], ["u0j", "u0h"], ["u0k", "u0s"]])
के आसपास के समान आकार के 8 भूगोलों से बना पहला अंगूठी है। दो 16 क्षेत्रों के साथ दूसरी अंगूठी है पहले अंगूठी के आसपास आदि
आप एक सुंदर रास्ते में बिट्स से 'के छल्ले' निकालना किसी भी तरह से देख सकते हैं?
जब आप केंद्रीय भूहाश से शुरू करते हैं तो कितना भूख लम्बाई माना जाना चाहिए? – Atul