制限速度

Roads API は、特定の道路セグメントに掲示されている制限速度を返します。制限速度が変動する道路セグメントの場合は、そのセグメントのデフォルトの制限速度が返されます。

Roads API によって返される制限速度データの正確性は保証されません。提供される制限速度データはリアルタイムのものではなく、推定値、不正確、不完全、または古くなっている可能性があります。制限速度データを利用できるリージョンについては、通信範囲の詳細をご覧ください。

リクエスト

制限速度のリクエストは、HTTPS 経由で送信する必要があります。リクエストは次の形式で指定します。

https://roads.googleapis.com/v1/speedLimits?parameters&key=YOUR_API_KEY

パラメータの使用方法

必須パラメータ

  • path パラメータまたは placeId パラメータ。
    • path - パスを表す最大 100 個の緯度と経度のペアのリスト。緯度と経度の値はカンマで区切る必要があります。緯度と経度のペアは、パイプ文字「|」で区切る必要があります。path パラメータを指定すると、snapToRoads リクエストと同様に、API はまず車両が走行する可能性が高い道路に経路をスナップしてから、該当する道路区分の速度制限を決定します。API にパスをスナップさせないようにするには、以下で説明するように placeId パラメータを渡す必要があります。次の例は、3 つの緯度と経度のペアを含む path パラメータを示しています(path=60.170880,24.942795|60.170879,24.942796|60.170877,24.942796)。
    • placeId - 1 つ以上の道路区分を表すプレイス ID。各プレイス ID が、異なるタイプの場所ではなく、道路セグメントを参照していることを確認してください。リクエストごとに最大 100 個のプレイス ID を渡すことができます。API は、指定されたプレイス ID でロード スナップを実行しません。レスポンスには、リクエストに含まれる各プレイス ID の速度制限が含まれます。snapToRoads または nearestRoads リクエストを送信して関連するプレイス ID を確認し、それを speedLimits リクエストへの入力として指定できます。次の例は、2 つのプレイス ID を持つ placeId パラメータを示しています。placeId=ChIJX12duJAwGQ0Ra0d4Oi4jOGE&placeId=ChIJLQcticc0GQ0RoiNZJVa5GxU
  • key - アプリケーションの API キー。アプリケーションは、Roads API にリクエストを送信するたびに、各リクエストに API キーを含めることによって、自身を識別する必要があります。キーの取得方法を確認する。

オプション パラメータ

  • units - 制限速度をキロメートルまたはマイル/時で返すかどうか。KPH または MPH に設定できます。デフォルトは KPH です。

レスポンス

speedLimits レスポンスには次の要素が含まれる場合があります。

  • speedLimits - 道路のメタデータの配列。各要素は次のフィールドで構成されます。
    • placeId - 場所の一意の識別子。Roads API から返されるプレイス ID はすべて、道路区間に対応します。
    • speedLimit - その道路セグメントの制限速度。
    • units - KPH または MPH を返します。
  • snappedPoints - スナップされたポイントの配列。この配列は、リクエストに path パラメータが含まれていた場合にのみ存在します。各ポイントは次のフィールドで構成されます。
    • location - latitudelongitude の値が含まれます。
    • originalIndex - 元のリクエストの対応する値を示す整数。リクエスト内の各値は、レスポンス内のスナップされた値にマッピングされる必要があります。これらの値は 0 からインデックス付けされるため、originalIndex4 のポイントは、path パラメータに渡される 5 番目の緯度/経度のスナップ値になります。
    • placeId - 場所の一意の識別子。Roads API から返されるプレイス ID はすべて、道路区間に対応します。placeId を速度制限リクエストで渡すと、その道路セグメントの制限速度を特定できます。
  • warning_message - ユーザーに表示される警告を含む文字列。

パスを使用したリクエストの例

このリクエストでは、ポルトガルのリスボンにあるヴァスコ ダ ガマ橋を渡る経路の中で、指定された緯度と経度のペアに最も近い各道路セグメントの速度制限を取得します。

リクエスト

https://roads.googleapis.com/v1/speedLimits?path=38.75807927603043,-9.03741754643809|38.6896537,-9.1770515|41.1399289,-8.6094075&key=YOUR_API_KEY

対応

