Anlık yol verileri, seçtiğiniz rotalardaki yol koşulları ve etkinliklerle ilgili güncel bilgiler sağlar. Bu sayede dinamik izleme ve hızlı yanıt verme olanağı sunar. Bu veriler, BigQuery'de bulunan ve düzenli olarak toplanan verilerden farklıdır. Ayrıca, zamanında bilgi gerektiren senaryolar için uygundur.
Bu veriler sürekli olarak yayınlanır ve bir rotadaki seyahat sürelerini gösteren yolculuk süresini ve rotadaki trafik yoğunluğunu gösteren hız okuma aralıklarını içerir.
Anlık yol verilerine erişmek için sözleşmenizde Anlık 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 anlık 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ğı hakkında hızlı bir genel bakış için Konuya abone olma başlıklı makaleye bakın.
Seyahat Süresi ve Hızlı Okuma Aralığı şeması
Her gerçek zamanlı veri mesajı aşağıdaki gibi verileri içerir:
duration_in_seconds,static_duration_in_seconds,speed_reading_offsets(ofset tabanlı hız okuma aralıkları) veretrieval_timestampgibi yol ayrıntıları.selected_route_idvedisplay_namegibi 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 { // Legacy message. May stop being populated on or after November 9, 2026. // Use top-level duration_in_seconds and static_duration_in_seconds instead. 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; } // Legacy message representing the latitude and longitude of a coordinate // within a coordinate-based speed reading interval. message LatLng { float latitude = 1; float longitude = 2; } // Legacy coordinate-based speed reading interval message. May stop being // populated on or after November 9, 2026. Use SpeedReadingOffset instead. 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": Traffic jam detected. In this legacy field, heavy // traffic jams (dark red) are also reported as "TRAFFIC_JAM"; // "TRAFFIC_JAM_HEAVY" is never used. string speed = 2; } // Offset-based speed reading interval along the route. message SpeedReadingOffset { // The distance offset from the start of the route in meters for the start // of the interval (inclusive). int32 start_offset = 1; // The distance offset from the start of the route in meters for the end of // the interval (exclusive; equals the start_offset of the subsequent // interval). int32 end_offset = 2; // Describes the categorized current speed of traffic, aligned with the // colors in the Google Maps traffic layer. Possible values are: // - "NORMAL" (green): Traffic is flowing smoothly, no slowdown is detected. // - "SLOW" (yellow): Slowdown detected, but no traffic jam formed. // - "TRAFFIC_JAM" (red): Traffic jam detected. // - "TRAFFIC_JAM_HEAVY" (dark red): Heavy traffic jam detected (available // as of October 8, 2026). string speed = 3; } // Id for selected_route. string selected_route_id = 1; // User provided name for the route. string display_name = 2; // Legacy coordinate-based speed reading intervals. May stop being populated // on or after November 9, 2026. Use speed_reading_offsets instead. repeated SpeedReadingInterval speed_reading_intervals = 3; // Legacy travel time information. May stop being populated on or after // November 9, 2026. Use duration_in_seconds and static_duration_in_seconds // instead. TravelDuration travel_duration = 4; // Legacy timestamp when the road data was collected. May stop being populated // on or after November 9, 2026. Use retrieval_timestamp instead. Timestamp retrieval_time = 5; // Contains a geojson polyline representing the optimal route determined // based on user's input waypoints. string route_geometry = 6; // Road segment place IDs along the route. They follow topological order // and are always connected. repeated string road_segment_ids = 7; // Offset-based speed reading intervals representing traffic density across // the route; each interval is demarcated by the distance offset from the // start of the route. repeated SpeedReadingOffset speed_reading_offsets = 8; // The duration of travel through the route based on current traffic // conditions. float duration_in_seconds = 9; // The duration of travel through the route without taking traffic // conditions into consideration. float static_duration_in_seconds = 10; // The time the traffic data was collected, as an RFC 3339 UTC timestamp // string (for example, "2026-10-08T15:04:05+00:00"). string retrieval_timestamp = 11; }
Ofset tabanlı hızlı okuma aralıkları ve alan taşıma
8 Ekim 2026'dan itibaren, hızla okuma aralıkları ofset tabanlı speed_reading_offsets alanında sağlanır. Bu alanda her aralık, rotanın başlangıcından itibaren metre cinsinden start_offset (dahil) ve end_offset (hariç) ile sınırlandırılır ve dördüncü hız kategorisi TRAFFIC_JAM_HEAVY'nü içerir. Hız kategorileri ve aralık biçimleri hakkında ayrıntılı bilgi için Hızlı okuma aralıkları başlıklı makaleyi inceleyin.
Aşağıdaki tabloda, her eski Pub/Sub alanı (9 Kasım 2026'dan itibaren doldurulması durdurulabilir) yerine kullanılacak alanla eşlenmektedir:
| Eski alan | Yer tutucu alan | Notlar |
|---|---|---|
speed_reading_intervals |
speed_reading_offsets |
Çoklu çizgi koordinatları yerine metre ofsetlerini (start_offset, end_offset) kullanır ve TRAFFIC_JAM_HEAVY hız kategorisini ekler. |
travel_duration.duration_in_seconds |
duration_in_seconds |
Üst düzey float alanına düzleştirilir. |
travel_duration.static_duration_in_seconds |
static_duration_in_seconds |
Üst düzey float alanına düzleştirilir. |
retrieval_time |
retrieval_timestamp |
BigQuery aboneliklerinin otomatik olarak TIMESTAMP biçimine dönüştürdüğü bir RFC 3339 dizesi olarak biçimlendirilir. |
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 sayede, veriler güvenli bir şekilde depolanabilir ve sağlanan rota bilgileri üzerinde güçlü analizler yapılabilir. Bu tür bir aboneliği ayarlamadan ö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.
JSON kodlu konuda BigQuery aboneliğini oluşturun. Aboneliği yapılandırırken Tablo şemasını kullan'ı seçin ve Bilinmeyen alanları bırak'ı etkinleştirin. Böylece yeni alanlar eklendiğinde alım işlem hattınız sorunsuz şekilde çalışmaya devam eder. speed_reading_offsets gibi yeni alanları depolamak için tablonuza ilgili sütunları ekleyin.
BigQuery tablo şeması
Pub/Sub konunuza yayınlanan ve BigQuery tablonuza da yazılabilen mesajlar aşağıdaki şemaya uygundur. Uyumluluğu sağlamak 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 (groups red and dark red segments; does not include \"TRAFFIC_JAM_HEAVY\")." }, { "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": "Legacy coordinate-based speed reading intervals. May stop being populated on or after November 9, 2026. Use speed_reading_offsets instead." }, { "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": "Legacy travel time information. May stop being populated on or after November 9, 2026. Use top-level duration_in_seconds and static_duration_in_seconds instead." }, { "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": "Legacy timestamp when the traffic data was collected. May stop being populated on or after November 9, 2026. Use retrieval_timestamp instead." }, { "mode": "NULLABLE", "name": "route_geometry", "type": "STRING", "description": "Contains a geojson polyline representing the optimal route determined based on user's input waypoints" }, { "mode": "REPEATED", "name": "road_segment_ids", "type": "STRING", "description": "Road segment place IDs along the route. They follow topological order and are always connected" }, { "fields": [ { "mode": "NULLABLE", "name": "start_offset", "type": "INTEGER", "description": "The distance offset from the start of the route in meters for the start of the interval (inclusive)." }, { "mode": "NULLABLE", "name": "end_offset", "type": "INTEGER", "description": "The distance offset from the start of the route in meters for the end of the interval (exclusive; equals the start_offset of the subsequent interval)." }, { "mode": "NULLABLE", "name": "speed", "type": "STRING", "description": "Describes the categorized current speed of traffic, aligned with the colors in the Google Maps traffic layer. Possible values are: \"NORMAL\" (green): Traffic is flowing smoothly, no slowdown is detected. \"SLOW\" (yellow): Slowdown detected, but no traffic jam formed. \"TRAFFIC_JAM\" (red): Traffic jam detected. \"TRAFFIC_JAM_HEAVY\" (dark red): Heavy traffic jam detected (available as of October 8, 2026)." } ], "mode": "REPEATED", "name": "speed_reading_offsets", "type": "RECORD", "description": "Offset-based speed reading intervals representing traffic density across the route; each interval is demarcated by the distance offset from the start of the route." }, { "mode": "NULLABLE", "name": "duration_in_seconds", "type": "FLOAT", "description": "The duration of travel through the route based on current traffic conditions." }, { "mode": "NULLABLE", "name": "static_duration_in_seconds", "type": "FLOAT", "description": "The duration of travel through the route without taking traffic conditions into consideration." }, { "mode": "NULLABLE", "name": "retrieval_timestamp", "type": "TIMESTAMP", "description": "The time the traffic data was collected." } ]