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

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

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

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

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

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

  1. हस्ताक्षर किया गया शुरुआती मान लें:
    -179.9832104
  2. दशमलव मान लें और उसे 1e5 से गुणा करें और नतीजे को पूर्णांक में बदलें:
    -17998321
  3. दशमलव वैल्यू को बाइनरी में बदलें. ध्यान दें कि ऋणात्मक मान इसकी का इस्तेमाल करके गणना की जाती है दो का पूरक होने के लिए, बाइनरी वैल्यू को उलटा जाता है और नतीजे में एक जोड़ा जाता है:
    00000001 00010010 10100001 11110001
    11111110 11101101 01011110 00001110
    11111110 11101101 01011110 00001111
    
  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`@