Gerçek zamanlı yol verileri

Gerçek zamanlı yol verileri, seçtiğiniz rotalardaki yol koşulları ve etkinliklerle ilgili güncel bilgiler sunarak dinamik izleme ve hızlı yanıt vermeyi destekler. Bu veriler, BigQuery'de bulunan ve belirli aralıklarla toplanan verilerden farklıdır ve zamanında bilgi gerektiren senaryolar için uygundur.

Bu veriler sürekli olarak aktarılır ve şunları içerir: bir rotadaki seyahat sürelerini gösteren gezi süresi ve yol segmenti yoğunluğunu gösteren hız okuma aralıkları.

Gerçek zamanlı yol verilerine erişmek için sözleşmenizde Gerçek Zamanlı Operasyonlar paketi bulunmalıdır.

Seyahat süresi ve hızlı okuma aralıkları Pub/Sub aboneliği oluşturma

Size özel Google Cloud Pub/Sub konuları sağlanır. Bu konular, oluşturduğunuz tüm rotaların gerçek zamanlı verilerine abone olabileceğiniz yerlerdir.

Aşağıdaki kod örneğinde, ikili kodlama kullanılarak konunun biçimi gösterilmektedir:

projects/maps-platform-roads-management/topics/rmi-roadsinformation-PROJECT_NUMBER

Ayrıca, JSON kodlaması kullanan başka bir konu da sunuyoruz (-json ile sonlandırılır). Anlık veri mesajları almak için size sağlanan Pub/Sub konusuna abone olmanız gerekir. Cloud Pub/Sub konusundan mesajlara nasıl abone olunacağı ve bu mesajların nasıl kullanılacağıyla ilgili hızlı bir genel bakış için Konuya abone olma başlıklı makaleyi inceleyin.

Seyahat Süresi ve Hızlı Okuma Aralığı şeması

Her anlık veri mesajı aşağıdaki gibi verileri içerir:

  • travel_duration ve speed_reading_intervals gibi yol ayrıntıları.
  • selected_route_id ve display_name gibi rota tanımlayıcıları.

Her mesaj, aşağıdaki Protobuf biçimine uygun olarak yayınlanır.

syntax = "proto3";

// Contains the road information like travel duration and speed reading
// intervals for a selected route.
message RoadsInformation {
  message TravelDuration {
    // The duration of travel through the route based on current road
    // conditions.
    float duration_in_seconds = 1;
    // The duration of travel through the route without taking road
    // conditions into consideration.
    float static_duration_in_seconds = 2;
  }
  message Timestamp {
    // Represents seconds of UTC time since Unix epoch
    // 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
    // 9999-12-31T23:59:59Z inclusive.
    int64 seconds = 1;

    // Non-negative fractions of a second at nanosecond resolution. Negative
    // second values with fractions must still have non-negative nanos values
    // that count forward in time. Must be from 0 to 999,999,999
    // inclusive.
    int32 nanos = 2;
  }
  // Represents the latitude and longitude of a coordinate
  // within speed reading interval.
  message LatLng {
    float latitude = 1;
    float longitude = 2;
  }
  message SpeedReadingInterval {
    // The coordinates on the polyline for the speed reading interval
    repeated LatLng interval_coordinates = 1;

    // Describes the categorized current speed of road conditions.
    // Possible values are:
    // - "NORMAL": Road is flowing smoothly, no slowdown is detected.
    // - "SLOW": Slowdown detected, but no congestion formed.
    // - "TRAFFIC_JAM": Congestion detected.
    string speed = 2;
  }
  // Id for selected_route.
  string selected_route_id = 1;
  // User provided name for the route.
  string display_name = 2;
  // Intervals representing the road density across the route.
  repeated SpeedReadingInterval speed_reading_intervals = 3;
  // Travel time information.
  TravelDuration travel_duration = 4;
  // The time the road data was collected.
  Timestamp retrieval_time = 5;
  // Contains a geojson polyline representing the optimal route determined
  // based on user's input waypoints.
  string route_geometry = 6;
}

Pub/Sub kullanarak rota verilerini BigQuery'ye aktarma

Yol verilerini doğrudan bir BigQuery tablosuna aktarmak için Pub/Sub aboneliği yapılandırabilirsiniz. Bu, sağlam bir veri depolama alanı sağlar ve sağlanan rota bilgileri üzerinde güçlü analizler yapmanıza olanak tanır. Bu tür bir abonelik oluşturmadan önce, verileri yazmak için BigQuery projenizde uygun bir veri kümesi ve tablo oluşturmanız gerekir.

BigQuery'ye yazan bir Pub/Sub aboneliği oluşturma hakkında ayrıntılı talimatlar için BigQuery'ye veri akışı başlıklı makaleyi inceleyin.

BigQuery tablo şeması

Pub/Sub konunuza yayınlanan ve BigQuery tablonuza da yazılabilen mesajlar aşağıdaki şemaya uygundur. Uyumluluk için hedef BigQuery tablonuzu oluştururken bu şemayı kullanmanız gerekir.

  {
    "mode": "NULLABLE",
    "name": "selected_route_id",
    "type": "STRING",
    "description": "Id for selected_route."
  },
  {
    "mode": "NULLABLE",
    "name": "display_name",
    "type": "STRING",
    "description": "User provided name for the route."
  },
  {
    "fields": [
      {
        "mode": "NULLABLE",
        "name": "speed",
        "type": "STRING",
        "description": "Describes the categorized current speed of traffic. Possible values are: \"NORMAL\": Traffic is flowing smoothly, no slowdown is detected.  \"SLOW\": Slowdown detected, but no traffic jam formed. \"TRAFFIC_JAM\": Traffic jam detected."
      },
      {
        "fields": [
          {
            "mode": "NULLABLE",
            "name": "latitude",
            "type": "NUMERIC"
          },
          {
            "mode": "NULLABLE",
            "name": "longitude",
            "type": "NUMERIC"
          }
        ],
        "mode": "REPEATED",
        "name": "interval_coordinates",
        "type": "RECORD",
        "description": "The geometry for this interval"
      }
    ],
    "mode": "REPEATED",
    "name": "speed_reading_intervals",
    "type": "RECORD",
    "description": "Intervals representing the traffic density across the route."
  },
  {
    "fields": [
      {
        "mode": "NULLABLE",
        "name": "duration_in_seconds",
        "type": "FLOAT",
        "description": "The duration of travel through the route based on\ncurrent traffic conditions."
      },
      {
        "mode": "NULLABLE",
        "name": "static_duration_in_seconds",
        "type": "FLOAT",
        "description": "The duration of travel through the route without\ntaking traffic conditions into consideration."
      }
    ],
    "mode": "NULLABLE",
    "name": "travel_duration",
    "type": "RECORD",
    "description": "Travel time information."
  },
  {
    "fields": [
      {
        "mode": "NULLABLE",
        "name": "seconds",
        "type": "INTEGER",
        "description": "Represents seconds of UTC time since Unix epoch 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive."
      },
      {
        "mode": "NULLABLE",
        "name": "nanos",
        "type": "INTEGER",
        "description": "Non-negative fractions of a second at nanosecond resolution. Negative second values with fractions must still have non-negative nanos values that count forward in time. Must be from 0 to 999,999,999 inclusive."
      }
    ],
    "mode": "NULLABLE",
    "name": "retrieval_time",
    "type": "RECORD",
    "description": "The time the traffic data was collected."
  },
  {
    "mode": "NULLABLE",
    "name": "route_geometry",
    "type": "STRING",
    "description": "Contains a geojson polyline representing the optimal route determined based on user's input waypoints"
  }