חישוב מטריצת מסלולים

אפשר לחשב את המרחק ואת משך המסלול של מסלול במספר מקורות ויעדים באמצעות השיטה ComputeRouteMatrix ב-Routes Preferred API. ב-ComputeRouteMatrix יש תמיכה גם בסטרימינג של קריאות gRPC וגם בקריאות HTTP של REST.

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

לשיטה ComputeRouteMatrix יש כמה יתרונות על פני שירות מטריצת המרחק:

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

הפעלה של שיטת ComputeRouteMatrix

לפני שתוכלו להשתמש בשיטה ComputeRouteMatrix בקוד שלכם, עליכם להפעיל אותה. מידע נוסף על הפעלת שיטות של Routes Preferred API זמין במאמר תחילת העבודה.

שימוש בשיטת ComputeRouteMatrix

השיטה ComputeRouteMatrix זמינה דרך נקודת הקצה של Routes Preferred v1.

מידע מפורט יותר זמין במסמכים הבאים:

gRPC: https://developers.google.com/maps/documentation/routes_preferred/reference/rpc/google.maps.routes.v1

REST: https://developers.google.com/maps/documentation/routes_preferred/reference/rest/v1/TopLevel/computeRouteMatrix

בשלבים הכלליים הבאים מוסבר איך להשתמש ב-gRPC כדי לקרוא ל-method ComputeRouteMatrix:

  1. בדקו את אבות-התצורה ההכרחיים מהמאגר של googleapis:

    https://github.com/googleapis/googleapis/tree/master/google/maps/routes

    שימו לב שמערכות מסוימות של build, כמו Go, עשויות לבצע את הפעולה הזו באופן אוטומטי.

  2. באמצעות השפה המועדפת עליכם וקבוצת כלי ה-build, יוצרים את קוד ה-protobuffer הרלוונטי.

  3. יוצרים את הבקשה. עם הבקשה יש לשלוח שני קטעי מטא-נתונים נדרשים:

    • יש להגדיר את X-Goog-Api-Key למפתח ה-API.
    • צריך להגדיר את X-Goog-Fieldmask לרשימה המופרדת בפסיקים של השדות שנדרשים מהתגובה. לדוגמה, X-Goog-FieldMask: originIndex,destinationIndex,duration,distanceMeters,status. אפשר להשתמש בתו הכללי לחיפוש (*) כדי לציין את כל השדות, אבל זה אסור. השתמשו בתו הכללי לחיפוש כדי לבדוק ולהבין את תגובת ה-API, אבל ציינו במפורש את השדות שרוצים במסכת השדות בקוד הייצור.

      מידע נוסף על בניית המחרוזת של אנונימיזציה של שדות זמין בכתובת https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/field_mask.proto. שימו לב שהשבתת שדות שלא צריכים יכולה לקצר את זמן האחזור, כי השדות האלה עשויים לחייב חישוב נוסף. אם תציינו את השדות הדרושים, ושדות חדשים שמחייבים חישוב נוסף יתווספו מאוחר יותר, זמן האחזור יישאר יציב.

  4. שולחים את הבקשה ל-routespreferred.googleapis.com:443.לשם כך, צריך להשתמש בפרוטוקול TLS.

דוגמאות לשימוש בשיטה ComputeRouteMatrix מופיעות בקטע חישוב מטריצת מסלולים (בטא).

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

לא בטוח שהרכיבים שמוחזרים על ידי השידור יוחזרו בכל סדר שהוא. לכן כל רכיב מכיל origin_index וגם destination_index. לנקודות המוצא וליעדים שמצוינות בבקשה, מקור המסלול שווה ל-origins[origin_index] עבור רכיב נתון, והיעד של המסלול שווה ל-destinations[destination_index]. המערכים האלה לא נוספים לאינדקס. חשוב לאחסן את ההזמנות של רשימת המוצא והיעד.

חישוב של דמי האגרה

למידע נוסף על חישוב עמלות האגרה, קראו את המאמר חישוב עמלות האגרה.

לדוגמאות של חישוב עמלות האגרה, ראו חישוב דוגמאות של מטריצת מסלולים.