สร้างเส้นทางและเวลาถึงโดยประมาณสำหรับยานพาหนะขนาดใหญ่

คู่มือนี้เหมาะสำหรับ: อ่านคู่มือนี้หากคุณเป็นนักพัฒนาแอปที่สร้างบริการสำหรับการวางแผนและดำเนินการเดินทางโดยใช้รถบรรทุกหรือยานพาหนะขนาดใหญ่อื่นๆ กรณีการใช้งานที่เกี่ยวข้อง ได้แก่ การคำนวณเวลาและระยะทางในการเดินทาง การคำนวณเวลาถึงโดยประมาณ หรือการสร้างเส้นทางที่จะใช้โดยแอปพลิเคชันการนำทาง

สิ่งที่คู่มือนี้ครอบคลุม: คู่มือนี้ครอบคลุมวิธีใช้ Routes API กับการกำหนดเส้นทางสำหรับยานพาหนะขนาดใหญ่เพื่อขอเส้นทาง ระยะทางในการเดินทาง เวลาในการเดินทางที่คาดการณ์ไว้ และเวลาถึงโดยประมาณที่คำนึงถึงแอตทริบิวต์เฉพาะของยานพาหนะขนาดใหญ่ เช่น รถบรรทุกเพื่อการพาณิชย์หรือรถโดยสาร

ดูข้อมูลเกี่ยวกับวิธีทำการคำนวณระดับกองยานพาหนะสำหรับยานพาหนะขนาดใหญ่ โดยใช้ Route Optimization API ได้ที่เอกสารประกอบการกำหนดเส้นทางสำหรับรถบรรทุกของ Route Optimization

สิ่งที่คุณจะได้เรียนรู้

คุณจะได้เรียนรู้วิธีทำสิ่งต่อไปนี้

  • สร้างคำขอการกำหนดเส้นทางที่ถูกต้อง
  • ระบุข้อมูลยานพาหนะสำหรับยานพาหนะในโลกจริงโดยใช้ขนาด น้ำหนัก และลักษณะอื่นๆ
  • ตีความการตอบกลับ รวมถึงโทเค็นเส้นทางและแฟล็กความปลอดภัยในการเดินทาง

ข้อกำหนดเบื้องต้น

  1. คุณต้องสร้างโปรเจ็กต์ Google Cloud และเปิดใช้ Routes API
  2. โปรเจ็กต์ของคุณต้องมีการจัดสรรสำหรับการกำหนดเส้นทางสำหรับยานพาหนะขนาดใหญ่ การกำหนดเส้นทางสำหรับยานพาหนะขนาดใหญ่ มีให้บริการสำหรับลูกค้าบางกลุ่มเท่านั้น โปรดติดต่อเราเพื่อ ขอสิทธิ์เข้าถึง

ข้อจำกัด

