Seçili rotaları oluşturma

Bu sayfada, aşağıdaki bölümlerde Roads Selection API kullanılarak rotaların nasıl oluşturulacağı ve özel özelliklerin nasıl ekleneceği açıklanmaktadır:

Rota oluşturma

Rota oluşturmak için create uç noktasına bir POST isteği gönderin.

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

İstek gövdesi, SelectedRoute kaynağını tanımlayan bir JSON nesnesi olmalıdır. Bu nesne aşağıdaki bilgileri belirtir:

  • Aşağıdaki bilgileri içeren bir dynamicRoute nesnesi:
  • Benzersiz bir selectedRouteId. Bu değer 4-63 karakter olmalıdır ve geçerli karakterler a-z, A-Z, 0-9, - veya _ şeklindedir. Kimlik sağlanmazsa sistem, seçilen rota için benzersiz bir kimlik oluşturur.

Aşağıdaki kod örneğinde, create uç noktasına gönderilen bir POST isteğinin yapısı gösterilmektedir.

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"

İşlem başarılı olursa API, SelectedRoute kaynağını döndürür. Yanıtta name alanında selectedRouteId yer alıyor. SelectedRoute kaynağını almak veya silmek için bu selectedRouteId öğesini kullanabilirsiniz.

Aşağıdaki kod örneğinde, başarılı bir create uç nokta yanıtının yapısı gösterilmektedir.

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

Ara yol noktaları içeren bir rota oluşturma

Başlangıç ve varış noktası arasındaki belirli noktalardan geçen bir rota oluşturmak için istek gövdenizdeki dynamicRoute nesnesine bir intermediates dizisi ekleyin. intermediates dizisindeki her öğe, latitude ve longitude ile tanımlanan bir ara noktadır. Bir rotada en fazla 25 yol noktası olabilir.

Aşağıdaki kod örneğinde, ara referans noktaları içeren bir SelectedRoute nesnesinin nasıl oluşturulacağı gösterilmektedir:

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"

Özel rota özelliklerini kullanma

Yol Yönetimi Analizleri'nde rota yönetiminizi ve veri analizinizi geliştirmek için SelectedRoute nesnesi bir routeAttributes alanı içerir.

Her özelliğin bir anahtar/değer çifti olduğu ayrı rotalar için kendi özel niteliklerinizi tanımlamak üzere routeAttributes alanını kullanın. Rota başına en fazla 25 özel anahtar/değer çifti sağlayabilirsiniz.

Bu özellikler, belirli rotaları tanımlamak veya rotaları ihtiyaçlarınıza uygun ölçütlere göre gruplandırmak için kullanışlıdır.

Kullanabileceğiniz rota özelliklerine dair bazı örnekler aşağıda verilmiştir:

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

routeAttributes alanını tanımlarken aşağıdaki kurallara uyun:

  • Anahtarlar goog önekiyle başlamamalıdır.
  • Her anahtarın ve her değerin uzunluğu 100 karakteri aşmamalıdır.

Daha sonra bu özel routeAttributes, Yol Yönetimi Analizleri'nde aşağıdaki şekillerde kullanabilirsiniz:

  • Pub/Sub bildirimlerini filtreleme: Yalnızca belirli özellik anahtarları ve bunlara karşılık gelen değerlerle eşleşen veya eşleşmeyen rotalarla ilgili güncellemeleri almak için Pub/Sub aboneliklerinizde filtreler ayarlayabilirsiniz.
  • BigQuery analizini hassaslaştırma: BigQuery tablolarınızda, bir özelliğin değerine göre belirli rotaları filtrelemek için bu özellikleri kullanabilirsiniz. Daha hedefli veri analizi için rotaları belirli bir özellik anahtarına göre de gruplandırabilirsiniz.

Aşağıdaki kod örneğinde, özel routeAttributes ile SelectedRoute oluşturma işlemi gösterilmektedir.

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"

Toplu rota oluşturma

Tek bir istekte birden fazla rota oluşturmak için batchCreate uç noktasını kullanın. Bu uç nokta, tek bir çağrıda 1.000'e kadar rota tanımlamanıza olanak tanır.

batchCreate uç noktasına bir POST isteği gönderin:

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

URL, gRPC Kod Dönüştürme söz dizimini kullanır.

İstek gövdesi, requests dizisi içeren bir JSON nesnesi olmalıdır. Bu dizideki her nesne, ayrı bir SelectedRoute kaynağını tanımlayan bir CreateSelectedRouteRequest nesnesidir.

Aşağıdaki kod örneğinde, batchCreate uç noktasına gönderilen bir POST isteğinin yapısı gösterilmektedir:

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"

İşlem başarılı olursa API, oluşturulan SelectedRoute kaynaklarının bir dizisini içeren bir yanıt döndürür.

Aşağıdaki kod örneğinde, batchCreate uç nokta yanıtının yapısı gösterilmektedir:

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