Osvědčené postupy pro Azure Mapy Route

Rozhraní API Směry trasy a Matice tras v Azure Mapy Route Service je možné použít k výpočtu odhadovaných časů příletu (ETA) pro každou požadovanou trasu. Rozhraní API pro trasy vezměte v úvahu faktory, jako jsou informace o provozu v reálném čase a historická data o provozu, jako jsou typické rychlosti silnic v požadovaný den v týdnu a denní dobu. Rozhraní API vrací nejkratší nebo nejrychlejší trasy dostupné do více cílů v sekvenci nebo v optimalizovaném pořadí na základě času nebo vzdálenosti. Uživatelé si také mohou vyžádat specializované trasy a podrobnosti pro chodce, bicycykly a komerční vozidla, jako jsou nákladní vozy. V tomto článku se seznámíme s osvědčenými postupy volání služby Azure Mapy Route Servicea dozvíte se, jak:

  • Volba mezi rozhraními API směrů trasy a rozhraním API pro směrování matice
  • Vyžádat si historické a predikované dojezdové časy na základě aktuálních i historických dat o provozu
  • Vyžádejte si podrobnosti o trase, jako je čas a vzdálenost, pro celou trasu a každou část trasy.
  • Vyžádání trasy pro komerční vozidlo, jako je nákladní vůz
  • Vyžádání informací o provozu na trase, jako jsou jamy a informace o mýtné
  • Vyžádání trasy, která se skládá z jedné nebo více zastavení (trasových bodů)
  • Optimalizujte trasu jedné nebo více zastavení, abyste získali nejlepší pořadí pro návštěvu jednotlivých stop (trasových bodů).
  • Optimalizujte alternativní trasy pomocí podpůrných bodů. Můžete například nabídnout alternativní trasy, které procházejí zpoplatněnou stanicí pro elektrická vozidla.
  • Použití směrovací služby se sadou Azure Mapy Web SDK

Požadavky

  1. Nastavení účtu azure Mapy
  2. Získejte primární klíč předplatného, označované také jako primární klíč nebo klíč předplatného.

Další informace o pokrytí služby Route Service najdete v tématu Pokrytí směrování.

V tomto článku se k vytváření volání REST používá aplikace Postman, ale můžete si vybrat libovolné vývojové prostředí API.

Volba mezi směry trasy a směrováním matice

Rozhraní API směrů trasy vrací pokyny včetně doby cesty a souřadnic pro trasu. Rozhraní API Matice tras umožňuje vypočítat dobu cesty a vzdálenosti pro sadu tras, které jsou definovány umístěním původu a cílem. Pro každý původ rozhraní API matice vypočítá náklady (dobu cesty a vzdálenost) směrování z tohoto původu do každého cíle. Všechna tato rozhraní API umožňují zadat parametry, jako je požadovaný čas odletu, časy příletů a typ vozidla, jako je auto nebo nákladní vůz. Všechny používají data o provozu v reálném čase nebo data prediktivního provozu, aby vrátily ty nejoptimálnější trasy.

Pokud máte v tomto scénáři následující, zvažte volání rozhraní API směrů trasy:

  • Vyžádejte si nejkratší nebo nejrychlejší dojezdovou trasu mezi dvěma nebo více známými místy a získejte přesné časy příletů pro vaše nákladní vozidla.
  • Požádejte o podrobné pokyny k trasám, včetně geometrie trasy, k vizualizaci tras na mapě.
  • Na základě seznamu umístění zákazníků vypočítejte nejkratší možnou trasu k návštěvám jednotlivých umístění zákazníků a návratu do původního umístění. Tento scénář se běžně označuje jako problém obchodního prodejce na cestách. V jednom požadavku můžete předat až 150 trasových bodů (zastavení).
  • Odesílání dávek dotazů do rozhraní API dávky trasy pomocí jediného volání rozhraní API