ก่อนเริ่มต้น คุณต้องทราบข้อจำกัดและข้อกำหนดต่อไปนี้

  • ความพร้อมให้บริการตามภูมิศาสตร์: การกำหนดเส้นทางสำหรับยานพาหนะขนาดใหญ่พร้อมให้บริการใน สหรัฐอเมริกา 48 รัฐที่อยู่ติดกัน (พร้อมให้บริการโดยทั่วไป) และ ญี่ปุ่น (ทดลองใช้) โดยไม่พร้อมให้บริการในอะแลสกา ฮาวาย หรือดินแดนของสหรัฐฯ
  • คำแนะนำและความปลอดภัยสำหรับผู้ขับขี่ ผู้ขับขี่ต้องไม่พึ่งพาเส้นทางที่ API นี้แสดงผลเพียงอย่างเดียวว่าปลอดภัยหรือถูกกฎหมาย ไม่มีการรับประกันว่าเส้นทางจะเหมาะสมกับยานพาหนะ และการขับตามเส้นทางอาจทำให้ผู้ขับขี่เผชิญกับอันตราย เช่น สะพานต่ำหรือถนนที่ห้ามยานพาหนะขนาดใหญ่สัญจร
  • เส้นทางที่ได้จากการพยายามอย่างเต็มที่ ในบางกรณี API อาจไม่พบเส้นทางที่เป็นไปตามข้อจำกัดในการเดินทางอย่างครบถ้วน แต่จะแสดงผลเส้นทาง "ที่ได้จากการพยายามอย่างเต็มที่" ซึ่งอาจยังคงผ่านพื้นที่ที่ถูกจำกัด การตอบกลับของ Routes API จะทำเครื่องหมายเส้นทางเหล่านี้อย่างชัดเจนในช่อง routeRestrictionsPartiallyIgnored ในกรณีเหล่านี้ ให้วางแผนเส้นทางอย่างรอบคอบ โดยใช้แหล่งข้อมูลอื่นๆ จะดีที่สุด อย่าใช้เส้นทางที่ทำเครื่องหมายเป็นแหล่งข้อมูลที่เชื่อถือได้เพียงแหล่งเดียวสำหรับการวางแผนหรือการนำทาง
  • ฟีเจอร์ที่ไม่รองรับ: การกำหนดเส้นทางสำหรับยานพาหนะขนาดใหญ่ไม่รองรับ สิ่งต่อไปนี้:
    • ราคาค่าผ่านทางสำหรับรถบรรทุก
    • ขีดจำกัดความเร็ว
    • การกำหนดเส้นทางสำหรับวัสดุอันตรายที่มีกัมมันตรังสี
  • ขีดจำกัดการใช้งาน: คำขอทั้งหมดอยู่ภายใต้ขีดจำกัดคำค้นหาต่อวินาที (QPS) มาตรฐาน

สร้างคำขอเส้นทางสำหรับรถบรรทุก

หากต้องการรับเส้นทางสำหรับรถบรรทุก ให้ส่งคำขอ HTTPS ไปยังปลายทางของ Routes API พร้อมพารามิเตอร์ที่เฉพาะเจาะจงซึ่งอธิบายยานพาหนะ แนวคิดในส่วนนี้ใช้ได้กับทั้งคำขอเส้นทางเดียวและคำขอเมทริกซ์เส้นทาง

ปลายทาง

คุณสามารถใช้ปลายทาง 2 รายการสำหรับการกำหนดเส้นทางสำหรับรถบรรทุก

  • computeRoutes: คำนวณเส้นทางเดียวระหว่างต้นทางหนึ่งแห่งกับปลายทางหนึ่งแห่ง
  • computeRouteMatrix: คำนวณระยะทางและระยะเวลาสำหรับเมทริกซ์ของต้นทางและปลายทาง แต่ไม่แสดงผลเส้นโพลีไลน์ของเส้นทาง

พารามิเตอร์คำขอหลัก

ในเนื้อหาคำขอ คุณต้องใส่พารามิเตอร์ต่อไปนี้เพื่อเปิดใช้การกำหนดเส้นทางสำหรับรถบรรทุก

  • travelMode: ตั้งค่านี้เป็น TRUCK
  • routingPreference: ตั้งค่านี้เป็น TRAFFIC_AWARE_OPTIMAL
  • routeModifiers: ออบเจ็กต์นี้มีออบเจ็กต์ vehicleInfo ซึ่งคุณกำหนดแอตทริบิวต์ของยานพาหนะ ออบเจ็กต์ vehicleInfo มีรายละเอียดอธิบายไว้ด้านล่าง

ระบุแอตทริบิวต์ของยานพาหนะ

หากต้องการส่งคำขอ คุณต้องระบุเนื้อหาคำขอที่มีออบเจ็กต์ vehicleInfo ซึ่งอธิบายยานพาหนะ ให้คิดว่าข้อมูลนี้เป็นข้อกำหนดที่ตรงกับรายละเอียดทางกายภาพของยานพาหนะในโลกจริง บริการต้องใช้รายละเอียดเหล่านี้เพื่อแสดงผลเส้นทางที่คำนึงถึงข้อจำกัดของถนนตามแอตทริบิวต์ของยานพาหนะ

การวัดยานพาหนะ

ระบุน้ำหนักของยานพาหนะเป็นกิโลกรัมและขนาดของยานพาหนะเป็นมิลลิเมตรตามที่ระบุโดยชื่อช่อง ตัวอย่างเช่น ความสูงทั้งหมดควรระบุเป็นมิลลิเมตร (totalHeightMm) เนื่องจากขนาดของรถบรรทุกมักแสดงเป็นฟุตหรือเมตร จึงอาจต้องมีการแปลงหน่วย

