Route - Get Route Matrix
Użyj polecenia , aby uzyskać macierz tras pokazującą czas podróży i odległość dla wszystkich możliwych par na liście źródeł i miejsc docelowych.
Interfejs API Get Route Matrix
to żądanie GET
HTTP, które oblicza czas podróży i odległość dla wszystkich możliwych par na liście źródeł i miejsc docelowych. W przeciwieństwie do interfejsu API Get Route Directions, który udostępnia szczegółowe instrukcje dotyczące trasy, ten interfejs API koncentruje się na wydajności, zapewniając koszt (czas podróży i odległość) routingu z każdego punktu początkowego do każdego miejsca docelowego. Aby uzyskać więcej informacji, zobacz Best practices for Azure Maps Route Service.
Dla każdego danego źródła usługa oblicza koszt routingu z tego źródła do każdego miejsca docelowego. Zestaw źródeł i zestaw miejsc docelowych można traktować jako nagłówki kolumn i wierszy tabeli, a każda komórka w tabeli zawiera koszty routingu z punktu początkowego do miejsca docelowego dla tej komórki. Załóżmy na przykład, że firma dostarczająca żywność ma 20 kierowców i musi znaleźć najbliższego kierowcę, aby odebrać dostawę z restauracji. Aby rozwiązać ten przypadek użycia, mogą wywołać interfejs API trasy macierzy.
Dla każdej trasy zwracane są czasy podróży i odległości. Za pomocą obliczonych kosztów można określić, które szczegółowe trasy mają być obliczane przy użyciu interfejsu API Route Directions.
Maksymalny rozmiar macierzy dla żądania asynchronicznego to 700, a żądanie synchronizacji to 100 (liczba źródeł pomnożonych przez liczbę miejsc docelowych).
Przesyłanie synchronicznego żądania macierzy tras
Jeśli scenariusz wymaga żądań synchronicznych, a maksymalny rozmiar macierzy jest mniejszy lub równy 100, możesz utworzyć żądanie synchroniczne. Maksymalny rozmiar macierzy dla tego interfejsu API to 100 (liczba źródeł pomnożona przez liczbę miejsc docelowych). Mając na uwadze to ograniczenie, przykłady możliwych wymiarów macierzy to: 10x10, 6x8, 9x8 (nie musi być kwadratowy).
GET https://atlas.microsoft.com/route/matrix/sync/json?api-version=1.0&subscription-key={subscription-key}
Prześlij żądanie asynchronicznej macierzy tras
Interfejs API asynchroniczny jest odpowiedni do przetwarzania dużych ilości stosunkowo złożonych żądań routingu. Gdy wysyłasz żądanie przy użyciu żądania asynchronicznego, domyślnie usługa zwraca kod odpowiedzi 202 wraz z adresem URL przekierowania w polu Lokalizacja nagłówka odpowiedzi. Ten adres URL powinien być okresowo sprawdzany do momentu udostępnienia danych odpowiedzi lub informacji o błędzie. Jeśli parametr waitForResults
w żądaniu ma wartość true, użytkownik otrzyma odpowiedź 200, jeśli żądanie zostanie zakończone poniżej 120 sekund.
Maksymalny rozmiar macierzy dla tego interfejsu API to 700 (liczba źródeł pomnożona przez liczbę miejsc docelowych). Mając to na uwadze, przykłady możliwych wymiarów macierzy to: 50x10, 10x10, 28x25. 10x70 (nie musi być kwadratowy).
Odpowiedzi asynchroniczne są przechowywane przez 24 godzin. Adres URL przekierowania zwraca odpowiedź 404, jeśli jest używana po upływie okresu wygaśnięcia.
GET https://atlas.microsoft.com/route/matrix/json?api-version=1.0&subscription-key={subscription-key}
Oto typowa sekwencja operacji asynchronicznych:
Klient wysyła żądanie GET macierzy tras do usługi Azure Maps
Serwer odpowie jednym z następujących elementów:
202 Accepted
HTTP — żądanie macierzy tras zostało zaakceptowane.Error
HTTP — wystąpił błąd podczas przetwarzania żądania macierzy tras. Może to być 400 Nieprawidłowe żądanie lub inny kod stanu błędu.Jeśli żądanie trasy macierzy zostało zaakceptowane pomyślnie, nagłówek Location w odpowiedzi zawiera adres URL umożliwiający pobranie wyników żądania. Ten identyfikator URI stanu wygląda następująco:
GET https://atlas.microsoft.com/route/matrix/{matrixId}?api-version=1.0?subscription-key={subscription-key}
- Klient wystawia żądanie GET w adresie URL pobierania uzyskanym w kroku 3, aby pobrać wyniki
Pobieranie wyników synchronizacji
Po wysłaniu żądania GET dla interfejsu API synchronizacji macierzy tras usługa zwraca kod odpowiedzi 200 dla pomyślnego żądania i tablicy odpowiedzi. Treść odpowiedzi będzie zawierać dane i nie będzie można pobrać wyników później.
Pobieranie wyników asynchronicznych
Gdy żądanie wysyła 202 Accepted
odpowiedzi, żądanie jest przetwarzane przy użyciu naszego potoku asynchronicznego. Otrzymasz adres URL, aby sprawdzić postęp żądania asynchronicznego w nagłówku lokalizacji odpowiedzi. Ten identyfikator URI stanu wygląda następująco:
GET https://atlas.microsoft.com/route/matrix/{matrixId}?api-version=1.0?subscription-key={subscription-key}
Adres URL podany przez nagłówek lokalizacji zwróci następujące odpowiedzi po wysłaniu żądania GET
.
202 Accepted
HTTP — żądanie macierzy zostało zaakceptowane, ale nadal jest przetwarzane. Spróbuj ponownie za jakiś czas.
200 OK
HTTP — pomyślnie przetworzone żądanie macierzy. Treść odpowiedzi zawiera wszystkie wyniki.
GET https://atlas.microsoft.com/route/matrix/{format}?api-version=1.0
Parametry identyfikatora URI
Nazwa | W | Wymagane | Typ | Opis |
---|---|---|---|---|
format
|
path | True |
string |
Identyfikator macierzy otrzymany po pomyślnym zaakceptowaniu żądania trasy macierzy. |
api-version
|
query | True |
string |
Numer wersji interfejsu API usługi Azure Maps. |
Nagłówek żądania
Odpowiedzi
Nazwa | Typ | Opis |
---|---|---|
200 OK |
Pomyślnie przetworzone żądanie macierzy. Treść odpowiedzi zawiera wszystkie wyniki. |
|
202 Accepted |
Obsługiwane tylko w przypadku żądania asynchronicznego. Zaakceptowane żądanie: żądanie zostało zaakceptowane do przetworzenia. Użyj adresu URL w nagłówku lokalizacji, aby ponowić próbę lub uzyskać dostęp do wyników. Nagłówki Location: string |
|
Other Status Codes |
Wystąpił nieoczekiwany błąd. |
Zabezpieczenia
AADToken
Są to przepływy Microsoft Entra OAuth 2.0. Po połączeniu z dostępem opartym na rolach platformy Azure kontroli może służyć do kontrolowania dostępu do interfejsów API REST usługi Azure Maps. Mechanizmy kontroli dostępu opartej na rolach platformy Azure służą do wyznaczania dostępu do co najmniej jednego konta zasobu usługi Azure Maps lub zasobów podrzędnych. Każdy użytkownik, grupa lub jednostka usługi mogą mieć dostęp za pośrednictwem wbudowanej roli lub roli niestandardowej składającej się z co najmniej jednego uprawnienia do interfejsów API REST usługi Azure Maps.
Aby zaimplementować scenariusze, zalecamy wyświetlenie koncepcji uwierzytelniania . Podsumowując, ta definicja zabezpieczeń zawiera rozwiązanie do modelowania aplikacji za pośrednictwem obiektów, które mogą kontrolować dostęp do określonych interfejsów API i zakresów.
Notatki
- Ta definicja zabezpieczeń wymaga użycia nagłówka
x-ms-client-id
w celu wskazania, do którego zasobu usługi Azure Maps aplikacja żąda dostępu. Można to uzyskać za pomocą interfejsu API zarządzania usługami Maps.
Authorization URL
jest specyficzna dla wystąpienia chmury publicznej platformy Azure. Suwerenne chmury mają unikatowe adresy URL autoryzacji i konfiguracje identyfikatorów Entra firmy Microsoft.
* Kontrola dostępu oparta na rolach platformy Azure jest konfigurowana na podstawie płaszczyzny zarządzania platformy Azure za pośrednictwem witryny Azure Portal, programu PowerShell, interfejsu wiersza polecenia, zestawów AZURE SDK lub interfejsów API REST.
* Użycie zestawu Web SDK usługi Azure Maps umożliwia konfigurację opartą na konfiguracji aplikacji w wielu przypadkach użycia.
- Aby uzyskać więcej informacji na temat platformy tożsamości firmy Microsoft, zobacz Microsoft identity platform overview.
Typ:
oauth2
Flow:
implicit
Adres URL autoryzacji:
https://login.microsoftonline.com/common/oauth2/authorize
Zakresy
Nazwa | Opis |
---|---|
https://atlas.microsoft.com/.default | https://atlas.microsoft.com/.default |
subscription-key
Jest to klucz wspólny aprowizowany podczas tworzenie konta usługi Azure Maps w witrynie Azure Portal lub przy użyciu programu PowerShell, interfejsu wiersza polecenia, zestawów SDK platformy Azure lub interfejsu API REST.
Za pomocą tego klucza każda aplikacja może uzyskiwać dostęp do całego interfejsu API REST. Innymi słowy, ten klucz może służyć jako klucz główny na koncie, w którym są wystawiane.
W przypadku publicznie uwidocznionych aplikacji zalecamy użycie poufnych aplikacji klienckich podejście do uzyskiwania dostępu do interfejsów API REST usługi Azure Maps, aby klucz mógł być bezpiecznie przechowywany.
Typ:
apiKey
W:
query
SAS Token
Jest to token sygnatury dostępu współdzielonego tworzony na podstawie operacji List SAS na zasobie usługi Azure Maps za pośrednictwem płaszczyzny zarządzania platformy Azure za pośrednictwem witryny Azure Portal, programu PowerShell, interfejsu wiersza polecenia, zestawów AZURE SDK lub interfejsów API REST.
Dzięki temu tokenowi każda aplikacja jest autoryzowana do uzyskiwania dostępu za pomocą kontroli dostępu opartej na rolach platformy Azure i szczegółowej kontroli wygaśnięcia, szybkości i regionów użycia dla określonego tokenu. Innymi słowy, token SAS może służyć do umożliwienia aplikacjom kontrolowania dostępu w sposób bardziej zabezpieczony niż klucz wspólny.
W przypadku publicznie uwidocznionych aplikacji zalecamy skonfigurowanie określonej listy dozwolonych źródeł w zasobie Mapowanie konta w celu ograniczenia nadużyć renderowania i regularnego odnawiania tokenu SAS.
Typ:
apiKey
W:
header
Przykłady
Successfully retrieve the status for a route matrix request
Przykładowe żądanie
GET https://atlas.microsoft.com/route/matrix/11111111-2222-3333-4444-555555555555?api-version=1.0
Przykładowa odpowiedź
{
"formatVersion": "0.0.1",
"matrix": [
[
{
"statusCode": 200,
"response": {
"routeSummary": {
"lengthInMeters": 495,
"travelTimeInSeconds": 134,
"trafficDelayInSeconds": 0,
"departureTime": "2018-07-27T22:55:29+00:00",
"arrivalTime": "2018-07-27T22:57:43+00:00"
}
}
},
{
"statusCode": 200,
"response": {
"routeSummary": {
"lengthInMeters": 647651,
"travelTimeInSeconds": 26835,
"trafficDelayInSeconds": 489,
"departureTime": "2018-07-27T22:55:29+00:00",
"arrivalTime": "2018-07-28T06:22:44+00:00"
}
}
}
],
[
{
"statusCode": 200,
"response": {
"routeSummary": {
"lengthInMeters": 338,
"travelTimeInSeconds": 104,
"trafficDelayInSeconds": 0,
"departureTime": "2018-07-27T22:55:29+00:00",
"arrivalTime": "2018-07-27T22:57:13+00:00"
}
}
},
{
"statusCode": 200,
"response": {
"routeSummary": {
"lengthInMeters": 647494,
"travelTimeInSeconds": 26763,
"trafficDelayInSeconds": 469,
"departureTime": "2018-07-27T22:55:29+00:00",
"arrivalTime": "2018-07-28T06:21:32+00:00"
}
}
}
]
],
"summary": {
"successfulRoutes": 4,
"totalRoutes": 4
}
}
Definicje
Nazwa | Opis |
---|---|
Error |
Dodatkowe informacje o błędzie zarządzania zasobami. |
Error |
Szczegóły błędu. |
Error |
Odpowiedź na błąd |
Route |
Obiekt podsumowania sekcji trasy. |
Route |
Obiekt wynikowy macierzy |
Route |
Ten obiekt jest zwracany z pomyślnego wywołania macierzy tras. Na przykład jeśli podano 2 źródła i 3 miejsca docelowe, w każdej z nich będzie 2 tablice z 3 elementami. Zawartość każdego elementu zależy od opcji podanych w zapytaniu. |
Route |
Obiekt odpowiedzi bieżącej komórki w macierzy wejściowej. |
Route |
Obiekt podsumowania |
ErrorAdditionalInfo
Dodatkowe informacje o błędzie zarządzania zasobami.
Nazwa | Typ | Opis |
---|---|---|
info |
object |
Dodatkowe informacje. |
type |
string |
Dodatkowy typ informacji. |
ErrorDetail
Szczegóły błędu.
Nazwa | Typ | Opis |
---|---|---|
additionalInfo |
Dodatkowe informacje o błędzie. |
|
code |
string |
Kod błędu. |
details |
Szczegóły błędu. |
|
message |
string |
Komunikat o błędzie. |
target |
string |
Element docelowy błędu. |
ErrorResponse
Odpowiedź na błąd
Nazwa | Typ | Opis |
---|---|---|
error |
Obiekt błędu. |
RouteLegSummary
Obiekt podsumowania sekcji trasy.
Nazwa | Typ | Opis |
---|---|---|
arrivalTime |
string |
Szacowany czas przybycia trasy lub nogi. Czas jest w formacie UTC. |
batteryConsumptionInkWh |
number |
Szacowane zużycie energii elektrycznej w kilowatach (kWh) przy użyciu modelu zużycia energii elektrycznej. Uwzględnione, jeśli parametr vehicleEngineType ma ustawioną wartość elektryczną i stałąSpeedConsumptionInkWhPerHundredkm jest określona. Wartość bateriiConsumptionInkWh obejmuje odzyskaną energię elektryczną i dlatego może być ujemna (co wskazuje na uzyskanie energii). Jeśli określono zarówno wartość maxChargeInkWh, jak i currentChargeInkWh, reuperacja zostanie ograniczona w celu zapewnienia, że poziom naładowania baterii nigdy nie przekracza maksymalnej wartości MaxChargeInkWh. Jeśli nie określono parametru maxChargeInkWh ani currentChargeInkWh, w obliczeniu zużycia przyjmuje się, że nieskrępowana reuperacja jest przyjmowana. |
departureTime |
string |
Szacowany czas odlotu trasy lub nogi. Czas jest w formacie UTC. |
fuelConsumptionInLiters |
number |
Szacowane zużycie paliwa w litrach przy użyciu modelu zużycia spalania. Uwzględnione, jeśli parametr vehicleEngineType ma ustawioną wartość spalania i określono stałąSpeedConsumptionInLitersPerHundredkm. Wartość będzie nieujemna. |
historicTrafficTravelTimeInSeconds |
integer |
Szacowany czas podróży obliczany przy użyciu danych historycznych zależnych od czasu. Uwzględniane tylko wtedy, gdy parametr computeTravelTimeFor = wszystkie jest używany w zapytaniu. |
lengthInMeters |
integer |
Długość w metrach, właściwość |
liveTrafficIncidentsTravelTimeInSeconds |
integer |
Szacowany czas podróży obliczany przy użyciu danych prędkości w czasie rzeczywistym. Uwzględniane tylko wtedy, gdy parametr computeTravelTimeFor = wszystkie jest używany w zapytaniu. |
noTrafficTravelTimeInSeconds |
integer |
Szacowany czas podróży obliczony tak, jakby nie było opóźnień w trasie ze względu na warunki ruchu (np. przeciążenie). Uwzględniane tylko wtedy, gdy parametr computeTravelTimeFor = wszystkie jest używany w zapytaniu. |
trafficDelayInSeconds |
integer |
Szacowane opóźnienie w sekundach spowodowane zdarzeniami w czasie rzeczywistym zgodnie z informacjami o ruchu. W przypadku tras planowanych z czasem odlotu w przyszłości opóźnienia są zawsze 0. Aby zwrócić dodatkowe czasy podróży przy użyciu różnych typów informacji o ruchu, parametr computeTravelTimeFor=wszystkie należy dodać. |
travelTimeInSeconds |
integer |
Szacowany czas podróży w sekundach, który obejmuje opóźnienie spowodowane ruchem w czasie rzeczywistym. Należy pamiętać, że nawet gdy traffic=false travelTimeInSeconds nadal zawiera opóźnienie spowodowane ruchem. Jeśli funkcja DepartAt jest w przyszłości, czas podróży jest obliczany przy użyciu danych historycznych zależnych od czasu. |
RouteMatrix
Obiekt wynikowy macierzy
Nazwa | Typ | Opis |
---|---|---|
response |
Obiekt odpowiedzi bieżącej komórki w macierzy wejściowej. |
|
statusCode |
integer |
Właściwość StatusCode dla bieżącej komórki w macierzy wejściowej. |
RouteMatrixResult
Ten obiekt jest zwracany z pomyślnego wywołania macierzy tras. Na przykład jeśli podano 2 źródła i 3 miejsca docelowe, w każdej z nich będzie 2 tablice z 3 elementami. Zawartość każdego elementu zależy od opcji podanych w zapytaniu.
Nazwa | Typ | Opis |
---|---|---|
formatVersion |
string |
Formatowanie właściwości Version |
matrix |
Wyniki jako 2-wymiarowa tablica podsumowań tras. |
|
summary |
Obiekt podsumowania |
RouteMatrixResultResponse
Obiekt odpowiedzi bieżącej komórki w macierzy wejściowej.
Nazwa | Typ | Opis |
---|---|---|
routeSummary |
Obiekt podsumowania sekcji trasy. |
RouteMatrixSummary
Obiekt podsumowania
Nazwa | Typ | Opis |
---|---|---|
successfulRoutes |
integer |
Liczba pomyślnych tras w odpowiedzi. |
totalRoutes |
integer |
Łączna liczba żądanych tras. Liczba komórek w macierzy wejściowej. |