Zvažte volání rozhraní API pro směrování matice v případě, že máte tyto možnosti:

  • Vypočítejte dobu cesty nebo vzdálenost mezi souborem původu a cíli. Máte například 12 řidičů a potřebujete najít nejbližšího dostupného řidiče, který vyzvedne dodávku jídla z restaurace.
  • Seřadí potenciální trasy podle jejich skutečné vzdálenosti nebo času. Rozhraní API matice vrací pouze doby cesty a vzdálenosti pro každou kombinaci původu a cíle.
  • Data clusteru na základě doby cesty nebo vzdálenosti. Vaše společnost má například 50 zaměstnanců a najde všechny zaměstnance, kteří od vás v kanceláři odchytá dobu jízdy do 20 minut.

Tady je porovnání s některými možnostmi rozhraní API Route Directions a Matrix:

Azure Mapy API Maximální počet dotazů v požadavku Vyhněte se oblastem Směrování nákladních vozů a elektrických vozidel Optimalizace trasových bodů a cestovních prodejců Podpůrné body
Získání trasy 1
Směry po trase 1
Dávkový směr trasy po trase 700
Post Route Matrix 700

Další informace o možnostech směrování elektrických vozidel najdete v našem kurzu o směrování elektrických vozidel pomocí Azure Notebooks s Pythonem.

Vyžádání historických dat a dat v reálném čase

Ve výchozím nastavení Route, že cestovní režim je auto a čas odletu je teď. Vrátí trasu na základě podmínek provozu v reálném čase, pokud požadavek na výpočet trasy neurčí jinak. Oprava omezení provozu závislých na čase, jako například "Levé otočení není povolené mezi 16:00 a 18:00", se zachycuje a bude je směrovací modul zvažovat. Pokud výslovně nepožádáte trasu, která ignoruje aktuální živý provoz, bude se uvažovat o uzavíracích cestách, jako jsou roadworks. Pokud chcete aktuální provoz ignorovat, nastavte traffic v požadavku rozhraní API na false .

Hodnota travelTimeInSeconds výpočtu trasy zahrnuje zpoždění způsobené provozem. Generuje se s využitím aktuálních a historických dat doby cesty, kdy je čas odletu nastavený na hodnotu . Pokud v budoucnu nastavíte čas odletu, vrátí rozhraní API předpovězené doby cesty na základě historických dat.

Pokud do požadavku zahrníte parametr computeTravelTimeFor=all, bude mít souhrnný prvek v odpovědi následující další pole, včetně historických podmínek provozu:

Element Popis
noTrafficTravelTimeInSeconds Odhadovaná doba cesty se počítá tak, jako kdyby na trase nebyly žádné zpoždění kvůli dopravním podmínkám, například kvůli zahlcení.
historicTrafficTravelTimeInSeconds Odhadovaná doba cesty vypočítaná pomocí historických dat o provozu závislých na čase
liveTrafficIncidentsTravelTimeInSeconds Odhadovaná doba cesty vypočítaná s využitím dat o rychlosti v reálném čase

Další části ukazují, jak provádět volání rozhraní API pro směrování pomocí probíraných parametrů.

Ukázkový dotaz

V prvním příkladu níže je čas odletu nastavený na budoucnost v době psaní.

https://atlas.microsoft.com/route/directions/json?subscription-key={Your-Azure-Maps-Primary-Subscription-key}&api-version=1.0&query=51.368752,-0.118332:51.385426,-0.128929&travelMode=car&traffic=true&departAt=2025-03-29T08:00:20&computeTravelTimeFor=all

Odpověď obsahuje souhrnný prvek, jako je ten níže. Protože čas odletu je nastavený na budoucnost, hodnota trafficDelayInSeconds je nula. Hodnota travelTimeInSeconds se počítá pomocí historických dat o provozu závislých na čase. Proto se v tomto případě hodnota travelTimeInSeconds rovná hodnotě historicTrafficTravelTimeInSeconds.

"summary": {
    "lengthInMeters": 2131,
    "travelTimeInSeconds": 248,
    "trafficDelayInSeconds": 0,
    "departureTime": "2025-03-29T08:00:20Z",
    "arrivalTime": "2025-03-29T08:04:28Z",
    "noTrafficTravelTimeInSeconds": 225,
    "historicTrafficTravelTimeInSeconds": 248,
    "liveTrafficIncidentsTravelTimeInSeconds": 248
},

