ओपनरों में रडार डेटा को चेतन करने का सबसे अच्छा तरीका


9

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

इस दृष्टिकोण के साथ समस्या यह है कि एक बार जब मैं डेटा की काफी बड़ी अवधि (लगभग 3 घंटे या तो) (लगभग 36 परतों के बराबर) को मारता हूं, तो मेमोरी की खपत बहुत अधिक हो जाती है (लगभग 250mb)। अंतिम उत्पाद को एक लूप में 18 घंटे तक डेटा को संभालने में सक्षम होना चाहिए जो उपरोक्त संख्या के आधार पर एनीमेशन के लिए 1GB से अधिक मेमोरी की आवश्यकता होगी और संभवतः ब्राउज़र को क्रैश कर देगा या कम से कम इसे बहुत सुस्त बना देगा।

मैंने प्रत्येक लेयर के लिए WMS लेयर्स का उपयोग करते हुए एक ही चीज़ का प्रयास किया, लेकिन रिड्राविंग बहुत धीमा था (एनिमेशन हर 100ms में लेयर बदलता है) और मेमोरी की खपत वेक्टर संस्करण की तुलना में बहुत बेहतर नहीं थी।

मैंने ऐसा करने के तरीके के बारे में कुछ उदाहरण खोजने की कोशिश कर रहा है, लेकिन अब तक खाली हाथ आ रहा हूं। किसी को भी करता है कि यह कैसे करना है पर कोई सुझाव है? मैं इस बिंदु पर आपके पास कोई भी विचार ले जाऊंगा क्योंकि मैं इस पर हफ्तों से अटका हुआ हूं, जिसका कोई जवाब नहीं है।

जवाबों:


9

प्रकार की एक स्लाइडिंग विंडो का प्रयास करें। आप एक बार में 10 परतों को बफर कर सकते हैं। 10 परतों तक पहुँचने के बाद, परतों को नष्ट करना और उन्हें DOM और मेमोरी से हटाना शुरू करें। एक बार जब आप लेयर 10 से टकराते हैं, तो लेयर 0-9 नष्ट हो जाती है और 20-30 लेयर्स को दृश्यता के साथ लोड कर दिया जाता है। यह आपको लगभग 10 परतों का बफर देगा लेकिन आप अपनी सहनशीलता को संशोधित कर सकते हैं जैसा कि आप प्रदर्शन के लिए फिट देखते हैं। यदि आपको लगता है कि 20 परतें बेहतर काम करती हैं, तो 20 के साथ जाएं।

          {Destroy Layers} |10|11...19|20| {Start Loading Layers}
|---------------------------------------------------------------------------|
                           
        Timespan           Current Possition

आप सर एक जीनियस हैं! मैंने वास्तव में इसे अभी तक लागू नहीं किया है, लेकिन मुझे इसके काम नहीं करने का कोई कारण नहीं दिखता है, और समायोज्य बफर का मतलब है कि हम इसे अलग-अलग वातावरणों के लिए अनुकूलित कर सकते हैं। मैं इस सुझाव के लिए आपको बहुत धन्यवाद नहीं दे सकता!
TheOx

धन्यवाद, मुझे उम्मीद है कि यह व्यवहार में काम करता है। यह कैसे संभव होता है, हमें बताएं।
कैप्ट्रैगन

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

यह सुनकर बहुत अच्छा लगा।
कैप्ट्रैगन

@CaptDragon: (या TheOx) क्या एक कार्यशील उदाहरण के लिए पोस्ट करना संभव होगा? मैं एक बिंदु के समाधान को समझता हूं, लेकिन एक सरल उदाहरण और कोड को देखने से बहुत मदद मिलेगी क्योंकि मेरे पास बहुत ही समान मुद्दा है। धन्यवाद!
टेक्नोक्रीटर

1

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


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

1

डेटा को सरल बनाने के अलावा (यहां तक ​​कि थोड़ी सी जगह भी बचा सकती है) आपने MapServer या किसी अन्य तरीके से अपने डेटा को पारदर्शिता के साथ टाइल्स में बदलने और पृष्ठभूमि परत के शीर्ष पर बिछाने के लिए मैप लेयर बनाने का प्रयास किया है। मैंने इस दृष्टिकोण को कोरोप्लेथ मैप्स के साथ देखा है, जिसमें सैकड़ों-हजारों पॉलीगोन (या मार्कर) हैं, लेकिन अभी तक इसे स्वयं करने की कोशिश नहीं की जा सकी है (सर्वर साइड की आवश्यकता के कारण)।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.