Skip to main content
O que é uma Distance Matrix? Tempos de Viagem, APIs e Roteirização
Guides

O que é uma Distance Matrix? Tempos de Viagem, APIs e Roteirização

Uma distance matrix é uma grade de tempos de viagem e distâncias entre muitas origens e destinos. Veja como uma distance matrix API funciona

Brent van der Heiden6 min read
#distance matrix#distance matrix api#travel time#routing#fleet dispatch#maps api

Uma distance matrix é uma grade de tempos de viagem e distâncias entre muitas origens e muitos destinos. É a estrutura de dados por trás de cada ranking de "loja mais próxima", cada decisão de dispatch de entrega e cada solver de otimização de rotas. Sempre que uma aplicação precisa escolher o melhor entre muitos candidatos por drive time, uma distance matrix está fazendo o trabalho por baixo dos panos.

Este guia explica o que uma distance matrix realmente é, como o tempo de viagem difere da distância em linha reta, onde matrices aparecem em sistemas de produção e quais armadilhas mordem os times assim que o conjunto de inputs cresce além de um punhado de pontos.

O que uma Distance Matrix Realmente É

Em sua forma mais simples, uma distance matrix é uma tabela bidimensional. As linhas são origens, as colunas são destinos, e cada célula guarda dois números: uma distance e uma duration. Com N origens e M destinos, a matrix tem N vezes M células. Um request com 25 motoristas e 25 jobs produz 625 células em uma única chamada.

Os valores nessas células vêm de uma routing engine que percorre um grafo de malha viária real. Ela escolhe o caminho mais rápido de cada origem para cada destino, soma os custos dos segmentos e retorna o total. Isso é fundamentalmente diferente de um cálculo haversine, que desenha uma linha reta entre duas coordenadas e ignora o fato de que prédios, rios e ruas de mão única existem.

Um par de coordenadas diz onde dois pontos estão. Uma distance matrix diz quanto custa de fato ir de um ao outro.

Distance vs Duration

Três números diferentes costumam ser chamados de "distance", e confundi-los é o bug mais comum em código de roteirização.

Haversine distance é a distância great-circle entre dois pares de latitude e longitude. É rápida de calcular, não exige network call, e está errada para qualquer tarefa que envolva dirigir. Uma haversine distance de 2 km pode ser um trajeto de 7 km de carro depois que você considera o rio que não dá para atravessar.

Road-network distance é o comprimento do caminho dirigível real. Considera ruas de mão única, restrições de conversão e a topologia do grafo viário. É isso que uma distance matrix API retorna no campo distance.

Duration with traffic é o tempo que o trajeto vai levar dadas as condições de tráfego atuais ou previstas. Um segmento de rodovia de 12 km são seis minutos às 02:00 e vinte e cinco minutos às 17:30. Sistemas de produção que se importam com ETAs pedem durations traffic-aware e passam um departure time para que a routing engine consiga modelar o congestionamento corretamente.

Para ranking e dispatch, duration quase sempre vence distance. Um motorista não se importa que o job mais próximo está 800 metros mais longe se isso economiza quatro minutos de trajeto.

Onde Distance Matrices Aparecem

Distance matrices estão silenciosamente rodando por baixo da maioria das features logísticas e baseadas em localização.

  • Atribuição de motoristas de entrega: cada pedido pendente é cruzado com cada motorista disponível. O dispatcher escolhe a célula com a menor duration que respeita capacidade do veículo e restrições de turno
  • Dispatch e rebalanceamento de frota: plataformas de ride-hailing e last-mile calculam matrices entre veículos e zonas de demanda a cada poucos segundos para manter os carros próximos dos passageiros
  • Ranking de locator de lojas e estabelecimentos: em vez de retornar as cinco lojas mais próximas por haversine, o locator calcula uma matrix pequena da localização do usuário até os candidatos e rankeia por drive time
  • Cálculos de ETA em escala: marketplaces com muitos pedidos simultâneos agrupam ETAs em chamadas de matrix em vez de disparar milhares de requests de rota individual
  • VRP solvers: solvers de vehicle routing problem (OR-Tools, jsprit, otimizadores comerciais) exigem uma matrix de custo completa como input. A qualidade da solução de roteirização é limitada pela qualidade da matrix que você alimenta
  • Seleção de site e planejamento territorial: analistas calculam matrices entre localizações candidatas e clusters de clientes para escolher o armazém que minimiza o drive time total

Em todos esses, a matrix é o primitivo de computação em lote. É o que permite a um sistema raciocinar sobre "o melhor entre muitos" sem pagar o custo de N vezes M chamadas individuais de roteirização.

Armadilhas em Produção

Distance matrices são fáceis no dia um e ficam difíceis rápido.

