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

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

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

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

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

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

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

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

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

ข้อจำกัด

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

  • ความพร้อมให้บริการทางภูมิศาสตร์: การกำหนดเส้นทางสำหรับยานพาหนะขนาดใหญ่พร้อมให้บริการในสหรัฐอเมริกา 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 (ไม่บังคับ) อาร์เรย์ที่ระบุวัสดุที่เป็นอันตรายบนเครื่อง วัตถุระเบิด ก๊าซ ไวไฟ ติดไฟได้ง่าย สารอินทรีย์ สารพิษ สารกัดกร่อน อันตรายจากการสำลัก อันตรายต่อสิ่งแวดล้อม อื่นๆ

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

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

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

ค่าผ่านทาง

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

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

ตัวอย่างคำขอ curl แบบเต็ม

คำขอ 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
      }]
    }
  }
}'

ตีความการตอบกลับของ Compute Routes

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

ฟิลด์คำตอบที่สำคัญ

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

ตรวจสอบว่าเส้นทางมีธงความปลอดภัยหรือไม่

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

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

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

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

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

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

รับเมทริกซ์เส้นทางรถบรรทุก

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

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

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

{
  "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"
}

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

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

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

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