รูปแบบอัลกอริทึม Polyline

การเข้ารหัสแบบโพลีไลน์คืออัลกอริทึมการบีบอัดแบบสูญเสียบางส่วนที่ช่วยให้คุณสามารถจัดเก็บชุดวิดีโอ เป็นสตริงเดียว พิกัดของจุดจะเข้ารหัสโดยใช้ค่าที่ลงนาม หากคุณมีจุดคงที่เพียงไม่กี่จุด คุณสามารถใช้การโต้ตอบ ยูทิลิตีการเข้ารหัส Polyline

กระบวนการเข้ารหัสจะแปลงค่าฐานสองเป็นชุดรหัสอักขระสำหรับ อักขระ ASCII ที่ใช้รูปแบบการเข้ารหัส base64 ที่คุ้นเคย: เพื่อให้แน่ใจว่าการแสดงผลมีความถูกต้อง ของอักขระเหล่านี้ ค่าที่เข้ารหัสจะรวมด้วย 63 (อักขระ ASCII '?') ก่อนที่จะแปลงเป็น ASCII อัลกอริทึมยังตรวจหา รหัสอักขระสำหรับจุดที่กำหนด โดยการตรวจสอบบิตที่สำคัญน้อยที่สุดของแต่ละจุด Byte group; หากตั้งค่าบิตนี้เป็น 1 จุดยังไม่เกิดขึ้นอย่างสมบูรณ์ และ ข้อมูลเพิ่มเติมต้องเป็นไปตาม

นอกจากนี้ เพื่อประหยัดพื้นที่ จุดจะรวมเฉพาะออฟเซ็ตจาก คะแนนก่อนหน้า (ยกเว้นคะแนนแรก) จุดทั้งหมดมีการเข้ารหัส ใน Base64 เป็นจำนวนเต็มแบบมีเครื่องหมาย เนื่องจากละติจูดและลองจิจูดคือค่าที่มีเครื่องหมายกำกับ รูปแบบการเข้ารหัสภายในเส้นประกอบต้องแสดงพิกัด 2 แบบ แสดงละติจูดและลองจิจูดเป็นความแม่นยำที่สมเหตุสมผล กำหนดไว้สูงสุด ลองจิจูดของ +/- 180 องศา ถึงความแม่นยำของทศนิยม 5 ตำแหน่ง (180.00000 ถึง -180.00000) ซึ่งส่งผลให้ต้องใช้ลายเซ็น 32 บิต เลขจำนวนเต็มฐานสอง

โปรดทราบว่าเครื่องหมายแบ็กสแลชจะถือว่าเป็นอักขระหลีก ภายในสัญพจน์ของสตริง เอาต์พุตของยูทิลิตีนี้ควรแปลงแบ็กสแลช อักขระที่จะใช้เป็นเครื่องหมายแบ็กสแลช 2 ชั้นภายในสัญพจน์สตริง

ขั้นตอนในการเข้ารหัสค่าที่รับรองดังกล่าวมีดังนี้

  1. ใช้ค่าเริ่มต้นที่ลงนาม:
    วันที่ -179.9832104
  2. นำค่าทศนิยมมาคูณด้วย 1e5 โดยปัดเศษผลลัพธ์เป็น
    วันที่ -17998321
  3. แปลงค่าฐานสิบเป็นฐานสอง โปรดทราบว่าค่าลบต้องเป็น คำนวณโดยใช้ 2 ส่วนเติมเต็มโดยการกลับค่าฐานสองแล้วบวกหนึ่งลงในผลลัพธ์
    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 การเปลี่ยนแปลงใน Latitude เปลี่ยนลองจิจูด ละติจูดที่เข้ารหัส ลองจิจูดที่เข้ารหัส จุดที่เข้ารหัส
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`@