Ukázkový dotaz

V druhém příkladu níže máme žádost o směrování v reálném čase, kde je teď čas odletu. Není explicitně zadaný v adrese URL, protože se jedná o výchozí hodnotu.

https://atlas.microsoft.com/route/directions/json?subscription-key={Your-Azure-Maps-Primary-Subscription-key}&api-version=1.0&query=47.6422356,-122.1389797:47.6641142,-122.3011268&travelMode=car&traffic=true&computeTravelTimeFor=all

Odpověď obsahuje souhrn, jak je znázorněno níže. Kvůli zahlcení je hodnota trafficDelaysInSeconds větší než nula. Je také větší než historická hodnotaTrafficTravelTimeInSeconds.

"summary": {
    "lengthInMeters": 16637, 
    "travelTimeInSeconds": 2905, 
    "trafficDelayInSeconds": 1604, 
    "departureTime": "2020-02-28T01:00:20+00:00",
    "arrivalTime": "2020-02-28T01:48:45+00:00", 
    "noTrafficTravelTimeInSeconds": 872, 
    "historicTrafficTravelTimeInSeconds": 1976, 
    "liveTrafficIncidentsTravelTimeInSeconds": 2905 
},

Vyžádání trasy a podrobností o noze

Ve výchozím nastavení Route vrátí pole souřadnic. Odpověď bude obsahovat souřadnice, které tvoří cestu v seznamu s názvem points . Odpověď na trasu zahrnuje také vzdálenost od začátku trasy a odhadovaný uplynulý čas. Tyto hodnoty lze použít k výpočtu průměrné rychlosti celé trasy.

Následující obrázek znázorňuje points element .

Points – element

Rozbalte point element a zobrazte seznam souřadnic pro cestu:

Rozbalený element points

Rozhraní API směrů trasy podporují různé formáty instrukcí, které je možné použít zadáním parametru instructionsType. Pokud chcete naformátovat pokyny pro snadné zpracování počítače, použijte instructionsType=coded. Pokud chcete zobrazit pokyny jako text pro uživatele, použijte instructionsType=tagged. Instrukce mohou být také formátovány jako text, kde jsou některé prvky instrukcí označeny a instrukce se zobrazí se speciálním formátováním. Další informace najdete v seznamu podporovaných typů instrukcí.

Když se vyžádá instrukce, vrátí odpověď nový prvek s názvem guidance . Element obsahuje dvě informace: směry otočením a guidance souhrnné pokyny.

Typ instrukcí

Element obsahuje pokyny pro cestu a obsahuje instructions instructionGroups souhrnné pokyny. Každý přehled instrukcí pokrývá část cesty, která může pokrýt více silnic. Rozhraní API vracejí podrobnosti o oddílech trasy. například rozsah souřadnic dopravního provozu nebo aktuální rychlost provozu.

Turn by turn by turn instructions

Sumarizování instrukcí

Žádost o trasu pro komerční vozidlo

Rozhraní API Mapy směrování azure podporuje směrování komerčních vozidel pokrývající směrování komerčních nákladních vozů. Rozhraní API vezměte v úvahu určená omezení. Například výška a hmotnost vozidla a jestli vozidlo přepraví nebezpečný náklad. Pokud například vozidlo přepravuje vznětitelné, vyhne se směrovací modul určitým tunelům, které jsou v blízkosti pohotových oblastí.

Ukázkový dotaz

Následující ukázkový požadavek se dotazuje na trasu pro komerční nákladní vůz. Nákladní vůz přepraví nebezpečný odpad třídy 1.

https://atlas.microsoft.com/route/directions/json?subscription-key={Your-Azure-Maps-Primary-Subscription-key}&api-version=1.0&vehicleWidth=2&vehicleHeight=2&vehicleCommercial=true&vehicleLoadType=USHazmatClass1&travelMode=truck&instructionsType=text&query=51.368752,-0.118332:41.385426,-0.128929