Assimetria é o padrão. Malhas viárias reais têm ruas de mão única, vias com canteiro central e custos de conversão assimétricos. A célula em (A, B) raramente é igual à célula em (B, A). Tratar a matrix como simétrica para economizar memória é uma das causas clássicas de roteirização wrong-way em sistemas de dispatch.

O custo N vezes M. Uma matrix 100 por 100 são 10.000 células. Uma matrix 500 por 500 são 250.000 células. Custo e latência crescem quadraticamente. A maioria dos sistemas de produção agrupa matrices em chunks (50 por 50 ou 100 por 100), paraleliza os requests e cacheia resultados que não mudam com frequência, como a matrix entre um conjunto fixo de armazéns e um conjunto fixo de lojas.

Variância de hora do dia. Uma matrix calculada às 03:00 não é válida às 17:00. Se sua lógica de dispatch depende de tráfego, ou peça uma matrix traffic-aware no momento da decisão ou pré-compute um conjunto pequeno de matrices time-bucketed (pico da manhã, off-peak, pico da noite) e escolha a certa.

Batching e rate limits. Distance matrix APIs cobram por elemento, não por request, e a maioria dos provedores limita o tamanho de uma única chamada. Planeje chunking e back-pressure desde o dia um em vez de descobrir em escala.

Qualidade de coordenadas in, garbage out. Uma matrix é tão boa quanto as coordenadas que a alimentam. Um geocode que caiu no lado errado de uma rodovia com canteiro central vai produzir uma duration absurdamente errada. Valide as coordenadas de input antes que entrem no request da matrix.

Distance Matrices no MapAtlas

A MapAtlas Distance Matrix API calcula matrices N por M completas de tempo de viagem e distância sobre uma malha viária europeia e global real. Suporta perfis de carro, caminhão, bicicleta e pedestre, aceita requests traffic-aware com departure time, e foi construída para os tamanhos de batch que cargas reais de dispatch e otimização precisam.

Para cargas que vão além de ranking, a Distance Matrix API combina naturalmente com a Optimize Route API, que pega uma matrix e um conjunto de paradas e retorna uma rota ordenada que minimiza o drive time total, e com a Isochrone API para filtros de "tudo alcançável dentro de X minutos" que pré-reduzem o conjunto de candidatos antes da chamada de matrix.

Uma distance matrix não é glamourosa. É só uma grade de números. Mas é a grade de números que transforma "encontre o melhor entre muitos" de um pesadelo de roteirização N por M em um único request em lote, e acertar essa peça de dados é o que separa um produto logístico real de uma demo com cinco pins em um mapa.

Perguntas frequentes

O que é uma distance matrix?

Uma distance matrix é uma grade N por M de tempos de viagem e distâncias entre um conjunto de origens e um conjunto de destinos. Cada célula responde uma única pergunta: quanto tempo leva para ir da origem i ao destino j, e qual é a distância. Distance matrix APIs modernas calculam os valores sobre uma malha viária real em vez de distâncias em linha reta, então os resultados consideram ruas de mão única, restrições de conversão e geometria roteável.

Qual a diferença entre distance e duration?

Distance é quão longe você viaja pela malha viária em metros ou quilômetros. Duration é quanto tempo leva, em segundos, considerando limites de velocidade, tráfego e classe de via. Não são intercambiáveis. Duas rotas podem ter a mesma distance e durations muito diferentes, e a maioria dos use cases de produção (ETA, dispatch, ranking) se importa com duration. Uma boa distance matrix API retorna ambos para cada célula.

Quando devo usar uma distance matrix em vez de rotas individuais?

Use uma distance matrix sempre que precisar comparar muitos candidatos: rankear as cinco lojas mais próximas dentre cinquenta, atribuir uma entrega ao motorista disponível mais próximo dentre vinte, ou alimentar um solver de vehicle routing problem. Chamar um endpoint de roteirização individual N por M vezes é lento e caro. Um endpoint de matrix retorna os mesmos dados em um único request, otimizado para computação em lote.

Distance matrices são simétricas?

Quase nunca em malhas viárias reais. O trajeto de A para B raramente é igual ao de B para A por causa de ruas de mão única, rodovias com canteiro central, restrições de conversão e tráfego assimétrico. Uma distance matrix API de produção retorna uma grade N por M completa, não uma metade triangular. Se você colapsar a matrix para economizar memória, vai mandar motoristas pelo lado errado da via.

Achou útil? Compartilhe.

Sobre o autor

Brent van der Heiden

Escrito por

Brent van der Heiden

Co-Founder & CEO at MapAtlas

Brent built MapAtlas out of a conviction that developers deserve location APIs with fair pricing and genuine end-user privacy. He writes about geospatial infrastructure, AI search visibility, and how location data powers the products people rely on every day.

Ver todos os artigos
Voltar ao blog