פורמט אלגוריתם מצולע מקודד

הקידוד של פוליגון הוא אלגוריתם דחיסת נתונים אבוד שמאפשר לאחסן סדרה של קואורדינטות כמחרוזת אחת. הקואורדינטות של הנקודה מקודדות באמצעות ערכים חתומים. אם יש לכם רק כמה נקודות סטטיות, מומלץ להשתמש גם בכלי התחזוקה האינטראקטיבי

תהליך הקידוד ממיר ערך בינארי לסדרה של קודי תווים לפי סכמת הקידוד base64 המוכרת: כדי להבטיח הצגה תקינה של התווים האלה, ערכי הקידוד מסוכמים ב-63 (תו ASCII ו-#39;?') לפני המרתם ל-ASCII. האלגוריתם בודק גם אם יש קודי תווים נוספים שמשויכים לנקודה נתונה, וצריך לבדוק את החלק הכי פחות משמעותי של כל קבוצת בייט. אם הביט הזה מוגדר ל-1, הנקודה עדיין לא נוצרה במלואה וחובה לעקוב אחר נתונים נוספים.

בנוסף, כדי לחסוך מקום, הנקודות כוללות רק את הפרש הנקודות מהנקודה הקודמת (למעט הנקודה הראשונה). כל הנקודות מקודדות ב-Base64 כמספרים שלמים חתומים, כי קווי האורך וקווי הרוחב הם ערכים חתומים. הפורמט של הקידוד בפוליגון צריך לייצג שתי קואורדינטות שמייצגות את קווי האורך והרוחב ברמת דיוק סבירה. לאור קו אורך מקסימלי של //- 180 מעלות לדיוק של 5 ספרות אחרי הנקודה העשרונית ((180.00000 עד -180.00000), התוצאה היא צורך במספר שלם בינארי עם חתימה של 32 סיביות.

שימו לב שהקו הנטוי מתפרש בתו בריחה (escape) בתוך ליטרלים של מחרוזות. כל פלט של כלי השירות הזה צריך להמיר תווים של לוכסן הפוך לקו נטוי לאחור בתוך ליטרים.

השלבים לקידוד ערך חתום כזה מפורטים בהמשך.

  1. מזינים את הערך החתום הראשוני:
    -179.9832104
  2. יש לעגל את הערך העשרוני ולהכפיל אותו ב-1e5, כדי לעגל את התוצאה:
    -17998321
  3. ממירים את הערך העשרוני לבינארי. לתשומת ליבכם, יש לחשב ערך שלילי באמצעות
  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`@

אלא אם צוין אחרת, התוכן של דף זה הוא ברישיון Creative Commons Attribution 4.0 ודוגמאות הקוד הן ברישיון Apache 2.0. לפרטים, ניתן לעיין במדיניות האתר Google Developers‏.‏ Java הוא סימן מסחרי רשום של חברת Oracle ו/או של השותפים העצמאיים שלה.

עדכון אחרון: 2023-06-06 (שעון UTC).