リージョンモードでマトリックスを計算する方法
次のチュートリアルでは、ドイツのベルリンでこのような出発地と目的地を含むシンプルな3x3のマトリックスの例を示します。
- アレクサンダー広場 (52.52103、13.41268)
- ブランデンブルク門 (52.51628、13.37771)
- テンペルホフフィールド (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\dest | 1 | 2 | 3 |
|---|---|---|---|
| 1 | 0 | 2908 | 11262 |
| 2 | 3506 | 0 | 10207 |
| 3 | 11333 | 9414 | 0 |
autoCircleリージョン定義
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
}
}これが表示されるリージョンです。
マージンを小さくすることでリージョンのサイズを小さくできます。
{
"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には、限られたリージョンでマトリックスエントリを計算するのに使用されるリージョンサイズを制限するためのパラメーターmaxRadiusがあります。これは、次のいずれかの操作を行う必要がある場合に特に役立ちます。
- 通常は、
autoCircleがリージョンサイズの制限を超過しても、常に結果が得られるようにしてください。 - リージョンが大きくなりすぎないようにして、レスポンス時間を制限します。
経由地がマージンに一致する場合、または計算されたオート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を示します。

13 日前の更新