6

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

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

मुझे बहुत कुछ देखने के बाद कोई नहीं मिल रहा है, लेकिन मुझे विश्वास नहीं है कि कोई भी नहीं हो सकता है। क्या कोई पूर्व लिखित पुस्तकालय है जो यह करता है?

यह सवाल:

Fastest way to find the location(zip, city, state) given latitude/longitude

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

+0

@birryree, टिप्पणियां टिप्पणियों के लिए हैं। यदि आप प्रश्न को बुकमार्क करना चाहते हैं, तो पसंदीदा प्रश्न सुविधा का उपयोग करें (स्टार पर क्लिक करें)। –

उत्तर

3

स्थानिक डेटाबेस (उदा। पोस्टगिस के साथ पोस्टग्रेस्क्ल) एल्गोरिदम का उपयोग करें जो दिए गए अक्षांश/देशांतर जानकारी के लिए डेटा को देखने में तेज़ी से हैं। जैसा कि आप जावा लाइब्रेरी का उपयोग करना चाहते हैं और इसे स्मृति में रखना चाहते हैं, आप H2 Spatial database देख सकते हैं। मैंने कभी इसका इस्तेमाल नहीं किया है, इसलिए मैं इसके प्रदर्शन पर टिप्पणी नहीं कर सकता।

संपादित करें: एचएम, मैंने जो लिंक प्रदान किया है, उसके करीब दिखने से पता चलता है कि यह एक योजनाबद्ध विशेषता है ... व्यक्तिगत रूप से मैं पोस्टग्रेस्क्ल/पोस्टगिस (जावा के साथ या बिना जावा फ्रंटएंड के) का उपयोग करता हूं और इसके साथ किया जाता हूं । यदि आपके सर्वर में पर्याप्त स्मृति है तो यह अभी भी "इन-मेमोरी" आवश्यकता के अनुरूप होगा। स्वाभाविक रूप से यह जावा पुस्तकालय आवश्यकता फिट नहीं है। हालांकि JSI है, जिसका उपयोग स्मृति और जावा के साथ किया जा सकता है।

+0

इस समस्या को हल करने के लिए केवल पोस्टग्रेस की स्थापना और रखरखाव मेरी स्थिति में असंभव होगा। :( जेएसआई काफी आशाजनक दिखता है! प्रत्येक व्यक्ति के पास ज़िप/शहर/राज्य/आदि की स्वतंत्र रूप से उपलब्ध सूचियां हैं जो आयतों की बजाय उनके अक्षांश/लंबे निर्देशांक के साथ हैं, इसलिए पॉइंट-टू-आयत खोज के बजाए पॉइंट-टू-पॉइंट वास्तव में उपयुक्त नहीं है। यह अनुकूलनीय हो सकता है ... लेकिन फिर भी ... इस तरह की चीज को अनुकूलित करने के लिए, हजारों छोटे आयत बनाते हैं? क्या वास्तव में बाजार पर कोई प्रीपेक्टेड समाधान उपलब्ध नहीं है? मुझे आश्चर्य है कि न तो मैं (न ही स्पष्ट रूप से कोई और) एक पा सकते हैं। –

+1

ठीक है, जेएसआई लाइब्रेरी अंक के साथ पूरी तरह से अच्छी तरह से काम करती है, बस शून्य आकार के आयत का उपयोग करें (यानी सेट न्यूनतम = अधिकतम और मिनीएक्स = अधिकतमएक्स)। असल में यह मूल रूप से 'देशी' समर्थन जोड़ने का इरादा था अंक के लिए, लेकिन प्रदर्शन आयताकारों का उपयोग करके काफी अच्छा था, जिसकी कभी आवश्यकता नहीं थी। – Aled

+0

मुझे जेएसआई को इंगित करने के लिए धन्यवाद। आप क्वाड्री या आरटी और जावा के लिए भी खोज सकते हैं। मैंने कुछ काम किया है लेकिन अब मुझे पता है कि मैं बेहतर हो सकता था और अभी तक इन चालों को लागू करने का समय नहीं था: https://karussell.wordpress.com/2012/05/29/tricks-to-speed-up-neighbor-seches-of-quadtrees-geo-spatial -जावा/ – Karussell

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

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