داده های جاده ای در زمان واقعی

داده‌های جاده‌ای در لحظه، به‌روزرسانی‌های فعلی در مورد شرایط جاده و رویدادهای مسیرهای انتخابی شما را ارائه می‌دهند و از نظارت پویا و پاسخ سریع پشتیبانی می‌کنند. این داده‌ها با داده‌های جمع‌آوری‌شده دوره‌ای موجود در 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;
}

ارسال داده‌های مسیر به BigQuery با استفاده از Pub/Sub

شما می‌توانید اشتراک 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"
  }