Saiba mais sobre localização de rotas no Azure Maps

Concluído

Nesta unidade, vamos analisar globalmente as funcionalidades e aplicações do Azure Maps.

Introdução ao Azure Maps

Abordamos extensivamente as funcionalidades de localização de rotas do Azure Maps neste módulo. No entanto, há muitas outras utilizações que nada têm a ver com estradas e viagens. A localização de rotas é uma das funcionalidades mais complexas, uma vez que envolve um vasto conhecimento das condições rodoviárias atuais, qualidade das estradas, horários de ferries, regulamentos rodoviários e uma grande quantidade de outros dados. Uma utilização mais simples dos mapas é em grande parte como imagem de fundo, para apresentar dados relevantes para qualquer localização específica no mapa. Um exemplo são os dados sísmicos. A imagem seguinte é conhecida como mapa térmico e mostra o número de sismos significativos durante um determinado período de tempo. Há um gradiente de calor, normalmente de violeta a azul, verde, amarelo, laranja e depois vermelho. Quanto mais, e mais fortes, forem os sismos, maior o calor.

Screenshot showing a heat map for the ring of fire.

O nome círculo de fogo é óbvio.

Uma das principais funcionalidades do Azure Maps é a capacidade de ampliar e reduzir, de uma vista de todo o mundo para uma vista de apenas algumas ruas.

Vamos ver a seguir como é criada uma apresentação de mapa complexa.

Mapas em camadas

O Azure Maps é construído em camadas. Pode escolher as camadas a apresentar. Vamos ilustrar as camadas com um exemplo, uma área de Nova Iorque.

A camada base contém o contorno do terreno, completado com parques.

Screenshot showing the New York base layer of Azure Maps.

Vamos adicionar a camada de trânsito à base. A camada de trânsito adiciona todas as estradas conhecidas, principais e secundárias. Se analisarmos atentamente, podemos ver que também foram adicionadas rotas de ferries. Também são adicionadas linhas ferroviárias.

Screenshot showing the New York transit layer of Azure Maps.

Além do trânsito, adicionamos a camada de etiquetas. Agora, está a começar a parecer um mapa.

Screenshot showing the New York labels layer of Azure Maps.

Podíamos parar na camada de etiquetas. Uma camada adicional é chamada de fluxo. Esta camada mostra todos os perigos de trânsito. Não faltam perigos em Nova Iorque!

Screenshot showing the New York flow layer of Azure Maps.

Quando programamos com chamadas ao Azure Maps, podemos adicionar as nossas próprias camadas. Uma camada óbvia a adicionar seria a melhor rota encontrada de A para B. Poderíamos adicionar camadas meteorológicas e camadas com dados espaciais, se necessário. Obviamente chega a um ponto em que temos demasiadas camadas. Repare como a camada de fluxo acima obscurece algumas das camadas de etiquetas. As camadas têm uma prioridade, para que possa determinar que informação fica obscura.

Localização de rotas

As informações de roteamento estão disponíveis para quase todos os países/regiões do mundo. No entanto, as rotas com informações de trânsito atuais só estão disponíveis para alguns e as rotas especificamente para camiões estão disponíveis para menos ainda. Na América do Norte, para os EUA, Canadá e México, estão disponíveis todos os níveis de rotas.

Calcular uma rota de tráfego de A para B requer obviamente dados detalhados: é necessário conhecer cada junção, rua de sentido único, desobstrução de ponte e declive da estrada. Além disso, são necessárias informações precisas sobre o veículo. Estas informações incluem o aspeto físico: comprimento, largura, altura e peso. Também os dados de eficiência do motor: consumo de combustível, eficiência de aceleração, eficiência ascendente, etc. São necessários dados diferentes do motor para um veículo elétrico.

Pode ser especificada uma grande quantidade de dados físicos e dados de eficiência do motor com a API do Azure Maps. No entanto, existem predefinições decentes. Como só estamos a divertir-nos nesta fase, a definição fuelEnergyDensityInMJoulesPerLiter não nos interessa muito neste momento!

Na nossa aplicação de exemplo, especificamos três veículos: bicicleta, automóvel e camião. Definimos a largura, altura e comprimento dos três. Para o camião, adicionamos uma quarta variável, a carga. A carga inclui ainda materiais perigosos!

Materiais perigosos

Uma funcionalidade divertida da aplicação que vamos criar é a capacidade de definir uma classificação de material perigoso para o nosso camião.

Existem nove classificações de materiais perigosos acordadas pelo Comité de Especialistas das Nações Unidas sobre o Transporte de Mercadorias Perigosas. Estas nove classes estão resumidas na tabela seguinte, juntamente com a classe de perigo nos EUA. Estas classificações aplicam-se a todas as formas de transporte: estrada, caminhos-de-ferro, mar, ar e vias navegáveis interiores. A ordem numérica das classes não indica um maior ou menor grau de perigo.

