
במסמך הזה מפורטות שיטות מומלצות להגדרת SelectedRoutes באמצעות Road Selection API למוצר תובנות לניהול נתוני דרכים (RMI). הגדרת SelectedRoutes בצורה נכונה היא השלב הכי חשוב כדי להבטיח שתקבלו נתוני תנועה מדויקים ומהימנים לגבי קטעי הדרך שאתם רוצים לעקוב אחריהם. סקירה טכנית מלאה זמינה במאמרי העזרה הרשמיים של Road Selection API.
עקרונות מרכזיים ליצירת נתיב נבחר
כשמגדירים SelectedRoute לצורך מעקב, חשוב לפעול לפי העקרונות הבאים כדי להבטיח את הדיוק של SelectedRoute ואת תוקף הנתונים.
1. ספציפיות למיקום בצד הדרך
האובייקט SelectedRoute צריך לייצג כיוון נסיעה יחיד. במקרה של כבישים מהירים מחולקים או כבישים עם שטח הפרדה, צריך ליצור אובייקטים נפרדים של SelectedRoute לכל כיוון (למשל, אחד לכיוון צפון ואחד לכיוון דרום). חשוב לוודא שנקודת המוצא, היעד וכל נקודות הביניים ממוקמות בצד הנכון של הכביש בהתאם לכיוון שרוצים לעקוב אחריו. אם מוצא או יעד ממוקמים בצד הלא נכון של כביש מהיר מחולק, יכול להיות שיוצגו מסלולים לא רצויים או שגיאות בנתונים.
2. טיפול בכבישים מרובי מפלסים ובגשרים
בכבישים מורכבים עם כמה מפלסים (לדוגמה, כבישים מהירים מוערמים, גשרים עיליים, מחלפים מורכבים), יכול להיות שזוג יחיד של קווי רוחב וקו אורך יהיה דו-משמעי, ועלול לגרום ל'הצמדה' של המסלול למפלס הלא נכון. כדי למנוע זאת, מומלץ להשתמש בנקודות ציון ביניים כדי להנחות את המסלול אל קטע הכביש והרמה הנכונים. הוספה של נקודות ציון אחת או יותר מבטיחה שהמסלול יתאים בדיוק למה שרציתם.
3. הגדרת נקודות התחלה וסיום תקינות
המסלול שנבחר לא יכול להתחיל או להסתיים בתוך מנהרה. נקודות המוצא והיעד של SelectedRoute צריכות להיות במיקומים בחוץ. יש תמיכה ב-SelectedRoutes שעוברים דרך מנהרות, אבל פלח המעקב עצמו לא יכול להתחיל או להסתיים בתוך מנהרה.