{
  speedLimits:
  [
    {
      placeId: "ChIJX12duJAwGQ0Ra0d4Oi4jOGE",
      speedLimit: 105,
      units: "KPH"
    },
    {
      placeId: "ChIJLQcticc0GQ0RoiNZJVa5GxU",
      speedLimit: 70,
      units: "KPH"
    },
    {
      placeId: "ChIJJ4vQRudkJA0RpednU70A-5M",
      speedLimit: 55,
      units: "KPH"
    }
  ],
  snappedPoints:
  [
    {
      location:
      {
        latitude: 38.75807927603043,
        longitude: -9.037417546438084
      },
      originalIndex: 0,
      placeId: "ChIJX12duJAwGQ0Ra0d4Oi4jOGE"
    },
    {
      location:
      {
        latitude: 38.689653701836896,
        longitude: -9.177051486847693
      },
      originalIndex: 1,
      placeId: "ChIJLQcticc0GQ0RoiNZJVa5GxU"
    },
    {
      location:
      {
        latitude: 41.13993011767777,
        longitude: -8.609400794783655
      },
      originalIndex: 2,
      placeId: "ChIJJ4vQRudkJA0RpednU70A-5M"
    }
  ],
  warningMessage: "Input path is too sparse. You should provide a path where consecutive points are closer to each other. Refer to the 'path' parameter in Google Roads API documentation."
}

上記のレスポンスに、ポイントのスパース性に関する警告メッセージがあります。任意の地点にある最寄りの道路セグメントの速度制限をリクエストする場合は、代わりに nearestRoads エンドポイントから取得したプレイス ID で speedLimits を呼び出す必要があります。

プレイス ID を使用したリクエストの例

緯度と経度のペアを使用する代わりに、道路セグメントのプレイス ID を渡すことができます。道路区間のプレイス ID は、snapToRoads リクエストまたは nearestRoads リクエストを使用して取得することをおすすめします。プレイス ID を渡すと、API は各プレイス ID で表される道路セグメントの速度制限を返します。この API は、指定されたプレイス ID にスナップを適用しません。

次の例では、ポルトガルのリスボンにあるヴァスコ ダ ガマ橋を渡る道路区間の一部について、制限速度をリクエストします。

リクエスト

https://roads.googleapis.com/v1/speedLimits?placeId=ChIJX12duJAwGQ0Ra0d4Oi4jOGE&placeId=ChIJLQcticc0GQ0RoiNZJVa5GxU&placeId=ChIJJ4vQRudkJA0RpednU70A-5M&key=YOUR_API_KEY

対応

{
  "speedLimits": [
    {
      placeId: "ChIJX12duJAwGQ0Ra0d4Oi4jOGE",
      speedLimit: 105,
      units: "KPH"
    },
    {
      placeId: "ChIJLQcticc0GQ0RoiNZJVa5GxU",
      speedLimit: 70,
      units: "KPH"
    },
    {
      placeId: "ChIJJ4vQRudkJA0RpednU70A-5M",
      speedLimit: 55,
      units: "KPH"
    }
  ]
}

使用に関する推奨事項

Speed Limit サービスの呼び出し量を最小限に抑えるため、アセットのロケーションを 5 ~ 15 分間隔でサンプリングすることをおすすめします(正確な値はアセットの移動速度によって異なります)。アセットが静止している場合、ロケーション サンプルは 1 つで十分です(複数回呼び出す必要はありません)。

全体的なレイテンシを最小限に抑えるため、モバイル アセットの場所を受け取るたびに API を呼び出すのではなく、ある程度データが蓄積されたら制限速度サービスを呼び出すことをおすすめします。

制限速度の一部またはすべてに達していないのはなぜですか?

speedLimits がない最も一般的な原因は、道路セグメントではない場所の制限速度がリクエストされていることです。

上の例では、ヴァスコ ダ ガマ橋をコンセプトの説明に使用しています。この橋は、テージョ川に架かる E90 道路に対応しています。ブリッジ自体のプレイス ID は ChIJUzt97ZEwGQ0RM1JzQfqoDtU です。上記のレスポンスの最初の道路セグメントは E90 道路の一部で、プレイス ID は ChiIJX12duJAwGQ0Ra0d4Oi4jOGE です。このリクエストの例では、道路のプレイス ID を橋のプレイス ID に置き換えると、橋のプレイス ID が個々の道路区分を参照していないため、レスポンスでは speedLimits 配列の速度制限は 2 つのみになります。また、道路区分用のプレイス ID がない場合、レスポンスに速度制限は含まれません。

プレイス ID を使用して制限速度をリクエストする場合は、各プレイス ID が、異なる種類の場所ではなく、道路区間を参照していることを確認してください。個々の道路セグメントのプレイス ID は、snapToRoads リクエストまたは nearestRoads リクエストを使用して取得することをおすすめします。どちらのリクエストでも、1 回の呼び出しで複数のプレイス ID を返すことができます。