دادههای بیدرنگ جاده، بهروزرسانیهای فعلی را در مورد شرایط جاده و رویدادهای مسیرهای انتخابی شما فراهم میکند، و از نظارت پویا و پاسخ سریع پشتیبانی میکند. این داده ها با داده های جمع آوری شده دوره ای موجود در BigQuery متفاوت است و برای سناریوهایی که نیاز به اطلاعات به موقع دارند مناسب است.
این داده ها به طور مداوم جریان می یابد و شامل: مدت زمان سفر است که زمان سفر در یک مسیر را نشان می دهد و فواصل سرعت خواندن که تراکم بخش جاده را نشان می دهد.
برای دسترسی به دادههای بیدرنگ جاده، قرارداد شما باید شامل بسته عملیات بلادرنگ باشد.
یک اشتراک Pub/Sub ابری ایجاد کنید
هنگامی که پروژه شما برای دریافت دادههای بیدرنگ تنظیم شد، یک موضوع اختصاصی Google Cloud Pub/Sub برای پروژه شما در دسترس قرار میگیرد. این موضوع Pub/Sub جایی است که میتوانید دادههای بلادرنگ برای همه مسیرهای ایجاد شده خود را پیدا کنید.
نمونه کد زیر فرمت URL موضوع را نشان می دهد.
projects/maps-platform-roads-management/topics/rmi-roadsinformation-PROJECT_NUMBER
شما باید در موضوع Pub/Sub که در اختیار شما قرار داده شده است مشترک شوید تا پیام های داده بلادرنگ را دریافت کنید. برای یک مرور کلی درباره نحوه اشتراک و مصرف پیامها از یک موضوع Cloud Pub/Sub به اشتراک در یک موضوع مراجعه کنید.
طرحواره پیام داده ترافیک زمان واقعی
هر پیام داده بلادرنگ شامل داده هایی مانند:
- جزئیات جاده مانند
travel_duration
وspeed_reading_intervals
. - شناسههای مسیر مانند
selected_route_id
وdisplay_name
.
هر پیام با رعایت فرمت Protobuf زیر منتشر می شود.
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 دادههای مسیر را به BigQuery ارسال کنید
میتوانید اشتراک Pub/Sub را برای پخش مستقیم دادههای جاده در جدول BigQuery پیکربندی کنید. این امکان ذخیره سازی قوی داده ها را فراهم می کند و تجزیه و تحلیل قدرتمندی را در اطلاعات مسیر ارائه شده امکان پذیر می کند. قبل از تنظیم این نوع اشتراک، باید یک مجموعه داده و جدول مناسب در پروژه BigQuery خود ایجاد کنید تا داده ها را در آن بنویسید.
برای دستورالعملهای دقیق درباره نحوه ایجاد اشتراک Pub/Sub که در BigQuery مینویسد، به پخش جریانی دادهها در BigQuery مراجعه کنید.
طرحواره جدول BigQuery
پیامهای منتشر شده در موضوع Pub/Sub، که میتوانند در جدول BigQuery شما نیز نوشته شوند، با طرح زیر مطابقت دارند. هنگام ایجاد جدول BigQuery هدف خود باید از این طرح برای اطمینان از سازگاری استفاده کنید.
{ "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 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": "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" }