WKB से WKT जावास्क्रिप्ट फ़ंक्शन


10

बाइनरी डेटा ट्रांसपोर्ट करने में जसन इतना अच्छा नहीं है । लेकिन एचटीएमएल 5 के साथ, एक्सएचआर 2 अब ब्लॉब्स को सफाई से स्थानांतरित करने में सक्षम है । मैं द्विआधारी ज्यामिति को स्थानांतरित करने (बैंडविड्थ को बचाने के लिए) को देख रहा हूं और इसे क्लाइंट पर डिकोड कर रहा हूं।

कोई फायदा नहीं हुआ, मैंने एक जावास्क्रिप्ट-आधारित डब्ल्यूकेबी (अच्छी तरह से ज्ञात बाइनरी) के लिए डब्ल्यूकेटी (प्रसिद्ध पाठ) फ़ंक्शन के लिए वेब को स्कैन किया है। इससे पहले कि मैं पहिये का फिर से आविष्कार करूं - क्या कोई किसी भी ओपन-सोर्स समाधान के बारे में जानता है?


Btw, आप बूँदें लेकिन arraybuffer का उपयोग नहीं करना चाहिए।
निकलैस एवन

जवाबों:


11

यह एक नया और बेहतर समर्थित जेएस डब्ल्यूकेबी पार्सिंग लाइब्रेरी जैसा दिखाई दिया है।

https://github.com/cschwarz/wkx

मैं इसे WKB को सीधे जेएस ऑब्जेक्ट्स में पोस्ट करने से WKB में बदलने के लिए उपयोग करने में सक्षम हूं जो ब्राउज़र में मैप किया जा सकता है। इसके लिए आपको अपने वेबपेज में https://github.com/cschwarz/wkx/blob/master/dist/wkx.js शामिल करने होंगे ।

// Required imports (works in browser, too)
var wkx = require('wkx');
var buffer = require('buffer');

// Sample data to convert
var wkbLonlat = '010100000072675909D36C52C0E151BB43B05E4440';

// Split WKB into array of integers (necessary to turn it into buffer)
var hexAry = wkbLonlat.match(/.{2}/g);
var intAry = [];
for (var i in hexAry) {
  intAry.push(parseInt(hexAry[i], 16));
}

// Generate the buffer
var buf = new buffer.Buffer(intAry);

// Parse buffer into geometric object
var geom = wkx.Geometry.parse(buf);

// Should log '-73.700380647'
console.log(geom.x)

// Should log '40.739754168'
console.log(geom.y)

1
अरे, यहाँ ओपी। 1.5 साल पहले यह पूछा। बहुत बढ़िया!
जॉर्डन आर्सेनो

7

एकमात्र समाधान शुद्ध जावास्क्रिप्ट समाधान जो मैंने अब तक पाया है (और मैंने कोशिश नहीं की) https://github.com/thejefflarson/wkb.js है । यह केवल एक अपूर्ण WKB पार्सर है (यह WKB को js ऑब्जेक्ट में बदल देता है जिसे आप WKT में बदल सकते हैं)

जावास्क्रिप्ट पक्ष पर wkb का एक वैकल्पिक तरीका प्रयोगात्मक twkb (फिलहाल एक मानक नहीं) हो सकता है http://blog.jordogskog.no/2013/05/05/mapservice-from-websocket-with-twkb/ लेकिन इसकी आवश्यकता होती है एक कस्टम PostGIS बिल्ड के साथ खेलने के लिए (इसलिए वास्तव में शुरुआती के लिए नहीं)


3

एक और संभावना हो सकती है कि सादे जियोन्स के बजाय टोपोजोन का उपयोग करें :

TopoJSON , GeoJSON का एक विस्तार है जो टोपोलॉजी को एन्कोड करता है। ज्यामितीय रूप से ज्यामिति का प्रतिनिधित्व करने के बजाय, TopoJSON फाइलों में ज्यामिति को एक साथ साझा किए गए रेखाखंडों से एक साथ सटाया जाता है जिन्हें आर्क्स कहा जाता है । TopoJSON ने अतिरेक को खत्म कर दिया, और जियोजन्स की तुलना में ज्यामिति के अधिक कॉम्पैक्ट निरूपण की पेशकश की; ठेठ TopoJSON फाइलें उनके GeoJSON समकक्षों की तुलना में 80% छोटी हैं।


3

जैसा कि थॉमसजी 77 द्वारा उल्लेख किया गया है, मैं इस "ट्वब्लॉक" प्रारूप में द्विआधारी डेटा के साथ खेल रहा हूं।

आप इसे यहां एक्शन में देख सकते हैं (एक वेबसोकेट उदाहरण)

या यहाँ , एक php कार्यान्वयन।

यदि आप पार्सिंग का अध्ययन करना चाहते हैं तो फ़ाइल को चेक करें twkb.js. मुझे लगता है कि यह twkb_node उदाहरण में थोड़ा साफ है।

में इस ब्लॉग पोस्ट आप PostGIS भाग के सोर्स कोड और प्रारूप के कुछ विवरण के लिए लिंक मिल सकता है।

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

आप निश्चित रूप से wkb को पार्स भी कर सकते हैं लेकिन आप gzipped geojson की तुलना में कोई बैंडविड्थ हासिल नहीं करेंगे। मैं हैरान था कि वह कितना छोटा था। दूसरा लिंक देखें और जियोजोन बनाम ट्वबक्स के आकार की जांच करें। WKB, twkb से 2-6 गुना बड़ा है।


0

यह उत्तर wkb फ़ंक्शन को wkt के बारे में नहीं है।

मैं कहता हूँ कि आप बैंड-बाज़ी बचाने के लिए wkt से wkb में रूपांतरण का उपयोग न करें - सर्वर पर gzipping wkt (या अन्य प्रारूप) आपके पास पर्याप्त से अधिक (और शायद - अधिक कुशल) होना चाहिए और ब्राउज़र अनज़िपिंग कर सकते हैं मक्खी पर और बॉक्स से बाहर।

पर भी देखो ब्राउज़र समर्थन टेबल XHTMLRequest2 के लिए, के रूप में यह कुछ पुराने, अभी तक अभी भी प्रयोग किया ब्राउज़र में समर्थित नहीं है।


0

जियोस्क्रिप्ट में एक जावास्क्रिप्ट एपीआई है जो डब्ल्यूकेटी और डब्ल्यूकेबी को पढ़ता है और लिखता है। तरीके geom.io का हिस्सा हैं


1
केवल जावा निर्भरता वाले शेल वातावरण में FIY (cf pom.xml at github.com/tschaub/geoscript-js ) ब्राउज़र में नहीं
थॉमसजी 7
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.