Lär dig mer om ruttsökning i Azure Maps

Slutförd

I den här lektionen ger vi översiktlig information om funktioner och program i Azure Maps.

Introduktion till Azure Maps

I den här modulen går vi noggrant igenom funktionerna för ruttsökning i Azure Maps. Det finns dock många andra användningsområden som inte har något att göra med vägar och resor. Ruttsökning är en av de mer komplexa funktionerna, eftersom den omfattar omfattande uppgifter om aktuella vägförhållanden, vägkvalitet, fartygstidtabeller, vägbestämmelser och en mängd andra data. En enklare användning av kartorna är att använda dem i stort sett som bakgrund, för att visa data som är relevanta för en viss plats på kartan. Ett exempel är jordbävningsdata. På följande bild finns vad som kallas en termisk karta, och den visar antalet betydande jordbävningar under en viss tidsperiod. Det finns en värmegradering, vanligtvis från violett, via blått, grönt, till gult, orange och rött. Ju mer omfattande och starkare jordbävningar, desto högre värme.

Screenshot showing a heat map for the ring of fire.

Namnet Eldringen är uppenbart passande.

En viktig funktion i Azure Maps är möjligheten att zooma in och ut, från en vy över hela världen till en vy över bara några gator.

Nu ska vi titta på hur en komplex kartvisning konstrueras.

Skiktade kartor

Azure Maps skapas i skikt. Du kan välja vilka skikt som ska visas. Nu ska vi illustrera skikten med ett exempel, ett område i New York.

Basskiktet innehåller en kontur för terräng, komplett med parker.

Screenshot showing the New York base layer of Azure Maps.

Nu ska vi lägga till transportskiktet till basskiktet. Transportskiktet lägger till alla kända vägar, större och mindre. Om du tittar närmare kan du se att det också har lagt till rutter via färjor. Järnvägslinjer läggs också till.

Screenshot showing the New York transit layer of Azure Maps.

Ovanpå transporter lägger vi till etikettskiktet. Nu börjar det se ut som en karta.

Screenshot showing the New York labels layer of Azure Maps.

Vi skulle kunna nöja oss efter etikettskiktet. Ett ytterligare skikt kallas flöde. Det här skiktet visar alla trafikfaror. Ingen brist på faror i New York!

Screenshot showing the New York flow layer of Azure Maps.

När vi programmerar med anrop till Azure Maps kan vi lägga till egna skikt. Ett uppenbart skikt som ska läggas till är den bästa rutten från A till B. Vi kan lägga till väderskikt och skikt som innehåller rumsliga data, om det behövs. Det kommer självklart till en punkt när du har för många skikt. Observera hur flödesskiktet ovan skymmer en del av etikettskiktet. Skikt har en prioritet, så du kan bestämma vilken information som ska döljas.

Ruttsökning

Routningsinformation är tillgänglig för nästan alla länder/regioner i världen. Ruttläggning med aktuell trafikinformation är dock bara tillgängligt för en del länder, och ruttläggning specifikt för lastbilar för ännu färre. I Nordamerika, för USA, Kanada och Mexiko, är alla nivåer för ruttläggning tillgängliga.

För att beräkna en trafikrutt från A till B är det uppenbart att det krävs detaljerad information: alla korsningar, enkelriktade gator, broregler, väggraderingar med mera måste tas med. Dessutom krävs korrekt information om fordonet. Den här informationen omfattar det fysiska: längd, bredd, höjd, vikt. Dessutom motoreffektsdata: bränsleförbrukning, accelerationseffekt, effekt i uppförsbacke och så vidare. Andra motordata krävs för ett eldrivet fordon.

En mängd fysiska data och motoreffektsdata kan anges med hjälp av Azure Maps API. Det finns dock rimliga standardvärden. Och eftersom vi bara har lite kul i det här skedet behöver vi inte tänka på fuelEnergyDensityInMJoulesPerLiter-inställningen just nu!

I vår exempelapp anger vi tre fordon, en cykel, en bil och en lastbil. Vi anger bredd, höjd och längd för alla tre. För lastbilen lägger vi till en fjärde variabel, lasten. Lasten tillför farliga material i beräkningen!

Farliga material

En rolig funktion i appen som vi ska bygga, är möjligheten att ställa in en klassificering för farliga material för lastbilen.

Det finns nio klassificeringar för farligt material, som överenskommits av FN:s expertkommitté för transport av farligt gods. Dessa nio klasser sammanfattas i följande tabell, tillsammans med de amerikanska benämningarna. Dessa klassificeringar gäller för alla former av transporter: väg, järnväg, hav, luft och inre vattenvägar. Den numeriska ordningen för klasserna anger inte en större eller mindre risknivå.

