Skip to main content
¿Qué es una distance matrix? Tiempos de viaje, APIs y routing
Guides

¿Qué es una distance matrix? Tiempos de viaje, APIs y routing

Una distance matrix es una cuadrícula de tiempos y distancias de viaje entre muchos orígenes y destinos. Aprende cómo funciona una distance matrix API

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

Una distance matrix es una cuadrícula de tiempos y distancias de viaje entre muchos orígenes y muchos destinos. Es la estructura de datos que hay detrás de cada ranking de "tienda más cercana", cada decisión de dispatch de delivery y cada solver de optimización de rutas. Cuando una aplicación tiene que elegir el mejor entre muchos candidatos por tiempo de viaje, una distance matrix está haciendo el trabajo por debajo.

Esta guía explica qué es realmente una distance matrix, en qué se diferencia el tiempo de viaje de la distancia en línea recta, dónde aparecen las matrices en sistemas de producción y qué errores muerden a los equipos cuando el conjunto de entrada crece más allá de un puñado de puntos.

Qué es realmente una distance matrix

En su forma más simple, una distance matrix es una tabla bidimensional. Las filas son orígenes, las columnas son destinos y cada celda guarda dos números: una distancia y una duración. Con N orígenes y M destinos, la matriz tiene N por M celdas. Una request con 25 conductores y 25 trabajos produce 625 celdas en una sola llamada.

Los valores de esas celdas vienen de un motor de routing que recorre un grafo de red viaria real. Elige el camino más rápido desde cada origen a cada destino, suma los costes de los segmentos y devuelve el total. Eso es fundamentalmente distinto de un cálculo haversine, que dibuja una línea recta entre dos coordenadas e ignora que existen edificios, ríos y calles de un solo sentido.

Un par de coordenadas te dice dónde están dos puntos. Una distance matrix te dice cuánto cuesta realmente ir entre ellos.

Distancia vs duración

A menudo se llaman "distancia" tres números distintos, y confundirlos es el bug más común en código de routing.

Distancia haversine es la distancia de gran círculo entre dos pares de latitud y longitud. Es rápida de calcular, no requiere llamada de red, y está mal para cualquier tarea que implique conducir. Una distancia haversine de 2 km puede ser un trayecto de 7 km en coche cuando tienes en cuenta el río que no se puede cruzar.

Distancia por red viaria es la longitud del camino real conducible. Cuenta calles de un solo sentido, restricciones de giro y la topología del grafo viario. Esto es lo que devuelve una distance matrix API en el campo distance.

Duración con tráfico es el tiempo que tardará el viaje dadas las condiciones de tráfico actuales o predichas. Un tramo de autopista de 12 km son seis minutos a las 02:00 y veinticinco minutos a las 17:30. Los sistemas de producción que se preocupan por los ETAs piden duraciones conscientes del tráfico y pasan una hora de salida para que el motor de routing pueda modelar la congestión correctamente.

Para ranking y dispatch, la duración casi siempre gana a la distancia. A un conductor le da igual que el trabajo más cercano esté 800 metros más lejos si eso le ahorra cuatro minutos al volante.

Dónde aparecen las distance matrices

Las distance matrices funcionan en silencio bajo la mayoría de funciones logísticas y basadas en localización.

  • Asignación de conductores de delivery: cada pedido pendiente se cruza con cada conductor disponible. El dispatcher elige la celda con la duración más baja que respete capacidad de vehículo y restricciones de turno
  • Dispatch y rebalanceo de flotas: las plataformas de ride-hailing y last-mile calculan matrices entre vehículos y zonas de demanda cada pocos segundos para mantener los coches cerca de los pasajeros
  • Ranking de localizadores de tiendas y locales: en vez de devolver las cinco tiendas más cercanas por haversine, el localizador calcula una pequeña matriz desde la ubicación del usuario hasta los candidatos y los ordena por tiempo en coche
  • Cálculos de ETA a escala: los marketplaces con muchos pedidos simultáneos agrupan los ETAs en llamadas a matrix en vez de disparar miles de requests de ruta individuales
  • Solvers de VRP: los solvers de Vehicle Routing Problem (OR-Tools, jsprit, optimizadores comerciales) requieren una matriz de costes completa como input. La calidad de la solución de routing está limitada por la calidad de la matriz que les das
  • Selección de emplazamientos y planificación de territorios: los analistas calculan matrices entre ubicaciones candidatas y clústeres de clientes para elegir el almacén que minimiza el tiempo total de conducción

En todos estos, la matriz es la primitiva de cómputo masivo. Es lo que permite a un sistema razonar sobre "el mejor de muchos" sin pagar el coste de N por M llamadas individuales de routing.

Errores en producción

Las distance matrices son fáciles el primer día y se complican rápido.

