Membuat rute yang dipilih

Halaman ini menjelaskan cara membuat rute dan menambahkan atribut kustom menggunakan Roads Selection API di bagian berikut:

Membuat rute

Untuk membuat rute, kirim permintaan POST ke endpoint create.

https://roads.googleapis.com/selection/v1/projects/PROJECT_NUMBER/selectedRoutes?selectedRouteId=SELECTED_ROUTE_ID

Isi permintaan harus berupa objek JSON yang menentukan SelectedRoute resource. Objek ini menentukan informasi berikut:

  • Objek dynamicRoute dengan informasi berikut:
  • selectedRouteId unik. Nilai ini harus memiliki panjang antara 4 hingga 63 karakter dan hanya menggunakan karakter alfanumerik. Jika Anda tidak memberikan ID, sistem akan membuat ID unik untuk rute yang dipilih.

Contoh kode berikut menunjukkan struktur permintaan POST ke endpoint create.

curl -X POST -d '
    {
      "dynamicRoute": {
        "origin": {
          "latitude": ORIGIN_LATITUDE,
          "longitude": ORIGIN_LONGITUDE
        },
        "destination": {
          "latitude": DESTINATION_LATITUDE,
          "longitude": DESTINATION_LONGITUDE
        }
      }
    }' \
  -H 'X-Goog-User-Project: PROJECT_NUMBER' \
  -H 'Content-Type: application/json' \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  "https://roads.googleapis.com/selection/v1/projects/"\
"PROJECT_NUMBER/selectedRoutes?selectedRouteId=SELECTED_ROUTE_ID"

Jika berhasil, API akan menampilkan SelectedRoute resource. Respons mencakup selectedRouteId di kolom name field. Anda dapat menggunakan ini selectedRouteId untuk mengambil atau menghapus resource SelectedRoute.

Contoh kode berikut menunjukkan struktur respons create endpoint yang berhasil.

{
  "name": "projects/PROJECT_NUMBER/selectedRoutes/SELECTED_ROUTE_ID",
  "dynamicRoute": {
    "origin": {
      "latitude": ORIGIN_LATITUDE,
      "longitude": ORIGIN_LONGITUDE
    },
    "destination": {
      "latitude": DESTINATION_LATITUDE,
      "longitude": DESTINATION_LONGITUDE
    }
  },
  "createTime": "CREATE_TIME",
  "state": "STATE_VALIDATING"
}

Membuat rute dengan waypoint perantara

Untuk membuat rute yang melewati titik tertentu antara asal dan tujuan, sertakan intermediates array dalam dynamicRoute objek di isi permintaan Anda. Setiap elemen dalam array intermediates adalah waypoint yang ditentukan oleh latitude dan longitude, dan rute dapat memiliki maksimal 25 waypoint.

Contoh kode berikut menunjukkan cara membuat SelectedRoute dengan waypoint perantara:

curl -X POST -d '
    {
      "dynamicRoute": {
        "origin": {
          "latitude": ORIGIN_LATITUDE,
          "longitude": ORIGIN_LONGITUDE
        },
        "intermediates": [
          {"latitude": INTERMEDIATE_LATITUDE_1, "longitude": INTERMEDIATE_LONGITUDE_1},
          {"latitude": INTERMEDIATE_LATITUDE_2, "longitude": INTERMEDIATE_LONGITUDE_2},
          {"latitude": INTERMEDIATE_LATITUDE_3, "longitude": INTERMEDIATE_LONGITUDE_3}
        ],
        "destination": {
          "latitude": DESTINATION_LATITUDE,
          "longitude": DESTINATION_LONGITUDE
        }
      }
    }' \
  -H 'X-Goog-User-Project: PROJECT_NUMBER' \
  -H 'Content-Type: application/json' \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  "https://roads.googleapis.com/selection/v1/projects/"\
"PROJECT_NUMBER/selectedRoutes?selectedRouteId=SELECTED_ROUTE_ID"

Menggunakan atribut rute kustom

Untuk meningkatkan pengelolaan rute dan analisis data dalam Analisis Pengelolaan Jalan Raya, objek SelectedRoute menyertakan kolom routeAttributes.

Gunakan kolom routeAttributes untuk menentukan properti kustom Anda sendiri untuk setiap rute, dengan setiap atribut adalah pasangan nilai kunci. Anda dapat memberikan maksimal 25 pasangan nilai kunci kustom per rute.

Atribut ini berguna untuk mengidentifikasi rute tertentu atau untuk mengelompokkan rute berdasarkan kriteria yang relevan dengan kebutuhan Anda.

Berikut beberapa contoh atribut rute yang dapat Anda gunakan:

  • "road_classification": "highway"
  • "maintenance_zone": "north_district"
  • "event_id": "marathon_2024"
  • "pavement_type": "asphalt"

Ikuti panduan berikutnya saat menentukan kolom routeAttributes:

  • Kunci tidak boleh diawali dengan awalan goog.
  • Panjang setiap kunci dan setiap nilai tidak boleh melebihi 100 karakter.

