قالب الگوریتم چند خط کدگذاری شده

رمزگذاری Polyline یک الگوریتم فشرده سازی با اتلاف است که به شما امکان می دهد مجموعه ای از مختصات را به عنوان یک رشته واحد ذخیره کنید. مختصات نقطه ای با استفاده از مقادیر علامت گذاری شده کدگذاری می شوند. اگر فقط چند نقطه ثابت دارید، ممکن است بخواهید از ابزار کدگذاری چند خطی تعاملی نیز استفاده کنید.

فرآیند رمزگذاری یک مقدار باینری را به یک سری از کدهای کاراکتر برای کاراکترهای اسکی با استفاده از طرح رمزگذاری آشنا base64 تبدیل می کند: برای اطمینان از نمایش مناسب این کاراکترها، مقادیر کدگذاری شده با 63 (کاراکتر ASCII '?') جمع می شوند قبل از تبدیل آنها به ASCII. . این الگوریتم همچنین کدهای کاراکتر اضافی را برای یک نقطه مشخص با بررسی کمترین بیت مهم هر گروه بایت بررسی می کند. اگر این بیت روی 1 تنظیم شود، نقطه هنوز به طور کامل تشکیل نشده است و باید داده های اضافی دنبال شود.

علاوه بر این، برای حفظ فضا، نقاط فقط شامل افست نقطه قبلی (البته به جز نقطه اول) می شود. همه نقاط در Base64 به عنوان اعداد صحیح امضا شده کدگذاری می شوند، زیرا طول و عرض جغرافیایی مقادیر علامت دار هستند. قالب رمزگذاری در یک چند خط باید دو مختصات را نشان دهد که طول و عرض جغرافیایی را با دقت معقول نشان می دهد. با توجه به حداکثر طول جغرافیایی 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 تغییر در Latitude تغییر در طول جغرافیایی 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`@