ガイドAPIリファレンス
ガイド

リージョンモードでマトリックスを計算する方法

次のチュートリアルでは、ドイツのベルリンでこのような出発地と目的地を含むシンプルな3x3のマトリックスの例を示します。

  1. アレクサンダー広場 (52.52103、13.41268)
  2. ブランデンブルク門 (52.51628、13.37771)
  3. テンペルホフフィールド (52.47342、13.40357)

自動車走行距離のマトリックスを計算するには、以下のリクエストを使用します。リクエストでは目的地の配列が指定されていないため、出発地は宛先と見なされ、結果のマトリックスは3x3のマトリックスになります。

リージョンの定義は、経由地を囲むバウンディングボックスです。経由地の近くで適切にルーティングできるように、小さなマージンが追加されています。

デフォルトではサービスは移動時間のマトリックスを計算しますが、レスポンスでは時間ではなく距離を取得するため、リクエストでは値distancesを使用してmatrixAttributesプロパティが指定されます。

{
    "origins": [
        {"lat": 52.52103, "lng": 13.41268},
        {"lat": 52.51628, "lng": 13.37771},
        {"lat": 52.47342, "lng": 13.40357}
    ],
    "regionDefinition": {
        "type": "boundingBox",
        "north": 52.53,
        "south": 52.46,
        "west": 13.35,
        "east": 13.42
    },
    "matrixAttributes": ["distances"]
}

次のように表示されます。 ベルリンでのマトリックスリクエスト マーカーは出発地/destinationsで、バウンディングボックスは青色の四角形です。

マトリックスリクエストを送信するすべての手順については、「HERE Matrix Routing API v8の使用を開始する」セクションで説明しています。レスポンスは次のようになります。

{
    "matrixId": "0b7f828f-49c8-43e4-9727-063eafbf7d7a",
    "matrix": {
        "numOrigins": 3,
        "numDestinations": 3,
        "distances": [0, 2907, 6446, 3258, 0, 5954, 6669, 5966, 0]
    },
    "regionDefinition": {
        "type": "boundingBox",
        "north": 52.53,
        "south": 52.46,
        "west": 13.35,
        "east": 13.42
    }
}

レスポンスはメートル単位のエントリを持つこちらのマトリックスに対応します。

orig\dest123
10290811262
23506010207
31133394140

autoCircleリージョン定義

出発地の周囲にバウンディングボックスを定義する代わりに、サークルの自動派生をリクエストできます。以下のリクエストは上のリクエストと同じですが、autoCircleフィーチャーを使用しています。

{
    "origins": [
        {"lat": 52.52103, "lng": 13.41268},
        {"lat": 52.51628, "lng": 13.37771},
        {"lat": 52.47342, "lng": 13.40357}
    ],
    "regionDefinition": {
        "type": "autoCircle"
    },
    "matrixAttributes": ["distances"]
}

このフィールドmarginは指定されていないため、サービスではデフォルト値の10kmが使用されます。

派生したサークルがマトリックスレスポンスで返されます。

{
    "matrixId": "05fef3ee-dd1a-450f-a5fe-15c95b7ee8a0",
    "matrix": {
        "numOrigins": 3,
        "numDestinations": 3,
        "distances": [0, 2907, 6446, 3258, 0, 5954, 6669, 5966, 0 ]
    },
    "regionDefinition": {
        "type": "circle",
        "center": {"lat": 52.497225, "lng": 13.395195},
        "radius": 12900
    }
}

これが表示されるリージョンです。 autoCircleベルリン マージンを小さくすることでリージョンのサイズを小さくできます。

{
    "origins": [
        {"lat": 52.52103, "lng": 13.41268},
        {"lat": 52.51628, "lng": 13.37771},
        {"lat": 52.47342, "lng": 13.40357}
    ],
    "regionDefinition": {
        "type": "autoCircle",
        "margin": 1000
    },
    "matrixAttributes": ["distances"]
}

これは対応するマトリックスのレスポンスです。

{
    "matrixId": "b76f08be-9cc2-4a4e-9b27-deb766df9e90",
    "matrix": {
        "numOrigins": 3,
        "numDestinations": 3,
        "distances": [0, 2907, 6446, 3258, 0, 5954, 6669, 5966, 0 ]
    },
    "regionDefinition": {
        "type": "circle",
        "center": {"lat": 52.497225, "lng": 13.395195},
        "radius": 3900
    }
}

サークルには、マージンの小さい出発地が含まれています。 autoCircleベルリン (小) autoCircleには、限られたリージョンでマトリックスエントリを計算するのに使用されるリージョンサイズを制限するためのパラメーターmaxRadiusがあります。これは、次のいずれかの操作を行う必要がある場合に特に役立ちます。

  1. 通常は、autoCircleがリージョンサイズの制限を超過しても、常に結果が得られるようにしてください。
  2. リージョンが大きくなりすぎないようにして、レスポンス時間を制限します。

経由地がマージンに一致する場合、または計算されたオートautoCircleの外側の場合は、対応するエントリのerrorCodes = 4を代わりに取得します。

{
    "origins": [
        {"lat": 52.586821, "lng": 13.581717},
        {"lat": 52.607613, "lng": 13.197346},
        {"lat": 52.4087162, "lng": 13.2962859},
        {"lat": 52.3999995, "lng": 17.0103584}
    ],
    "regionDefinition": {
        "type": "autoCircle",
        "maxRadius": 20000
    },
    "matrixAttributes": ["distances"]
}

これは対応するマトリックスのレスポンスです。

{
    "matrixId": "b76f08be-9cc2-4a4e-9b27-deb766df9e90",
    "matrix": {
        "numOrigins": 4,
        "numDestinations": 4,
        "distances": [
            0,      50367,  40323,  0,
            49747,  0,      39525,  0,
            40119,  30042,  0,      0,
            0,      0,      0,      0
         ],
        "errorCodes": [
            0, 0, 0, 4,
            0, 0, 0, 4,
            0, 0, 0, 4,
            4, 4, 4, 4
        ]
    },
    "regionDefinition": {
        "type": "circle",
        "center": {"lat": 52.5081646, "lng": 13.3895315},
        "radius": 27062
    }
}

次の図に、経由地と計算されたautoCircleを示します。 autoCircle maxRadius