การแปลงจากหน่วยอิมพีเรียลเป็นหน่วยเมตริก

เมื่อแปลงจากหน่วยอิมพีเรียล ให้พิจารณาขนาดเฉพาะของยานพาหนะควบคู่ไปกับขีดจำกัดขนาดมาตรฐานของถนนและทางลอดเสมอ ซึ่งอาจมีความสำคัญเป็นพิเศษกับค่าเศษส่วน การปัดเศษค่าเศษส่วนขึ้นอาจทำให้การกำหนดเส้นทางสำหรับยานพาหนะมีความเข้มงวดมากเกินไป ทั้งนี้ขึ้นอยู่กับขนาดของยานพาหนะจริง

ตัวอย่างเช่น

  • ความกว้าง: รถพ่วงจำนวนมากในสหรัฐอเมริกามีความกว้าง 8 ฟุต 6 นิ้ว ซึ่งแปลงเป็น 2,590.8 มม. การปัดเศษขึ้นเป็น 2,591 มม. จะบ่งบอกว่ายานพาหนะมีความกว้างมากกว่า 8 ฟุต 6 นิ้ว ซึ่งจะจัดประเภทเป็นยานพาหนะขนาดใหญ่บนถนนในสหรัฐอเมริกา จากนั้นจะส่งผลให้มีการคำนวณเส้นทางตามข้อจำกัดที่แตกต่างออกไปอย่างมีนัยสำคัญจากที่ตั้งใจไว้
  • ความสูง: เส้นทางที่ลอดใต้สะพานสูง 11 ฟุตจะไม่เหมาะสำหรับรถบรรทุกกึ่งพ่วงทั่วไปที่มีความสูง 13.5 ฟุต อย่างไรก็ตาม รถบรรทุกขนาดเล็กที่มีความสูงประมาณ 10 ฟุตจะสามารถลอดทางลอดได้ ดังนั้น การระบุแอตทริบิวต์ของยานพาหนะอย่างถูกต้องจึงมีความสำคัญอย่างยิ่ง

แผนภาพแสดงขนาดของรถบรรทุกเทียบกับขนาดของทางลอด

ต่อไปนี้คือข้อมูลโค้ดที่แสดงออบเจ็กต์ vehicleInfo ตัวอย่าง