Classificação Description
USHazmatClass1 Explosivos
USHazmatClass2 Gases
USHazmatClass3 Líquido inflamável ou combustível
USHazmatClass4 Sólido inflamável, espontaneamente inflamável, perigoso quando molhado
USHazmatClass5 Oxidante e peróxido orgânico
USHazmatClass6 Tóxico, infecioso ou com risco de inalação
USHazmatClass7 Radioativo
USHazmatClass8 Corrosivo
USHazmatClass9 Diversos

Com a classificação indicada, certas estradas não podem ser utilizadas. Os três primeiros têm um efeito significativo numa rota. Por exemplo, muitos túneis estão fechados a carga explosiva ou inflamável. Ao testar a sua aplicação, pode centrar-se nas rotas e ver como as rotas dos camiões divergem das rotas dos automóveis, ou dos camiões que transportam outros conteúdos, quando está envolvida carga perigosa. Há maior probabilidade de serem encontradas restrições rodoviárias em áreas muito populosas, por razões óbvias.

Unidades do Azure Maps

O Azure Maps utiliza o sistema métrico como base para os cálculos. Por exemplo, o comprimento, a largura e a altura dos veículos são especificados em metros. Além disso, o consumo de combustível é armazenado em litros e utilizado em constantes como currentFuelInLitres, constantSpeedConsumptionInLitersPerHundredkm e fuelEnergyDensityInMJoulesPerLiter. Não abordamos modelos de consumo de combustível para motores neste módulo, mas pode reajustar estes parâmetros para divergir do modelo de consumo predefinido.

Digamos que queria que o seu utilizador visse milhas, ou EUA, ou Imperial, galões, por exemplo. Precisaria de multiplicar os valores devolvidos pelo Azure Maps por constantes apropriadas.

Azure Maps e Azure IoT

O Azure IoT, a "Internet das Coisas", fornece recursos da cloud para ler dados de telemetria de milhares de dispositivos remotos e armazenar e processar os dados com serviços cloud de back-end. Os dados de telemetria podem ser temperatura, velocidade, humidade, aceleração, pressão e assim por diante. Mas a telemetria também inclui dados de localização: latitude, longitude e, opcionalmente, altitude. Devido ao valor de conhecer a localização dos dispositivos móveis, uma utilização popular do Azure IoT é a gestão da frota. A telemetria de localização é onde o Azure IoT e o Azure Maps se encontram.

Além da gestão da frota, outros cenários populares baseados na localização incluem a deteção de recursos e aplicações de cidade inteligente. Pode imaginar que se gerisse um grupo de edifícios inteligentes, todos com sensores de temperatura, humidade e segurança, ver a localização exata no mapa de cada dispositivo poderia ser valioso e tranquilizador. Talvez o mapa com as localizações do dispositivo fizesse parte de um dashboard de IoT. Os outros elementos do dashboard podem mostrar telemetria recebida e fornecer alguns comandos para enviar aos dispositivos.

A IoT está relacionada com dispositivos remotos que enviam dados para um único serviço cloud, conhecido como um Hub IoT, para armazenamento e processamento. Consulte os módulos do Learn que fornecem material introdutório sobre a IoT e um que combina o Azure Maps e a IoT, na secção Resumo deste módulo.

Efetuar chamadas para o Azure Maps através de JavaScript

No debate acima, lembrar-se-á de que a vista do mapa pode ser ampliada em grande detalhe ou reduzida para ver o mundo inteiro. Precisamos de algum controlo sobre a vista. Este controlo é efetuado ao definir um ponto de partida e de fim para uma rota e ao chamar uma função de câmara no Azure Maps. Estes pontos especificam uma caixa delimitadora para a região que precisa de ser apresentada por predefinição. O utilizador pode alterar o zoom, mas a primeira vista mostrará toda a rota.

Também mencionado acima está o conceito de camadas. Na nossa aplicação, adicionamos uma camada para mostrar a rota, com determinadas cores e espessuras de linha para os três veículos. Assim, as três rotas podem ser apresentadas ao mesmo tempo. Alguns ícones gráficos são adicionados a uma segunda camada para mostrar os pontos de partida, fim e intermédios da rota.

Os mesmos pontos de partida e de fim são utilizados para configurar as coordenadas. As coordenadas são a base da chamada principal da nossa aplicação. Um objeto routeURL é criado e pode ser efetuada uma chamada para calculateRouteDirections. Repare que existe um valor de tempo limite em milissegundos. Pode demorar alguns segundos a calcular a melhor rota de bicicleta de Seattle para Miami! E talvez queira desistir da sua rota ao descobrir que está a demorar muito tempo.

O seguinte código é um fragmento do código de origem na unidade seguinte. Mostra a chamada mais importante e como devolve o 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();
    ...

Deixemo-nos de rodeios e vamos lá criar isto!