Klassificering beskrivning
Klass 1 (USHazmatClass1) Explosiva ämnen och föremål
Klass 2 (USHazmatClass2) Gaser
Klass 3 (USHazmatClass3) Brandfarliga vätskor
Klass 4 (USHazmatClass4) Brandfarliga fasta ämnen
Klass 5 (USHazmatClass5) Oxiderande ämnen och organiska peroxider
Klass 6 (USHazmatClass6) Giftiga och smittfarliga ämnen
Klass 7 (USHazmatClass7) Radioaktiva ämnen
Klass 8 (USHazmatClass8) Frätande ämnen
Klass 9 (USHazmatClass9) Diverse

Med hänsyn tagen till klassificeringen kan vissa vägar inte användas. De tre första har en betydande inverkan på en rutt. Många tunnlar är till exempel stängda för explosivt eller brandfarligt gods. När du testar din app kan du finslipa rutterna och se hur lastbilsrutter skiljer sig från bilrutter, eller lastbilar som transporterar övrigt innehåll, när det gäller farligt gods. Vägbegränsningar finns troligast i mycket tätbefolkade områden, av uppenbara skäl.

Azure Maps-enheter

Azure Maps använder det metriska systemet som bas för beräkningar. Till exempel anges längd, bredd och höjd på fordon i meter. Dessutom lagras bränsleförbrukning som liter och används i konstanter som currentFuelInLitres, constantSpeedConsumptionInLitersPerHundredkmoch fuelEnergyDensityInMJoulesPerLiter. Vi går inte in på modeller för motorbränsleförbrukning i den här modulen, men du kan ändra parametrarna så att de avviker från standardförbrukningsmodellen.

Anta till exempel att du vill att användaren ska se miles eller gallon (USA) eller imperial gallon. Då måste du multiplicera värdena som returneras av Azure Maps med lämpliga konstanter.

Azure Maps och Azure IoT

Azure IoT, ”Sakernas Internet”, tillhandahåller molnresurser för läsning av telemetridata från tusentals fjärranslutna enheter, samt lagring och bearbetning av data med molnbaserade servertjänster. Telemetridata kan vara temperatur, hastighet, fuktighet, acceleration, tryck och så vidare. Men telemetri innehåller också platsdata: latitud, longitud och som tillval altitud. Eftersom det är värdefullt att veta platsen för rörliga enheter är bilparkshantering en populär användning av Azure IoT. Platstelemetri är den punkt där Azure IoT och Azure Maps möts.

Förutom hantering av bilparker finns det andra populära platsbaserade scenarier som tillgångsspårning och program för smarta städer. Om du tänker dig att du hanterar en grupp smarta byggnader med temperatur-, fuktighets- och säkerhetssensorer som visar den exakta kartplatsen för varje enhet är det lätt att förstå att det kan vara värdefull information. Kanske är kartan med enhetsplatserna en del av en IoT-instrumentpanel. De andra elementen på instrumentpanelen kan visa inkommande telemetri, och tillhandahålla vissa kommandon som ska skickas till enheterna.

IoT handlar om fjärrenheter som skickar data till en molntjänst, som kallas IoT Hub, för lagring och bearbetning. Ta en titt på de utbildningsmoduler som tillhandahåller introduktionsmaterial om IoT, och en som kombinerar Azure Maps och IoT, i avsnittet Sammanfattning i den här modulen.

Göra anrop till Azure Maps med hjälp av JavaScript

I beskrivningen ovan såg du att kartvisningen kan zoomas in till mycket detaljerad, eller zoomas ut för att täcka hela världen. Vi behöver en viss kontroll över vyn. Den här kontrollen får vi genom att ställa in en start- och slutpunkt för en rutt, och anropa en kamerafunktion i Azure Maps. Dessa punkter anger en avgränsningsruta för den region som måste visas som standard. Användaren kan ändra zoomningen, men den första vyn visar hela rutten.

Som också nämnts ovan har vi begreppet skikt. I vår app lägger vi till ett skikt för att visa rutten, med vissa färger och linjetjocklekar för de tre fordonen. Därför kan alla tre rutterna visas samtidigt. Vissa grafikikoner läggs till i ett andra skikt för att visa start- och slutpunkter och mellanliggande punkter på rutten.

Samma start- och slutpunkter används för att ställa in koordinater. Koordinaterna utgör grunden för appens huvudsakliga anrop. Ett routeURL-objekt skapas och ett anrop till calculateRouteDirections kan göras. Observera att det finns ett timeoutvärde i millisekunder. Det kan ta några sekunder att beräkna den bästa cykelvägen från Seattle till Miami! Du kanske även vill avbryta ruttsökningen om den tar för lång tid.

Följande kod är ett kodfragment från källkoden i nästa lektion. Det visar det viktiga anropet och hur det returnerar directions.

    ...
    routeURL.calculateRouteDirections(atlas.service.Aborter.timeout(milliseconds), coordinates, {
                    travelMode: mode,
                    vehicleWidth: vWidth,
                    vehicleHeight: vHeight,
                    vehicleLength: vLength,
                    vehicleLoadType: vLoad
                }).then((directions) => {

                    // Get data features from the response.
                    var data = directions.geojson.getFeatures();
    ...

Nu ska vi sluta prata och börja skapa appen!