कोड में बदले गए पॉलीलाइन एल्गोरिदम का फ़ॉर्मैट

पॉलीलाइन एन्कोडिंग, नुकसान पहुंचाने वाला कंप्रेस करने वाला एल्गोरिदम है. इसकी मदद से, एक ही स्ट्रिंग के तौर पर निर्देशांकों की एक सीरीज़ स्टोर की जा सकती है. पॉइंट के निर्देशांकों को साइन की गई वैल्यू का इस्तेमाल करके, कोड में बदला जाता है. अगर आपके पास सिर्फ़ कुछ स्टैटिक पॉइंट हैं, तो आप इंटरैक्टिव पॉलीलाइन एन्कोडिंग सुविधा का इस्तेमाल भी कर सकते हैं.

कोड में बदलने की प्रोसेस की मदद से बाइनरी वैल्यू को कैरेक्टर कोड की सीरीज़ में बदला जा सकता है. यह कोड जाने-पहचाने Base64 कोड में बदलने की स्कीम का इस्तेमाल करके होता है: यह पक्का करने के लिए कि इन वर्णों को सही तरीके से दिखाया जाए, ASCII के फ़ॉर्मैट में बदलने से पहले, 63 (ASCII वर्ण और#39;Merchant#39;) का इस्तेमाल किया जाए. हर बाइट ग्रुप के सबसे छोटे हिस्से की जांच करके, एल्गोरिदम किसी खास पॉइंट के लिए अन्य वर्ण वाले कोड की भी जांच करता है. अगर यह बिट 1 पर सेट है, तो यह पॉइंट अब तक पूरी तरह से नहीं बना है और इसके लिए अन्य डेटा का भी पालन किया जाना चाहिए.

इसके साथ ही, जगह बचाने के लिए पॉइंट सिर्फ़ पिछले पॉइंट से ऑफ़सेट करते हैं (पहले पॉइंट को छोड़कर). सभी पॉइंट, Base64 में साइन किए गए इंटेजर के तौर पर एन्कोड किए जाते हैं, क्योंकि अक्षांश और देशांतर की वैल्यू, साइन की गई वैल्यू होती हैं. पॉलीलाइन में मौजूद एन्कोडिंग फ़ॉर्मैट में अक्षांश और देशांतर की जानकारी दिखाने के लिए, दो निर्देशांक दिखाने की ज़रूरत होती है. +/- 180 डिग्री के ज़्यादा से ज़्यादा देशांतर को दशमलव के बाद पांच अंकों तक तय किया गया है (180.00000 से -180.00000), इसके लिए 32 बिट की हस्ताक्षर की गई बाइनरी पूर्णांक वैल्यू की ज़रूरत होगी.

ध्यान दें कि स्ट्रिंग लिटरल में बैकस्लैश को एक एस्केप कैरेक्टर के तौर पर समझा जाता है. इस यूटिलिटी डोमेन के किसी भी आउटपुट को बैकस्लैश वर्णों को स्ट्रिंग लिटरल में डबल बैकस्लैश में बदल देना चाहिए.

साइन की गई ऐसी वैल्यू को कोड में बदलने का तरीका नीचे बताया गया है.

  1. साइन की गई शुरुआती वैल्यू लें:
    -179.9832104
  2. दशमलव मान को 1e5 से गुणा करें, फिर नतीजे को पूरा करें:
    -17998321
  3. दशमलव मान को बाइनरी में बदलें. 10101
  4. बाइनरी वैल्यू को एक बिट की बाईं ओर शिफ़्ट करें:
    11111101 11011010 10111100 00011110
  5. अगर मूल दशमलव वैल्यू नेगेटिव है, तो कोड में बदलने का यह तरीका बदलें:
    00000010 00100101 01000011 11100001
  6. बाइनरी मान को 5-बिट टुकड़ों में बांटना (दाईं ओर से शुरू करके):
    00001 00010 01010 10000 11111 00001
  7. 5-बिट के हिस्से को उल्टे क्रम में डालें:
    00001 11111 10000 01010 00010 00001
  8. इसके अलावा, अगर बिट के किसी अन्य हिस्से में कोई गड़बड़ी होती है, तो हर वैल्यू के लिए, 0x20 का इस्तेमाल करें:
    100001 111111 110000 101010 100010 000001
  9. हर वैल्यू को दशमलव में बदलें:
    33 63 48 42 34 1
  10. हर वैल्यू के लिए 63 वैल्यू जोड़ें:
    96 126 111 105 97 64
  11. हर वैल्यू को उसके ASCII में बदलें:
    `~oia@

नीचे दी गई टेबल में, कोड में बदले गए पॉइंट के कुछ उदाहरण दिए गए हैं. इसमें, पिछले पॉइंट के ऑफ़सेट की सीरीज़ के तौर पर कोड में बदलने का तरीका दिखाया गया है.

उदाहरण

पॉइंट: (38.5, -120.2), (40.7, -120.95), (43.252, -126.453)

अक्षांश देशांतर E5 में अक्षांश E5 में देशांतर अक्षांश में बदलें देशांतर में बदलाव कोड में बदला गया अक्षांश कोड में बदला गया देशांतर कोड में बदला गया पॉइंट
38.5 -120.2 3850000 -12020000 +3850000 -12020000 _p~iF ~ps|U _p~iF~ps|U
40.7. -120.95 4070000 -12095000 +220000 -75000 _ulL nnqC _ulLnnqC
43.252 126.453 से 4325200 -12645300 +255200 -550300 _mqN vxq`@ _mqNvxq`@

कोड में बदली गई पॉलीलाइन: _p~iF~ps|U_ulLnnqC_mqNvxq`@