4. הגדרת אורכים מתאימים של מסלולים
האובייקט SelectedRoute הוא גמיש ואפשר להגדיר אותו בסדרי גודל שונים:
- סרטון Shorts: מסלול נבחר יכול להיות קצר כמו בלוק עירוני אחד, וזה שימושי לניתוח מפורט באזורים עירוניים.
- מסלולים אחידים: אפשר להגדיר SelectedRoutes במרחקים שווים (לדוגמה, כל 0.5 מייל) כדי לקבל דיווח עקבי.
- מסלולים ארוכים: SelectedRoute יכול לכסות קטע ארוך ורציף של כביש. האפשרות הזו מתאימה במיוחד למעקב אחרי מסדרונות שלמים של כבישים מהירים או כבישים ראשיים בין צמתים משמעותיים.
בוחרים את משך הזמן של SelectedRoute שמתאים הכי טוב לצרכים שלכם מבחינת מעקב וניתוח.
5. זיהוי קטעי כביש עם הפרדה אנכית (מנהרות, גשרים עיליים, גשרים וכו')
כשמגדירים קטעי כביש באמצעות קואורדינטות של קו אורך וקו רוחב, חשוב לקחת בחשבון תרחישים שבהם כמה קטעי כביש תופסים את אותו מרחב גיאוגרפי דו-ממדי, אבל מופרדים אנכית. המצב הזה קורה בדרך כלל במבנים כמו מנהרות, גשרים עיליים, גשרים ומעברים עיליים. הסתמכות רק על קווי רוחב ואורך בלי להתחשב בגובה יכולה להוביל לחוסר דיוק בבחירת המסלול ובניווט. לדוגמה, לכביש שעובר דרך מנהרה יהיו אותם קווי רוחב וקו אורך של נקודת מבט מלמעלה כמו לקטע הכביש שמעל הפלטפורמה. באופן דומה, גשר או מעבר עילי ישתפו קואורדינטות אופקיות עם הכביש שמתחתיו. אם לא מבחינים בין הפלחים האלה שמסודרים אחד מעל השני, יכול להיות שמערכת הניתוב תפנה את התנועה בטעות לכביש ברמה נמוכה יותר, כשבעצם הכוונה הייתה לכביש ברמה גבוהה יותר, או להיפך.
בדוגמה הזו, בבוסטון במיקום 42.362347, -71.055935 יש מנהרה ענקית בשם Big Dig.

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


6.לא ניתן לעקוב אחרי כל הכבישים
יכול להיות שלא תמיד אפשר לעקוב אחרי SelectedRoute
- מחוץ ל "סמכות השיפוט" הרשומה
- הערך 'שימושיות הכביש' נמוך
- כתוצאה מכך, יכול להיות שהיכולת לעקוב אחרי המרות תשתנה עם הזמן
האימות מתבצע באופן אסינכרוני ⇒ צריך לבדוק אם כל הנתיבים שנבחרו ועברו רישום עברו את האימות
שיטות מומלצות להגדרת SelectedRoute
כדי לשפר את האיכות של ההגדרות של SelectedRoute ואת הנתונים שמתקבלים, כדאי לפעול לפי השיטות המומלצות הבאות.
שימוש בנקודות ציון ביניים
גם אם מדובר בנתיבים קצרים ופשוטים לכאורה, מומלץ מאוד לכלול לפחות ציון דרך אחד.
- למה?
- העברת מסלולים: מוודאת שהמסלול שנבחר (SelectedRoute) הוא המסלול הספציפי שרוצים, במיוחד אם יש כבישים חלופיים בין נקודת המוצא ליעד.
- הפעלת לולאות: נדרש כדי לייצג בצורה נכונה לולאות או מסלולים נבחרים של "הלוך חזור" שבהם נקודת המוצא והיעד זהות.
- שיפור הזיהוי של מעקפים: ככל שמספקים יותר נקודות ציון, קל יותר לזהות ולסמן נקודות נתונים שבהן התנועה חרגה מהנתיב הנבחר המיועד.
- איך?
- אפשר להשתמש בפונקציות גיאו-מרחביות כדי למצוא באופן פרוגרמטי נקודת אמצע לאורך SelectedRoute ידוע.
- דוגמה (BigQuery): שימוש בפונקציה ST_LINEINTERPOLATEPOINT.
- דוגמה (JavaScript): שימוש בפונקציה along מספריית Turf.js.
התאמת נתיבים ממערכות חיצוניות
אם מייבאים נתוני מסלולים ממערכת GIS חיצונית או ממערכת שמבוססת על רשת כבישים אחרת, יכול להיות שהקואורדינטות לא יתאימו באופן מושלם לרשת הכבישים של Google. התוצאה יכולה להיות 'מסלולים לא מכוונים'.
- איך פותרים את הבעיה:
- בדיקה של הצד של הכביש: קודם צריך לוודא שהמקור ונקודת ההתחלה נמצאים בצד הנכון של הכביש.
- הצמדה לכביש: משתמשים בשיטה matchPath של Roads API v2 כדי להצמיד את נתוני המסלול הקיימים לרשת הכבישים של Google.
- התאמה ידנית ושרטוט מחדש: אפשר להתאים ידנית את נקודות הציון בכלי כדי שיתאימו לכבישים של Google. לאחר מכן, משתמשים בשיטה computeRoute של Routes API (עם הגדרת התנועה ל'לא מודעת') כדי ליצור קו פוליגון נקי שעוקב אחרי הרשת של Google.
- מעקב: כמוצא אחרון, אפשר להשתמש בכלי GIS כדי להוסיף את הנתונים שלכם על רשת הכבישים של Google ולעקוב אחרי המסלול באופן ידני כדי ליצור נקודות ציון חדשות.
ניקוי נתונים ואימות
הנתונים שמתקבלים ב-BigQuery משקפים את התנאים בעולם האמיתי. כדאי להחיל שלבי ניקוי כדי לסנן נתונים שלא מייצגים את המסלול המרכזי שנבחר.
התמודדות עם שינויים במסלול
ממשק Routes API, שמפעיל את RMI, תמיד ינסה להחזיר מסלול תקין. אם המסלול המיועד שלכם, SelectedRoute, חסום או עמוס מאוד, יכול להיות שה-API יחזיר מסלול עם עיקוף שחורג מנקודות הביניים שהגדרתם. לדוגמה, אם SelectedRoute מציין מסלול מ-A ל-B ל-C, ייתכן שמעקף יגרום להחזרת מסלול שעובר ישירות מ-A ל-C.
לדוגמה, אם נשרטט את המסלול הזה: https://www.google.com/maps/dir/OR-213,+Oregon+City,+OR+97045/Caufield,+Oregon+City,+OR+97045/OR-213,+Oregon+City,+OR+97045/OR-213,+Oregon+City,+OR+97045/643+OR-213,+Oregon+City,+OR+97045/OR-213,+Oregon+City,+OR+97045/Oregon+City,+OR+97045/Washington+Dr,+Oregon+City,+OR+97045/@45.3754391,-122.5822044,15.2z/data=!4m50!4m49!1m5!1m1!1s0x549570b9f466b4a1:0x6390dd57f70701fd!2m2!1d-122.5787!2d45.3231933!1m5!1m1!1s0x549570ca19ded1b3:0xd28eaf8da19c4509!2m2!1d-122.5756369!2d45.3303343!1m5!1m1!1s0x549576c6b4992137:0xb6ed1e1848a8e2a5!2m2!1d-122.5841289!2d45.3640919!1m5!1m1!1s0x549576c0c48ee6f1:0x86497e036c5dd444!2m2!1d-122.5850086!2d45.3662193!1m5!1m1!1s0x549576bfbca6fa93:0xf6b573219354d3f!2m2!1d-122.5851045!2d45.3696112!1m5!1m1!1s0x549576be3782e5db:0xd0ea93d91e8a0792!2m2!1d-122.5857424!2d45.371047!1m5!1m1!1s0x5495769635216053:0x150f4a4f811b98d6!2m2!1d-122.5870571!2d45.3752342!1m5!1m1!1s0x54957697b928b269:0x2b114f280e6ab0f0!2m2!1d-122.5875209!2d45.3760557!3e0?entry=ttu&g_ep=EgoyMDI1MTAxMy4wIKXMDSoASAFQAw%3D%3D אפשר לראות שיש פה עיקוף גדול, כנראה בגלל תנאי הדרך, אבל אם לא מתקנים את זה בקפידה, זה עלול להוביל לאיסוף נתונים שגוי.

ב-RMI, הרשומות האלה של נתיבים חלופיים פחות שימושיות כי הן לא מייצגות את הנתיב הספציפי שנבחר שאתם עוקבים אחריו.
- פעולה: אל תמחקו את השורות האלה. כדאי לסמן אותם לצורך ניתוח כדי להבין מתי ולמה מתרחשים עיכובים.
- איך מסמנים שינויי מסלול: יש שתי שיטות עיקריות לזיהוי שינויי מסלול באופן אוטומטי:
- אי התאמה של ציוני דרך: יש לבדוק אם הגיאומטריה של המסלול שהוחזרה לא כללה את כל ציוני הדרך הביניים שצוינו.
- הבדל במרחק: בודקים אם המרחק
distanceבמסלול שהוחזר שונה באופן משמעותי מהמרחק הצפויSelectedRoute. סף נפוץ הוא הפרש של 5%.
- דוגמה לסימון של מעקפים ב-BigQuery: אפשר להצטרף לטבלה
SelectedRoutes(שכוללת את המרחק הצפוי) עם הטבלהRouteResponsesולהשתמש בהצהרתCASEכדי ליצור סימון.
טיפול בגיאומטריות מסוג MultiLineString
יש מגבלה על סוג הנתונים GEOGRAPHY ב-BigQuery: אי אפשר לאחסן בו LineString יחיד שחופף לעצמו (למשל, פניית פרסה מעוקלת, מסלול שחוזר על עצמו בגלל עיקוף).
- תיאור הבעיה: כשהבעיה הזו מתרחשת, BigQuery שומר את הגיאומטריה כ-
MultiLineString, וחלקים מהמסלול עשויים להיעלם. - פעולה: מומלץ לסנן את הרשומות האלה מהניתוח הראשי.
- מסנן BigQuery: שימוש ב-
WHERE ST_GEOMETRYTYPE(route_geometry) != "ST_MultiLineString"
- מסנן BigQuery: שימוש ב-
- פתרון:
- אם החפיפה נגרמת בגלל שינוי מסלול, אפשר לסנן את הרשומה כמו שמתואר למעלה.
- אם ה-SelectedRoute המיועד מכיל חפיפה, צריך להגדיר אותו מחדש על ידי פיצול ה-SelectedRoute לשני אובייקטים נפרדים או יותר של
SelectedRoute.
שינוי אזור הזמן
כל נתוני חותמות הזמן בייצוא של RMI ל-BigQuery מסופקים לפי אזור זמן אוניברסלי מתואם (UTC). כדי לדווח או לנתח נתונים באזור זמן מקומי, צריך להמיר את חותמות הזמן האלה.
- דוגמה להמרת זמן ב-BigQuery: אפשר להשתמש בפונקציות
DATETIMEו-TIMESTAMPכדי להמיר חותמת זמן ב-UTC לאזור זמן מקומי ספציפי, כמו 'America/Los_Angeles'.
סיכום
השיטות המומלצות שמפורטות במדריך הזה יעזרו לכם לוודא שההגדרות של SelectedRoute מדויקות ואמינות, וכך תקבלו נתוני תנועה מהימנים ופרקטיים מהמוצר תובנות לניהול נתוני דרכים. הגדרת מסלולים בצורה נכונה, טיפול בגיאומטריות מורכבות של כבישים ואימות הנתונים שמתקבלים הם שלבים חשובים למינוף הפוטנציאל המלא של RMI לצרכים של ניהול כבישים.
מחברים
סרטאק גנגופאדיי: Google Maps Devrel נאויה מוריטני: Google Maps Devrel