iOS 開発者ガイド for SDK

ルートの使用量

ルート消費量の計算は、すでに計算されている特定のルートについて燃料消費量を計算できるベータ版の機能です。

車両の航続距離は、走行条件に応じて、燃料の残量および車両がキロメートルあたりに消費する燃料量によって異なります。 これは電気自動車にとって特に重要です。電気自動車は通常、ガソリン駆動車が満タンで走行する場合よりもフル充電で走行する距離が短くなります。

車両が計算されたルートを完了できるようにする ために、 SDK for iOS では、特定の消費パラメータを指定して、そのルートの各要素の消費量を計算できます。 これにより、開発者は、まずルートの最後に車両が残す燃料量を決定し、次に最終目的地に到達できない場合に備えて、燃料が不足している場所を確認できます。

車両ごとに異なるタイプの燃料(ガソリンや電気など)が消費され、消費率も異なるため、計算を行う前に、特定の車両の消費パラメータを使用して消費量の計算を設定する必要があります。

消費量計算の重要な概念は、能力単位です。 容量単位は、特定の車両の燃料を測定する方法です。 一般的に消費量の計算が行われるため、単位は開発者によって効果的に定義されます。 電気自動車の場合、積載量は一般にキロワット時( kWh )です。ガソリン車の場合、リットルのガソリンを使用できます。

車両には最大容量と現在の容量があり、合計燃料量と現在の燃料量をそれぞれ示します。

以下の説明では、最も一般的なユースケースであるため、電気自動車の消費量を計算していると仮定します。 使用量の単位はキロワット時( kWh )です。

消費パラメータは NMARouteConsumptionParameters クラスにグループ化されます。 API のドキュメントでは、変更可能な個々の値について説明しています。 HERE より複雑で重要な価値について説明します。 まず、空の消費パラメーターオブジェクトを作成します。

NMARouteConsumptionParamters *consumptionParams = [[NMARouteConsumptionParameters alloc] init];

速度消費量表は、ほとんどの消費量の計算の基礎となります。 consumptionSpeed プロパティに保存されます。 この表は、走行速度範囲におけるメートルあたりの車両の消費量をキロワット時(容量単位)で示しています。

それぞれに 3 つの速度範囲と 1 つの消費量を持つ非常に単純な例を考えてみましょう。

表 1.
速度範囲( km/時 ) 1 メートルあたりの消費量 (kWh)
0 - 30 38.82
31 - 90 18.20
> 90 27.41

この表では、 0 ~ 30 km/時 の走行時に車両が 38.82 kWh/ メートル、 31 ~ 90 km/時 の走行時に 18.20 kWh/ メートル、 90 km/時 以上の速度で走行する場合に 27.41 kWh/ メートルの容量を消費していることを確認しています。 もちろん、この例は非常にシンプルです。実世界の速度消費テーブルでは、より詳細な値を設定できます。

この表を消費パラメータで使用するに consumptionSpeed は、各範囲の上限をキーとして使用し、メートルあたりの消費量を値として使用してプロパティを設定します。 最終的な範囲 (90 km/時 を超える場合 ) では、キー 250 を使用する必要があります。

consumptionParams.consumptionSpeed = @{ @(30):  @(38.82),
          @(90):  @(18.20),
          @(250): @(27.41) };

速度の消費量の表は、ルートの単純な消費量を計算するのに十分です。その方法を確認してみましょう。 計算ルートを含む route という NMARoute オブジェクトがすでに存在しているとします。 次に、このルートの消費量を計算します。

NMARouteConsumption *consumption =
  [route consumptionWithParameters:consumptionParams
          dynamicPenalty:nil];

ルートの使用量を把握した後、車両の現在の積載量に応じて、同じルートで最後に到達可能な位置を特定できます。 この例では、ルート開始時に車両の残量が 100,000 kWh に達すると仮定します。

NMAGeoCoordinates *lastPosition =
  [route lastReachablePositionWithConsumption:consumption
                currentCapacity:100000];

変数 lastPosition には、積載量がゼロに達する前に車両が到達できる最後のポイントが含まれます。 ルートの最終目的地に到達できる場合 lastPosition 、はになり nilます。

ルート消費を使用して、ルート自体を構成する各ルート要素の消費量を取得することもできます。 次のコード スニペットは、各ルート要素の開始および終了の地理座標、およびそのルート要素の使用量を印刷します。

[route.routeElements enumerateObjectsUsingBlock:^(NMARouteElement *element, NSUInteger idx, BOOL *stop) {
    if (idx >= [consumption firstAvailableConsumptionIndex] && [element.geometry count] > 0) {
      NSInteger elementConsumption = [consumption getConsumptionWithIndex:idx];
      NSLog(@"Route element (%.4f, %.4f) --> (%.4f, %.4f) consumption: %zd",
          element.geometry.firstObject.latitude, element.geometry.firstObject.longitude,
          element.geometry.lastObject.latitude, element.geometry.lastObject.longitude,
          consumption);
    }
  }];

前述のよう consumptionSpeed に、基本的な消費量の計算にはプロパティのみを設定するだけで十分です。 さまざまな道路状況や交通状況で実際の車両の消費量をより厳密にモデル化するように設定できる、より専門的な値があります。 これらのプロパティの詳細については、 API のドキュメントを参照してください。