"vehicleInfo": {
      "totalAxleCount": 5,
      "totalHeightMm": 4114,
      "totalLengthMm": 21945,
      "totalWidthMm": 2590,
      "totalWeightKg": 32658,
      "trailerInfo": [{
        "lengthMm": 16154
      }

ช่องออบเจ็กต์ vehicleInfo

ตารางต่อไปนี้แสดงคำจำกัดความของยานพาหนะและน้ำหนักบรรทุกทั้งหมดที่คุณส่งได้พร้อมกับคำขอ

ฟิลด์ คำอธิบาย หมายเหตุ / ค่า
totalHeightMm ความสูงสูงสุดของยานพาหนะ หน่วยเป็นมิลลิเมตร ปัดเศษลง ดูรายละเอียดเพิ่มเติมเกี่ยวกับการปัดเศษได้ที่การแปลงจากหน่วยอิมพีเรียลเป็นหน่วยเมตริก
totalWidthMm ความกว้างสูงสุดของยานพาหนะ หน่วยเป็นมิลลิเมตร ปัดเศษลง
totalLengthMm ความยาวรวมของยานพาหนะและรถพ่วง หน่วยเป็นมิลลิเมตร ปัดเศษลง
totalWeightKg น้ำหนักรวมของยานพาหนะ (รวมรถพ่วงและน้ำหนักบรรทุก) หน่วยเป็นกิโลกรัม ปัดเศษลง
totalAxleCount จำนวนเพลารวมของยานพาหนะและรถพ่วง ค่าที่แน่นอน
trailerInfo (ไม่บังคับ) อาร์เรย์ของออบเจ็กต์ โดยมี 1 ออบเจ็กต์สำหรับรถพ่วงแต่ละคัน ละเว้นสำหรับยานพาหนะที่ไม่มีรถพ่วง เช่น รถบรรทุกแบบตู้
hazardousGoodsTypes (ไม่บังคับ) อาร์เรย์ที่ระบุวัสดุอันตรายใดๆ ที่บรรทุกอยู่ EXPLOSIVES, GASES, FLAMMABLE, COMBUSTIBLE, ORGANIC, POISON, CORROSIVE, ASPIRATION_HAZARD, ENVIRONMENTAL_HAZARD, OTHER

ใช้ฟิลด์มาสก์

เพื่อให้ได้ผลลัพธ์ที่ดีที่สุด ให้ใส่ส่วนหัว X-Goog-FieldMask ในคำขอเพื่อระบุฟิลด์ที่คุณต้องการในการตอบกลับอย่างชัดเจน ฟิลด์มาสก์ช่วยลดเวลาในการตอบสนองและช่วยให้คุณได้รับฟิลด์คำแนะนำที่สำคัญ คุณควรใส่ routes.travelAdvisory.routeRestrictionsPartiallyIgnored ในฟิลด์มาสก์เสมอ เนื่องจากฟิลด์นี้จะระบุว่าเส้นทางมีข้อจำกัดอย่างน้อย 1 ข้อที่ใช้กับยานพาหนะของคุณหรือไม่

ดูรายละเอียดเพิ่มเติมเกี่ยวกับฟิลด์มาสก์กับ Routes API ได้ที่ บทความ นี้

ค่าผ่านทาง

หากต้องการใช้เส้นทางที่ไม่เสียค่าผ่านทาง ให้ระบุ avoidTolls ในพร็อพเพอร์ตี้ routeModifiers ของคำขอ ดูข้อมูลเพิ่มเติมเกี่ยวกับตัวแก้ไขเส้นทางได้ที่ ดู ระบุฟีเจอร์เส้นทางที่จะหลีกเลี่ยง

การระบุ avoidTolls ไม่ได้รับประกันว่าการตอบกลับจะมีเส้นทางที่ไม่เสียค่าผ่านทาง ในบางกรณี คุณต้องใช้ทางพิเศษเพื่อเดินทางระหว่างต้นทางและปลายทาง หากคุณใส่ routes.warnings ในฟิลด์มาสก์ของคำขอ Routes API ระบบจะใส่คำอธิบายประกอบเส้นทางที่มีถนนที่มีค่าผ่านทางภายในฟิลด์นี้

ลักษณะการทำงานอื่นๆ ของการกำหนดเส้นทาง

เมื่อตั้งค่า travelMode เป็น TRUCK API จะเพิ่มประสิทธิภาพเส้นทางโดยอัตโนมัติเพื่อให้ยานพาหนะขนาดใหญ่สามารถเคลื่อนที่ได้ เส้นทางที่สร้างขึ้นจะหลีกเลี่ยงการกลับรถและเลือกใช้ทางหลวงระหว่างรัฐและทางหลวงมากกว่าถนนขนาดเล็ก คุณไม่จำเป็นต้องตั้งค่าพารามิเตอร์หรือตัวแก้ไขเพิ่มเติมเพื่อเปิดใช้ลักษณะการทำงานเหล่านี้

คำนวณเส้นทางเดียวด้วย computeRoutes

ใช้ปลายทาง computeRoutes เพื่อคำนวณเส้นทางเฉพาะสำหรับรถบรรทุกระหว่างต้นทางหนึ่งแห่งกับปลายทางหนึ่งแห่ง

ตัวอย่างคำขอ computeRoutes

นี่คือคำขอ curl ที่สมบูรณ์สำหรับรถบรรทุกกึ่งพ่วงทั่วไป ตัวอย่างนี้มีปลายทาง ส่วนหัว และเนื้อหาคำขอ

curl --location 'https://routes.googleapis.com/directions/v2:computeRoutes' \
--header 'Content-Type: application/json' \
--header 'X-Goog-Api-Key: YOUR_API_KEY' \
--header 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.routeToken,routes.travelAdvisory.routeRestrictionsPartiallyIgnored' \
--data '{
 "origin": {
    "location": {
      "latLng": {
        "latitude": 40.883274,
        "longitude": -74.704574
      }
    }
  },
  "destination": {
    "location": {
      "latLng": {
        "latitude": 40.991920,
        "longitude": -75.183371
      }
    }
  },
  "travelMode": "TRUCK",
  "routingPreference": "TRAFFIC_AWARE_OPTIMAL",
  "routeModifiers": {
    "vehicleInfo": {
      "totalAxleCount": 5,
      "totalHeightMm": 4114,
      "totalLengthMm": 21945,
      "totalWidthMm": 2590,
      "totalWeightKg": 32658,
      "trailerInfo": [{
        "lengthMm": 16154
      }]
    }
  }
}'

ตัวอย่างการตอบกลับ computeRoutes

นี่คือตัวอย่างการตอบกลับสำหรับคำขอก่อนหน้าซึ่งแสดงไว้ด้านบน โปรดทราบว่าในออบเจ็กต์ travelAdvisory จะไม่มีแฟล็ก routeRestrictionsPartiallyIgnored ซึ่งบ่งบอกว่าเส้นทางไม่ได้ทำเครื่องหมาย และเชื่อว่าจะเป็นไปตามแอตทริบิวต์ของยานพาหนะอย่างครบถ้วน

{
  "routes": [
    {
      "distanceMeters": 3426,
      "duration": "312s",
      "travelAdvisory": {},
      "routeToken": "CogCCogBChA7b39q54cKGCys_VXaDADjEhgszp8YhZFw0xvzm7SygpvCeIvJ7V0r6XIaJZ6BxNkMa_8HhhqlAci7hYMXi6UCpPgDW-yoAf8gzgHiEYyJAnoiAQU6AQFCB27cD9UCwwdKCMX2Ij7RpxY_eAGqARdUNENZWllLS0tJRGZ2T01QMVptSjRBaxAEGmIKYBIWCAAQAxAGEBMQEhgCQgQaAggFSgIIASIbChdUNENZWmVTc0o0RGZ2T01QMVptSjRBa3ABKAQyJ3RydWNraW5nOjpzZW1pLXRyYWlsZXItdHJ1Y2staGVhdnktc29mdCIVAOzExFsGGGfjVIIY7GXjYbPyONS8EiQiInRydWNraW5nOjpzZW1pLXRyYWlsZXItdHJ1Y2staGVhdnk"
    }
  ]
}

ตีความการตอบกลับ computeRoutes

คำขอที่สำเร็จไปยังปลายทาง computeRoutes จะแสดงผลออบเจ็กต์การตอบกลับ JSON ที่มีเส้นทางที่เป็นไปได้ตั้งแต่ 1 เส้นทางขึ้นไป

ฟิลด์การตอบกลับหลัก
  • รูปทรงเรขาคณิตของเส้นทางที่เข้ารหัส: routes.polyline ซึ่งสามารถใช้เพื่อแสดงเส้นทางบนแผนที่
  • ระยะเวลาการเดินทางโดยประมาณ: routes.duration (เป็นวินาที) ระยะเวลาการเดินทางของการกำหนดเส้นทางสำหรับยานพาหนะขนาดใหญ่ใช้โมเดลใหม่ที่ฝึกโดยใช้ความเร็วในการเดินทางที่สังเกตได้ของรถบรรทุกจริงบนเครือข่ายถนน นอกจากนี้ยังใช้เพื่อคำนวณเวลาถึงโดยประมาณได้ด้วยการเพิ่มระยะเวลาการเดินทางโดยประมาณลงในเวลาออกเดินทางที่คาดไว้
  • ระยะทางรวมของเส้นทาง: routes.distanceMeters (เป็นเมตร)
  • โทเค็นเส้นทาง: routes.routeToken. นี่คือโทเค็นทึบแสงที่แสดงเส้นทางที่คำนวณได้อย่างแม่นยำ คุณส่งโทเค็นนี้ไปยัง Navigation SDK เพื่อให้แน่ใจว่าผู้ขับขี่จะเห็นเส้นทางเฉพาะสำหรับรถบรรทุกเส้นทางเดียวกัน ดูรายละเอียดได้ที่คู่มือ Navigation SDK สำหรับ Android หรือ iOS
ตรวจสอบแฟล็กความปลอดภัยของเส้นทาง

เมื่อได้รับการตอบกลับ สิ่งแรกที่คุณควรทำคือตรวจสอบแฟล็กความปลอดภัยของเส้นทาง หากเส้นทางที่ระบุมีข้อจำกัดอย่างน้อย 1 ข้อที่ทำให้เส้นทางไม่เหมาะกับยานพาหนะ คุณจะเห็นฟิลด์ travelAdvisory.routeRestrictionsPartiallyIgnored ตั้งค่าเป็น true

ฟิลด์นี้ทำหน้าที่เป็นแฟล็กเพื่อตอบคำถามว่า "เส้นทางนี้มีการทำเครื่องหมายว่าอาจมีปัญหาหรือไม่"

  • false(หรือละเว้นจากการตอบกลับ): เส้นทางไม่ได้ทำเครื่องหมาย ระบบ พบเส้นทางที่เชื่อว่าเป็นไปตาม พารามิเตอร์ที่คุณระบุในคำขอ อย่างครบถ้วน
  • true: เส้นทางมีการทำเครื่องหมาย ระบบไม่พบเส้นทางที่เป็นไปตามข้อกำหนดอย่างครบถ้วนและได้แสดงผลเส้นทาง "ที่ได้จากการพยายามอย่างเต็มที่" ซึ่งอาจไม่ปลอดภัยหรือถูกกฎหมาย คุณต้องใช้เส้นทางนี้ด้วยความระมัดระวังอย่างยิ่ง

คำนวณเมทริกซ์ของเส้นทาง (computeRouteMatrix)

ใช้ปลายทาง computeRouteMatrix เพื่อเปรียบเทียบเวลาและระยะทางในการเดินทางระหว่างต้นทางและปลายทางหลายแห่งได้อย่างมีประสิทธิภาพ ตัวอย่างเช่น คุณอาจใช้ปลายทางนี้เพื่อค้นหารถบรรทุกที่อยู่ใกล้สถานที่รับสินค้าใหม่ที่สุด เมื่อระบุต้นทางของยานพาหนะที่ต้องการใช้เพื่อวัตถุประสงค์ของคุณแล้ว คุณอาจส่งคำขอ computeRoutes เพื่อรับรายละเอียดเส้นทางและโทเค็นเส้นทางสำหรับยานพาหนะที่เสนอ

หากต้องการใช้ computeRouteMatrix ให้ระบุ vehicleInfo ภายในออบเจ็กต์ origin แต่ละรายการแทนที่จะระบุที่รูทของคำขอ

ตัวอย่างคำขอ computeRouteMatrix

{
  "origins": [
    {
      "waypoint": { "location": { "latLng": { "latitude": 32.77, "longitude": -96.85 }}},
      "routeModifiers": { "vehicleInfo": { /* ...vehicle attributes... */ } }
    },
    {
      "waypoint": { "location": { "latLng": { "latitude": 33.61, "longitude": -112.11 }}},
      "routeModifiers": { "vehicleInfo": { /* ...vehicle attributes... */ } }
    }
  ],
  "destinations": [
    { "waypoint": { "location": { "latLng": { "latitude": 35.02, "longitude": -106.64 }}}},
    { "waypoint": { "location": { "latLng": { "latitude": 29.77, "longitude": -95.40 }}}}
  ],
  "travelMode": "TRUCK",
  "routingPreference": "TRAFFIC_AWARE_OPTIMAL"
}

ตัวอย่างการตอบกลับ computeRouteMatrix

การตอบกลับจะเป็นอาร์เรย์ ซึ่งแต่ละออบเจ็กต์จะมีระยะเวลาและ distanceMeters สำหรับคู่ต้นทาง-ปลายทาง 1 คู่

[
  {
    "originIndex": 0,
    "destinationIndex": 1,
    "status": {},
    "distanceMeters": 392372,
    "duration": "14037s",
    "condition": "ROUTE_EXISTS"
  },
  { ... }
]

ขั้นตอนถัดไป