La asimetría es lo normal. Las redes viarias reales tienen calles de un solo sentido, calzadas divididas y costes de giro asimétricos. La celda en (A, B) rara vez es igual a la celda en (B, A). Tratar la matriz como simétrica para ahorrar memoria es una de las causas clásicas de routing al revés en sistemas de dispatch.

El coste N por M. Una matriz de 100 por 100 son 10.000 celdas. Una matriz de 500 por 500 son 250.000 celdas. Los costes y la latencia crecen cuadráticamente. La mayoría de sistemas de producción agrupan las matrices en chunks (50 por 50 o 100 por 100), paralelizan las requests y cachean resultados que no cambian a menudo, como la matriz entre un conjunto fijo de almacenes y un conjunto fijo de tiendas.

Variación por hora del día. Una matriz calculada a las 03:00 no es válida a las 17:00. Si tu lógica de dispatch depende del tráfico, o pides una matriz consciente del tráfico en el momento de la decisión, o pre-calculas un pequeño conjunto de matrices por franjas horarias (hora punta de mañana, valle, hora punta de tarde) y eliges la correcta.

Batching y rate limits. Las distance matrix APIs cobran por elemento, no por request, y la mayoría de proveedores limitan el tamaño de una sola llamada. Planifica el chunking y el back-pressure desde el primer día en vez de descubrirlo a escala.

Calidad de coordenadas: garbage in, garbage out. Una matriz solo es tan buena como las coordenadas que la alimentan. Un geocode que cayó en el lado equivocado de una autovía dividida producirá una duración descabelladamente equivocada. Valida las coordenadas de entrada antes de que entren en la request a matrix.

Distance matrices en MapAtlas

La API Distance Matrix de MapAtlas calcula matrices N por M completas de tiempo y distancia de viaje sobre una red viaria real europea y global. Soporta perfiles de coche, camión, bicicleta y peatón, acepta requests conscientes del tráfico con una hora de salida y está pensada para los tamaños de batch que necesitan las cargas reales de dispatch y optimización.

Para cargas que van más allá del ranking, la API Distance Matrix se combina de forma natural con la API Optimize Route, que toma una matriz y un conjunto de paradas y devuelve una ruta ordenada que minimiza el tiempo total de conducción, y con la API de isócronas para filtros de "todo lo alcanzable en X minutos" que reducen el conjunto de candidatos antes de la llamada a matrix.

Una distance matrix no es glamurosa. Es solo una cuadrícula de números. Pero es la cuadrícula de números que convierte "encuentra el mejor de muchos" de una pesadilla de N por M llamadas de routing en una sola request masiva, y acertar con esa pieza de datos es lo que separa un producto logístico real de una demo con cinco pins en un mapa.

Preguntas frecuentes

¿Qué es una distance matrix?

Una distance matrix es una cuadrícula N por M de tiempos y distancias de viaje entre un conjunto de orígenes y un conjunto de destinos. Cada celda responde a una sola pregunta: cuánto tarda ir del origen i al destino j, y cuánto hay de distancia. Las APIs modernas de distance matrix calculan los valores sobre una red viaria real en vez de usar distancias en línea recta, así que los resultados tienen en cuenta calles de un solo sentido, restricciones de giro y geometría enrutable.

¿Cuál es la diferencia entre distancia y duración?

La distancia es cuánto recorres a lo largo de la red viaria en metros o kilómetros. La duración es cuánto tarda, en segundos, contando límites de velocidad, tráfico y clase de carretera. No son intercambiables. Dos rutas pueden tener la misma distancia y duraciones muy distintas, y la mayoría de casos de uso en producción (ETA, dispatch, ranking) se preocupan por la duración. Una buena distance matrix API devuelve ambas para cada celda.

¿Cuándo debería usar una distance matrix en vez de rutas individuales?

Usa una distance matrix siempre que necesites comparar muchos candidatos: rankear las cinco tiendas más cercanas de cincuenta, asignar un envío al conductor más cercano de veinte, o alimentar un solver de Vehicle Routing Problem. Llamar a un endpoint de routing N por M veces es lento y caro. Un endpoint de matrix devuelve los mismos datos en una sola request, optimizado para cómputo masivo.

¿Las distance matrices son simétricas?

Casi nunca en redes viarias reales. Conducir de A a B rara vez es lo mismo que de B a A por las calles de un solo sentido, las autovías con calzadas separadas, las restricciones de giro y el tráfico asimétrico. Una distance matrix API en producción devuelve una cuadrícula N por M completa, no la mitad triangular. Si colapsas la matriz para ahorrar memoria, vas a mandar a los conductores por el lado equivocado de la calzada.

¿Le resultó útil? Compártalo.

Sobre el 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 los artículos
Volver al blog