Selanjutnya, Anda dapat menggunakan routeAttributes kustom ini dalam Analisis Pengelolaan Jalan Raya dengan cara berikut:

  • Memfilter notifikasi Pub/Sub: Anda dapat menetapkan filter pada langganan Pub/Sub untuk menerima update hanya untuk rute yang cocok atau tidak cocok dengan kunci atribut tertentu dan nilai yang sesuai.
  • Memperbaiki analisis BigQuery: Di tabel BigQuery, Anda dapat menggunakan atribut ini untuk memfilter rute tertentu berdasarkan nilai atribut. Anda juga dapat mengelompokkan rute berdasarkan kunci atribut tertentu untuk analisis data yang lebih ditargetkan.

Contoh kode berikutnya menunjukkan cara membuat SelectedRoute dengan custom routeAttributes.

curl -X POST -d '
    {
    "dynamicRoute": {
      "origin": {
        "latitude": ORIGIN_LATITUDE,
        "longitude": ORIGIN_LONGITUDE
      },
      "destination": {
        "latitude": DESTINATION_LATITUDE,
        "longitude": DESTINATION_LONGITUDE
      }
    },
    "routeAttributes": {
      "ATTRIBUTE_KEY": "ATTRIBUTE_VALUE"
    }
  }' \
  -H 'X-Goog-User-Project: PROJECT_NUMBER' \
  -H 'Content-Type: application/json' \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  "https://roads.googleapis.com/selection/v1/projects/"\
"PROJECT_NUMBER/selectedRoutes?selectedRouteId=SELECTED_ROUTE_ID"

Membuat rute secara massal

Untuk membuat beberapa rute dalam satu permintaan, gunakan batchCreate endpoint. Endpoint ini memungkinkan Anda menentukan hingga 1.000 rute dalam satu panggilan.

Kirim permintaan POST ke endpoint batchCreate:

https://roads.googleapis.com/selection/v1/projects/PROJECT_NUMBER/selectedRoutes:batchCreate

URL ini menggunakan sintaksis gRPC Transcoding.

Isi permintaan harus berupa objek JSON yang berisi array requests. Setiap objek dalam array ini adalah CreateSelectedRouteRequest yang menentukan setiap resource SelectedRoute.

Contoh kode berikut menunjukkan struktur permintaan POST ke endpoint batchCreate:

curl -X POST -d '
    {
      "requests": [
        {
          "selectedRoute": {
            "dynamicRoute": {
              "origin": {
                "latitude": ORIGIN_LATITUDE_1,
                "longitude": ORIGIN_LONGITUDE_1
              },
              "destination": {
                "latitude": DESTINATION_LATITUDE_1,
                "longitude": DESTINATION_LONGITUDE_1
              }
            }
          },
          "selectedRouteId": "route-one"
        },
        {
          "selectedRoute": {
            "dynamicRoute": {
              "origin": {
                "latitude": ORIGIN_LATITUDE_2,
                "longitude": ORIGIN_LONGITUDE_2
              },
              "destination": {
                "latitude": DESTINATION_LATITUDE_2,
                "longitude": DESTINATION_LONGITUDE_2
              }
            }
          },
          "selectedRouteId": "route-two"
        }
      ]
    }' \
  -H 'X-Goog-User-Project: PROJECT_NUMBER' \
  -H 'Content-Type: application/json' \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  "https://roads.googleapis.com/selection/v1/projects/"\
"PROJECT_NUMBER/selectedRoutes:batchCreate"

Jika berhasil, API akan menampilkan respons yang berisi array resource SelectedRoute yang dibuat.

Contoh kode berikut menunjukkan struktur respons endpoint batchCreate:

{
  "selectedRoutes": [
    {
      "name": "projects/PROJECT_NUMBER/selectedRoutes/SELECTED_ROUTE_ID_1",
      "dynamicRoute": {
        "origin": {
          "latitude": ORIGIN_LATITUDE_1,
          "longitude": ORIGIN_LONGITUDE_1
        },
        "destination": {
          "latitude": DESTINATION_LATITUDE_1,
          "longitude": DESTINATION_LONGITUDE_1
        }
      },
      "createTime": "CREATE_TIME_1",
      "state": "STATE_VALIDATING"
    },
    {
      "name": "projects/PROJECT_NUMBER/selectedRoutes/SELECTED_ROUTE_ID_2",
      "dynamicRoute": {
        "origin": {
          "latitude": ORIGIN_LATITUDE_2,
          "longitude": ORIGIN_LONGITUDE_2
        },
        "destination": {
          "latitude": DESTINATION_LATITUDE_2,
          "longitude": DESTINATION_LONGITUDE_2
        }
      },
      "intermediates": [],
      "createTime": "CREATE_TIME_2",
      "state": "STATE_VALIDATING"
    }
  ]
}