Rozhraní API pro trasy vrací směry, které pojmout rozměry nákladního vozu a nebezpečný odpad. Pokyny k trase můžete přečíst rozbalením guidance elementu .

Nákladní vůz s hazwaste třídy 1

Ukázkový dotaz

Změna třídy US Hazmat z výše uvedeného dotazu bude mít za následek jinou trasu, která tuto změnu přizpůsobí.

https://atlas.microsoft.com/route/directions/json?subscription-key={Your-Azure-Maps-Primary-Subscription-key}&api-version=1.0&vehicleWidth=2&vehicleHeight=2&vehicleCommercial=true&vehicleLoadType=USHazmatClass9&travelMode=truck&instructionsType=text&query=51.368752,-0.118332:41.385426,-0.128929

Níže uvedená odpověď je pro nákladní vůz s nebezpečným materiálem třídy 9, který je méně nebezpečný než nebezpečný materiál třídy 1. Když prvek rozbalíte, abyste si přečetli pokyny, všimnete si, že pokyny nejsou guidance stejné. Pro nákladní vůz, který přepravuje nebezpečný materiál třídy 1, najdete další pokyny na trasu.

Nákladní vůz s hazwaste třídy 9

Vyžádání informací o provozu na trase

S rozhraními API Mapy směr trasy Azure si vývojáři mohou vyžádat podrobnosti o jednotlivých typech oddílu tím, že do požadavku za sectionType includingou parametr . Můžete si například vyžádat informace o rychlosti pro každý segment dopravního provozu. Informace o různých podrobnostech, které si můžete vyžádat, najdete v seznamu hodnot pro klíč sectionType.

Ukázkový dotaz

Následující dotaz nastaví sectionType na traffic . Vyžádá si oddíly, které obsahují informace o provozu ze Seattlu do SanGu.

https://atlas.microsoft.com/route/directions/json?subscription-key={Your-Azure-Maps-Primary-Subscription-key}&api-version=1.0&sectionType=traffic&query=47.6062,-122.3321:32.7157,-117.1611

Odpověď obsahuje oddíly, které jsou vhodné pro provoz podél vhodných souřadnic.

Oddíly provozu

Tuto možnost můžete použít k obarvení oddílů při vykreslování mapy, jak je vidět na následujícím obrázku:

Barevné oddíly vykreslené na mapě

Výpočet a optimalizace trasy s několika zastávkami

Azure Mapy v současné době poskytuje dvě formy optimalizace tras:

  • Optimalizace na základě požadovaného typu trasy beze změny pořadí trasových bodů. Podporované typy tras najdete tady.

  • Optimalizace obchodního manažera na cestách, která mění pořadí trasových bodů, aby získala nejlepší objednávku k návštěvám jednotlivých zastavení

Pro vícenásobné směrování je možné v jednom požadavku na trasu zadat až 150 trasových bodů. Počáteční a koncová umístění souřadnic mohou být stejná, jako by tomu bylo u zpáteční cesty. K výpočtu trasy ale musíte zadat alespoň jeden další bod trasy. Do dotazu je možné přidat waypointy mezi souřadnice počátku a cíle.

Pokud chcete optimalizovat nejlepší pořadí pro návštěvu daných trasových bodů, musíte zadat computeBestOrder=true. Tento scénář se také označuje jako problém optimalizace obchodního manažera na cestách.

Ukázkový dotaz

Následující dotaz vyžádá cestu pro šest trasových bodů s computeBestOrder parametrem nastaveným na false . Je to také výchozí hodnota computeBestOrder parametru .

https://atlas.microsoft.com/route/directions/json?api-version=1.0&subscription-key={Your-Azure-Maps-Primary-Subscription-key}&computeBestOrder=false&query=47.606544,-122.336502:47.759892,-122.204821:47.670682,-122.120415:47.480133,-122.213369:47.615556,-122.193689:47.676508,-122.206054:47.495472,-122.360861

Odpověď popisuje délku cesty 140 851 metrů a že cesta bude trvat 9 991 sekund.

