利用開始
このセクションでは、 HERE platform のMatrix Routingサービスを使用し実行する方法について説明します。
- HERE アカウントを取得
- API キー を入手
- リクエストの送信
- 次のステップ
注
このセクションでは、 Matrix Routing サービスの使用を迅速に開始するために必要な最小限の設定について説明します。 HERE アカウントの設定、プロジェクトの作成、アプリ の登録、および認証の詳細については、『 ID およびアクセス管理ガイド』を参照してください。
HERE アカウントの取得
組織が HERE Workspace または HERE Marketplace にサインアップしている場合は、組織の管理者に連絡して、会社に設定されている HERE platform 組織の参加を招待をしてもらってください。 組織が設定されていない場合は、 HERE platform の無料試用版をリクエストすることもできます。 詳細については 、 HERE platform の価格表を参照してください。
APIキーを取得
API キー を取得するには、まずアプリ を作成する必要があります。アプリ を作成するには、次の手順を実行します。
- HERE アカウントを使用して HERE platform にサインイン。
- ランチャから Access Manager を開きます。
- [ アプリ ] タブを選択します。
- [ 新しいアプリ を登録] をクリックします。
- アプリ の名前を入力します。
- プロジェクトへの既定のアクセス権で、[プロジェクトなし] を選択します。
- [ 登録] をクリックします
API キー を取得するには、次の手順を実行します。
- HERE アカウントを使用して HERE platform にサインイン。
- ランチャから Access Manager を開きます。
- [ アプリ ] タブを選択します。
- [ アプリ ] タブの一覧でアプリ 名をクリックして、アプリ を開きます。
- 資格情報 タブを選択します。
- API Keys をクリックします。
- [Create API キー( 新規作成 )] をクリックし
リクエストの送信
Matrix Routing は、同期リクエストまたは非同期リクエストを使用して実行できます。 すべてのモードは同期要求と非同期要求の両方で使用できますが、同期要求にはマトリクスサイズの追加の制限があります。 使用可能なモードの詳細については、次のチュートリアルを参照してください。
リクエストのタイプに応じて、異なる手順を実行する必要があります。 リクエストタイプに関係なく、 regionDefinition
を指定する必要があります。出発地と目的地を含むリージョンを定義でき ます。または、自分でリージョンを定義しない場合は、単にregionDefinition
タイプとしてautoCircle
リクエストします。 詳細については、「 リージョン」を参照してください。
任意の長さのルートを使用してマトリックスを計算する場合 world
は、リージョン定義を使用します。 この場合、事前定義されたプロファイル ID のいずれかを指定するか、またはカスタムオプションを定義する場合は、マトリックスのサイズを制限する必要があります。 詳細については 、「プロファイル」を参照してください。
同期リクエスト
同期 API を使用すると、マトリックス計算リクエストをサーバーに送信し、応答を待機することになります。 同期リクエストには、マトリックスのディメンションにさらに制限があります。
同期マトリックスの計算を要求するに は、async
クエリ パラメーターをfalse
の値に設定します。 それ以外の場合、同期マトリックスリクエストの内容は非同期リクエストの内容と同じになります。
次に、マトリックス計算リクエストを送信します。 サービスはリクエストを検証し、マトリックスの計算にリソースが利用できるようになるまでキューに追加します。 計算が完了するか、またはエラーが発生した場合、サービスはマトリックスの結果を直接返します。
次 async=false
の例のクエリ パラメーターに注意してください。
POST https://matrix.router.hereapi.com/v8/matrix?async=false
Content-Type: application/json
Body:
{
"origins": [{"lat": 0.0, "lng": 0.0}, {"lat": 0.1, "lng": 0.1}, ...],
"destinations": [...], // if omitted same as origins
"regionDefinition": {
"type": "circle",
"center": {"lat": 0.0, "lng": 0.0},
"radius": 10000
}
}
ステータスコード 200 を受信した場合、リクエストは正常に計算されました。
マトリックスの結果の構造は次のとおりです。
{
"matrixId": "{matrixId}",
"matrix": {
"numOrigins": 10,
"numDestinations": 1000,
"travelTimes": [10, 20, 0, ...],
"errorCodes": [0, 0, 0, ...]
},
"regionDefinition": {
"type": "circle",
"center": {"lat": 0.0, "lng": 0.0},
"radius": 10000
}
}
計算されたルーティングマトリックスに加えて、マトリックスの結果には次のものが含まれます。
- a
matrixId
- マトリックスの一意の識別子。 - A
regionDefinition
- マトリックスの計算に使用されるリージョン定義。 ユーザーが指定したもの、または自動的に派生したもの ( autoCircle
が要求された場合 ) のいずれかです。
非同期リクエスト
非同期 API を使用する場合、完全なマトリックス計算サイクルは、サービスに対する複数のリクエストで構成されます。
マトリックスの計算を要求します
新しいマトリックス計算リクエストを作成します。 リクエストが有効な場合、サービスはすべてのマトリックス計算のキューにリクエストを追加し、リソースが利用可能になったときに計算を開始します。
> POST https://matrix.router.hereapi.com/v8/matrix
> Authorization: Bearer <token>
> Content-Type: application/json
JSON リクエスト本文を使用する場合 :
{
"origins": [{"lat": 0.0, "lng": 0.0}, {"lat": 0.1, "lng": 0.1}, ...],
"destinations": [...],
"regionDefinition": {
"type": "circle",
"center": {"lat": 0.0, "lng": 0.0},
"radius": 10000
}
}
上記のリクエストに対する応答は次のとおりです。
{
"matrixId": "<globally unique id>",
"status": "inProgress",
"statusUrl": "<url to status endpoint>",
"error": {
},
"regionDefinition": "<same as in request>"
}
応答の要素は次のとおりです
-
matrixId
—計算ステータスの追跡およびマトリックス結果のダウンロードに使用されるマトリックスの一意の識別子。 -
status
:計算のステータス。 -
statusUrl
:ステータスをポーリングする URL 。 -
error
:エラーオブジェクト。通常、リクエストが検証に合格しなかった場合に返されます。 -
regionDefinition
—マトリックスの計算に使用されるリージョン定義。 ユーザーが指定したもの 、または自動的に派生したもの ( autoCircle
が要求された場合 ) のいずれかです。
マトリックス計算のステータスをポーリングします
特定のマトリックス ID のマトリックス計算のステータスを取得するには 、リクエストを送信時に取得したstatusUrl
を使用します。
> GET <statusUrl>
> Authorization: Bearer <token>
---
< HTTP/1.1 303 See Other
< Content-Type: application/json
< Location: <url to download calculation result>
応答は、最初の計算要求と同じスキーマです。
{
"matrixId": "<globally unique id>",
"status": "completed",
"resultUrl": "<url to download calculation result>",
"error": {
},
"regionDefinition": {
"type": "circle",
"center": {"lat": 0.0, "lng": 0.0},
"radius": 10000
}
}
ステータスコード 200 、ステータス accepted
、または inProgress
を受信した は、計算が完了して HTTP ステータスコード303 See Other
返されるまでポーリングを続行する必要があります。 フィールドresultUrl
と一致するヘッダー Location
が、マトリックス結果の場所と一緒に追加されます。 自動リダイレクトをサポートするクライアントは、マトリックスの結果に自動的にリダイレクトされ、 S3 リソースにリダイレクトされます。
API キー 認証のユーザーに対する警告です
Location
ステータスリクエストから返されたヘッダの URL に apiKey
は、パラメータが含まれていません。 リダイレクトを無効にするようにクライアントを設定し、次のセクションで説明するようにマトリックスの結果をダウンロードする必要があります。 リクエストに API キー のクエリ パラメーターが含まれていることを確認してください。
マトリックスの結果をダウンロードします
マトリックス計算のステータスがcompleted
の場合 、計算されたマトリックスは、matrixId
要素で指定された ID を使用して利用できます。 計算が完了していないマトリックス結果をリクエストすると、 HTTP ステータスコード 404 Not Found
生成されます。
> GET <resultUrl>
> Content-Type: application/json
> Accept-Encoding: gzip
上記の要求に対する応答によって、圧縮された( gzip ) JSON ドキュメントにリダイレクトされます。 リダイレクトは、 S3 リソースへの自己署名 URL です。
OAuth 2.0 認証のユーザーに対する警告です
一部のクライアントは 、リダイレクト後もヘッダーAuthorization
を各要求に追加するように設定されています。 このようなクライアントは、矛盾する承認方法が原因で自己署名 S3 URL にアクセスするとエラーが発生します。 Authorization
ヘッダーが S3 エンドポイントに送信されていないことを確認してください。
マトリックスの結果の構造は次のとおりです。
{
"matrixId": "{matrixId}",
"matrix": {
"numOrigins": 10,
"numDestinations": 1000,
"travelTimes": [10, 20, 0, ...],
"errorCodes": [0, 0, 0, ...]
},
"error" {
}
}
注
以前のマトリックス計算の結果はしばらくすると破棄され、今後数時間のみ利用できます。
次のステップ