छवि के रूप में वेक्टर डेटा एन्कोडिंग के लिए एक प्रोटोकॉल की ओर


16

यह इस सवाल का अनुवर्ती है: जीआईएसक्लाउड जैसे प्रदर्शन प्रदर्शन के साथ वेक्टर बहुभुज बनाना?

अपने जवाब में, यागी ने एक छवि प्रारूप में भौगोलिक जानकारी को एन्कोडिंग और ब्राउज़र में डिकोड करने के लिए एक तर्क को रेखांकित किया। वह देखता है कि "वर्तमान में, ऐसा करने के लिए, आपको अपना स्वयं का रोल करना होगा"। उन्होंने यह भी कहा कि वर्तमान में इसके लिए कोई मानक नहीं है।

जबर्दस्त प्रदर्शन को देखते हुए, ऐसा लगता है कि समुदाय मानक से लाभान्वित हो सकता है। समस्या की मेरी समझ से, ऐसा लगता है कि इससे निपटने का एक मानक तरीका लागू किया जा सकता है। इसे बी-डब्ल्यूएफएस कहें।

मेरा सवाल है, तो: वेक्टर डेटा एन्कोडिंग के लिए एक उपयोगी प्रोटोकॉल क्या होगा जैसा कि चित्र दिखता है? क्या उपयोगी चीज़ों से निपटने के लिए यह बहुत जटिल है, या क्या यह "अभी तक किसी ने ऐसा नहीं किया है" का मामला है?


मुझे अपनी अज्ञानता के लिए खेद है, शायद मुझे यह बात नहीं मिली, लेकिन, रंग तालिका के साथ एक जियोटीफ़ काम नहीं करता है?
पाब्लो

2
मेरी अज्ञानता के लिए क्षमा करें, भी;) मुझे यकीन नहीं है कि एक रंग तालिका क्या है, लेकिन मुझे ऐसा नहीं लगता। लक्ष्य संबंधित मेटाडेटा के साथ एक छवि के साथ पारित करने के लिए नहीं है। जैसा कि आप उल्लेख करते हैं, यह एक हल की गई समस्या है। लक्ष्य मानव डेटा के साथ वेक्टर डेटा के साथ पारित करने के लिए मानव पठनीय UTF-8 की तुलना में अधिक कॉम्पैक्ट प्रारूप में है। यह देखते हुए कि जावास्क्रिप्ट बाइनरी डेटा से निपटने के लिए जावास्क्रिप्ट से सुसज्जित है, पोज किए गए वर्कअवे को एक छवि बाइनरी में डेटा को एनकोड करना है और छवि को डीकोड करने के लिए HTML 5 कैनवस का उपयोग करके इसे फिर से वेक्टर ऑब्जेक्ट्स में बदलना है।
canisrufus

1
@ पाब्लो ने माना कि नेटवर्क I / O (पार्स करने के बजाय) वेब पर वैक्टर से निपटने में अड़चन है, बाइनरी एन्कोडेड वैक्टर से निपटने के लिए एक स्थापित तरीका होना चाहिए, जिससे बेहतर प्रदर्शन करने वाले वेब मैप लिखना आसान हो सके।
canisrufus

दिलचस्प है, अब मुझे यह मिल गया है ... मैं अब वेबमैप के साथ काम करना शुरू कर रहा हूं और मैं अभी भी मूल बातें सीख रहा हूं। BTW, एक कॉल करने योग्य या कॉलोरामैप एक तालिका है जो एक वर्ग के लिए रेखापुंज सेल मान को सम्‍मिलित करता है।
पाब्लो

1
@monkut हाँ, यह अलग है। :) वैक्टर का एक सेट रेखापुंज बस इसे प्रदान कर रहा है। देखा। रेखापुंज! इस प्रश्न में मैं जो बात कर रहा था वह अलग है। मेरे द्वारा जुड़े प्रश्न में आपको रागी का जवाब पढ़ना चाहिए; इसका मतलब मुझे समझाना शुरू करना चाहिए। यदि आप पाते हैं कि यह अभी भी स्पष्ट नहीं है, तो मुझे वास्तविक उत्तर देने में कुछ समय लगेगा।
canisrufus

जवाबों:


5

यह पता चला है कि यह एक बेकार काम है। जावास्क्रिप्ट में उन्नयन का हिस्सा XHR2, द्विआधारी डेटा के आयात और पार्सिंग को किसी भी चीज़ के साथ ज़बरदस्ती किए बिना अनुमति देगा।


4

इसे अलग मानक होने की आवश्यकता नहीं है, क्योंकि WFS कार्यान्वयन विनिर्देश 04-094, खंड 9.4 कहता है:

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

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


मानक के बारे में बिंदु के लिए +1। Zipping समान अर्थों में बाइनरी एन्कोडिंग नहीं है। दो दृष्टिकोणों के बीच प्रदर्शन निहितार्थ के बारे में प्रश्न, एक ज़िप्ड जियोजोन बनाम ज्यामितीय एक छवि में एन्कोडेड, निश्चित रूप से खोज के लायक हैं।
कैनिसफ्रुस

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

वेक्टर डेटा की चर लंबाई के मुद्दे को मूल रूप से उसी तरह से निपटा जा सकता है जिस तरह से नेटवर्क पैकेट भेजते हैं। मैं मानता हूं कि इसकी उप-इष्टतम, लेकिन हमें इस तथ्य से धक्का दिया जाता है कि जेएस द्विआधारी के साथ अच्छी तरह से व्यवहार नहीं करता है। मैं बस कुछ लिखने और लागू करने जा रहा हूं, जैसा कि मेरे पास समय है। मैं इसे यहाँ रखूँगा जब मुझे कुछ काम मिलेगा ...
canisrufus

1
मुझे वास्तव में लगता है कि रागी ने अपने उत्तर में इसे स्पष्ट रूप से परिभाषित किया था। मैं सहमत हूँ कि मैंने नहीं किया। :) यह हो सकता है कि एक परिकल्पना जो एक द्विआधारी प्रारूप हो सकती है एक समग्र तेजी से डेटा ट्रांसफर प्रारूप गलत है। अंतर सिर्फ नगण्य हो सकता है। मैंने कहा था कि "प्रदर्शन के निहितार्थ ... खोज के लायक हैं।" जाहिर है मैं सिर्फ एक द्विआधारी प्रारूप को परिभाषित नहीं कर सकता और फिर जीत की घोषणा कर सकता हूं। हम देखेंगे!
कैनिसरफस

1
@MerseyViking मेरे उत्तर को फिर से दोहराने के बिना, मुझे सीपीयू चक्रों के संदर्भ में इस परिप्रेक्ष्य में रखने दें (चूंकि आपकी धारणा समय से पहले अनुकूलन के बारे में है)। एल 1 कैश = 1 सीपीयू चक्र, एल 2 = 14 चक्र, रैम ~ 250 चक्र, डिस्क = 41,000,000, नेटवर्क (बैंडविथ पर निर्भर करता है, इसलिए दयालु होने देता है) = 240,000,000 तक पहुंच। I / O, चाहे डिस्क-आधारित या नेटवर्क-आधारित (हमारा मामला) परिमाण धीमे का आदेश हो। स्पेक्ट्रम के अंतिम भाग से किसी भी पैमाने पर पहले "" समय से पहले लोडिंग शिफ्टिंग कैसे होती है?
रागी यासर बुरहुम
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.