Ne optimalizační odpověď

Následující obrázek znázorňuje cestu, která je výsledkem tohoto dotazu. Tato cesta je jednou z možných tras. Není to optimální cesta na základě času nebo vzdálenosti.

Ne optimalizační image

Toto pořadí trasového bodu je: 0, 1, 2, 3, 4, 5 a 6.

Ukázkový dotaz

Následující dotaz vyžádá cestu pro stejných šest trasových bodů jako ve výše uvedeném příkladu. Tentokrát je parametr computeBestOrder nastavený na true (optimalizace prodejce na cestách).

https://atlas.microsoft.com/route/directions/json?api-version=1.0&subscription-key={Your-Azure-Maps-Primary-Subscription-key}&computeBestOrder=true&query=47.606544,-122.336502:47.759892,-122.204821:47.670682,-122.120415:47.480133,-122.213369:47.615556,-122.193689:47.676508,-122.206054:47.495472,-122.360861

V odpovědi je popsána délka cesty 91 814 metrů a že cesta bude trvat 7 797 sekund. Délka cesty i doba cesty jsou tady nižší, protože rozhraní API vrátilo optimalizovanou trasu.

Optimalizovaná odpověď

Následující obrázek znázorňuje cestu, která je výsledkem tohoto dotazu.

Optimalizovaná image

Optimální trasa má následující pořadí trasových bodů: 0, 5, 1, 2, 4, 3 a 6.

Tip

Optimalizované informace o pořadí trasových bodů ze služby Směrování poskytují sadu indexů. Ty vylučují původní a cílové indexy. Tyto hodnoty je potřeba zvýšit o 1, aby se zohlednil původ. Pak na konec přidejte cíl, abyste si prohlédněte úplný seřazený seznam trasových bodů.

Výpočet a odchylka alternativních tras pomocí podpůrných bodů

Můžou se zobrazit situace, kdy chcete rekonstruovat trasu tak, aby u referenční trasy vypočítal nulovou nebo více alternativních tras. Můžete například chtít zákazníkům ukázat alternativní trasy, které projdou vaší maloobchodní prodejnou. V takovém případě potřebujete umístění zaujaté pomocí podpůrných bodů. Toto jsou kroky k předsudkům umístění:

  1. Vypočítejte trasu tak, jak je, a získejte cestu z odpovědi na trasu.
  2. Pomocí cesty trasy vyhledejte požadovaná umístění podél cesty trasy nebo blízko této trasy. Můžete například použít rozhraní API azure Mapy bod zájmu nebo dotazovat vlastní data v databázi.
  3. Pořadí umístění na základě vzdálenosti od začátku trasy
  4. Přidejte tato umístění jako podpůrné body do nové žádosti o trasu do rozhraní API pro směrování po trasách. Další informace o podpůrných bodech najdete v dokumentaci k rozhraní POST Route Directions API.

Při volání rozhraní API pro směrovánítras po trase můžete nastavit minimální dobu odchylky nebo omezení vzdálenosti spolu s podpůrnými body. Tyto parametry použijte, pokud chcete nabízet alternativní trasy, ale chcete také omezit dobu cesty. Při použití těchto omezení budou alternativní trasy sledovat referenční trasu od bodu původu pro danou dobu nebo vzdálenost. Jinými slovy, ostatní trasy se od referenční trasy odchýlují podle ostatních omezení.

Následující obrázek je příkladem vykreslení alternativních tras se zadanými limity odchylek pro čas a vzdálenost.

Alternativní trasy

Použití směrovací služby ve webové aplikaci

sada Azure Maps Web SDK poskytuje modul služby. tento modul je pomocná knihovna usnadňující použití Azure Maps rozhraní REST api ve webových nebo Node.jsch aplikacích pomocí javascriptu nebo TypeScript. Modul služby lze použít k vykreslení vrácených tras na mapě. Modul automaticky určuje, které rozhraní API se má použít s požadavky GET a POST.

Další kroky

Pokud se chcete dozvědět víc, přečtěte si: