تنسيق خوارزمية الخطوط المتعددة المشفّرة

ترميز متعدد الخطوط هو خوارزمية ضغط مع فقدان البيانات تسمح لك بتخزين سلسلة من الإحداثيات كسلسلة واحدة. يتم ترميز إحداثيات النقاط باستخدام قيم بعلامة. إذا كان لديك بضع نقاط ثابتة فقط، يمكنك أيضًا استخدام واجهة برمجة التطبيقات التفاعلية أداة ترميز متعدد الخطوط.

تقوم عملية الترميز بتحويل قيمة ثنائية إلى سلسلة من رموز الأحرف أحرف ASCII التي تستخدم نظام ترميز 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 تغيير في خط العرض تغيير خط الطول خط العرض المشفر خط الطول المشفر نقطة تم ترميزها
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`@