2009-12-06 14 views
11

मैं ऐप लिखना चाहता हूं जहां उपयोगकर्ता मानचित्र पर किसी भी स्थान को इंगित कर सकता है (न केवल शहरों) और उस स्थान पर टाइमज़ोन प्राप्त कर सकता है।भौगोलिक निर्देशांक से समय क्षेत्र प्राप्त करने के लिए एल्गोरिदम

क्या डेटा संरचना (ऐप में इंटरनेट कनेक्टिविटी नहीं होगी) और एल्गोरिदम का उपयोग करना चाहिए? जहां मैं आवश्यक डेटा प्राप्त कर सकता हूं (मैं 24 सटीक में मानचित्र को विभाजित करने के बाद और अधिक सटीकता नहीं)?

मैं जावा एमई में अपना ऐप लिखूंगा।

+0

यह भी देखें [इस विषय पर समुदाय विकी] (http://stackoverflow.com/q/16086962/634824) –

उत्तर

5

वेब सेवाओं की एक संख्या है कि (GeoNames एक great API है उदाहरण के लिए) आप के लिए ऐसा कर सकते हैं कर रहे हैं। लेकिन अगर आपके पास इंटरनेट कनेक्शन नहीं है, तो ऐसा कुछ नहीं है जिसे आप सीधे जावा एमई मानक पुस्तकालयों में ढूंढने जा रहे हैं।

आप, कुछ बंद कर सकता है, हालांकि: शहरों प्रत्येक समय क्षेत्र के लिए इसी के निर्देशांक स्टोर है, तो एक Voronoi tessellation आप जिन क्षेत्रों प्रत्येक शहर के सबसे करीब हैं कि ऐसा। फिर, जब आपके उपयोगकर्ता किसी विशेष भौगोलिक क्षेत्र पर क्लिक करते हैं, तो आप बस उस बिंदु को टेस्सेलेशन के दाहिने भाग पर मानचित्रित करते हैं, और प्रतिष्ठा - आपको निकटतम शहर मिल गया है, जो बदले में सही समय क्षेत्र निर्धारित करता है।

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

+2

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

+0

दाएं। कुंजी केवल प्रत्येक देश/समय क्षेत्र के लिए एक प्रतिनिधि शहर होगा। उदाहरण के लिए, आपको फ़्रांस का प्रतिनिधित्व करने के लिए छह शहरों की आवश्यकता नहीं है, केवल उस क्षेत्र के लिए केवल एक (उदाहरण के लिए पेरिस) (मध्य यूरोपीय समय) है। इससे प्रत्येक वोरोनोई क्षेत्र का आकार बढ़ जाता है और सही उत्तर का मौका मिलता है। –

+0

लेकिन पेरिस और बाकी फ्रांस के बहुभुज पेरिस के वोरोनोई क्षेत्र नहीं होंगे। निश्चित रूप से, प्रत्येक समय क्षेत्र (या प्रत्येक देश) के लिए बहुभुज प्रतिनिधित्व का उपयोग करें, लेकिन वे वोरोनोई क्षेत्र नहीं होंगे। –

13

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

इस तरह आप न केवल अतिरेक से बचने, लेकिन यह भी:

  1. आप डीएसटी संदर्भ जानकारी स्वतंत्र रूप से प्रदर्शित कर सकते हैं निर्देशांक का एक विशिष्ट सेट की, और
  2. कुछ देश जब डेलाइट बचत समय के लिए नियमों को बदल दे शुरू होता है और समाप्त होता है, आपके पास अद्यतन करने के लिए एक स्थान होता है।

हालांकि, कुछ सीमाओं के अत्यधिक अनियमित आकार को देखते हुए, आपको अपने इनपुट और/या प्रदर्शन के संकल्प के आधार पर सटीकता के लिए काफी बड़ी डेटा संरचना की आवश्यकता होगी।

+0

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

+0

बस सुनिश्चित करें कि आप किसी दिए गए स्थान के लिए एकाधिक समय क्षेत्र की अनुमति दें। दुनिया के कुछ स्थानों में बहुत अस्पष्ट सीमाएं हैं। – Trejkaz

3

ठीक है, अगर सटीकता की आवश्यकता नहीं है, तो डेटा संरचना से परेशान क्यों हो? एक समारोह लिखें, जो एक रेखांश दिया जाता है, ग्रीनविच मेरिडियन से ऑफसेट, घंटे में व्यक्त किया जाता है।

और यदि यह आपके लिए काम नहीं करता है, तो मैं जोएल नेली के जवाब के साथ जाऊंगा।

+3

मैं हँसे, लेकिन यह शायद सबसे सुरक्षित जवाब है, क्योंकि यह सभी को समान रूप से परेशान करता है। : डी – Trejkaz

+0

उदा। abs (देशांतर/15), इसलिए लॉस एंजिल्स के लिए, जो -118.44 है, आपको -7.88 मिलेगा और हम जीएमटी -8 हैं। – Rob

3

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

इसके अलावा, यदि आप समय परिवर्तनों की गणना करने के लिए टाइमज़ोन जानकारी का उपयोग करना चाहते हैं तो यह भी कठिन हो जाता है, डेलाइट सेविंग टाइम का उपयोग करने के बारे में निर्णय के रूप में, और जिस तारीख में यह परिवर्तन होता है, केवल 2 सप्ताह के नोटिस के साथ बदल सकता है। देखें: http://www.timeanddate.com/news/time/argentina-dst-2009-2010.html

यदि आप रुचि रखते हैं तो पॉलीगॉन जानकारी http://www.worldtimeserver.com/time_zone_guide/ पर खरीदी जा सकती है।अस्वीकरण - मैंने यह जानकारी नहीं खरीदी है, इसलिए यह नहीं पता कि यह कितना अच्छा है।

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