Skip to main content
Cos'è una distance matrix? Tempi di percorrenza, API e routing
Guides

Cos'è una distance matrix? Tempi di percorrenza, API e routing

Una distance matrix è una griglia di tempi e distanze di viaggio tra molte origini e destinazioni. Scopri come funziona una distance matrix API

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

Una distance matrix è una griglia di tempi e distanze di viaggio tra molte origini e molte destinazioni. È la struttura dati dietro ogni ranking del "negozio più vicino", ogni decisione di dispatch delle consegne e ogni solver di ottimizzazione dei percorsi. Ogni volta che un'applicazione deve scegliere il migliore tra molti candidati in base al tempo di guida, sotto sotto sta lavorando una distance matrix.

Questa guida spiega cos'è davvero una distance matrix, in che cosa il tempo di viaggio differisce dalla distanza in linea retta, dove compaiono le matrici nei sistemi in produzione e quali insidie si presentano quando l'insieme di input cresce oltre una manciata di punti.

Cos'è davvero una distance matrix

Nella sua forma più semplice, una distance matrix è una tabella bidimensionale. Le righe sono origini, le colonne destinazioni, e ogni cella contiene due numeri: una distanza e una durata. Con N origini e M destinazioni, la matrice ha N per M celle. Una richiesta con 25 driver e 25 job produce 625 celle in una sola chiamata.

I valori in quelle celle provengono da un routing engine che percorre il grafo di una rete stradale reale. Sceglie il percorso più veloce da ogni origine a ogni destinazione, somma i costi dei segmenti e restituisce il totale. È qualcosa di fondamentalmente diverso da un calcolo haversine, che traccia una linea retta tra due coordinate e ignora il fatto che esistono edifici, fiumi e sensi unici.

Una coppia di coordinate ti dice dove si trovano due punti. Una distance matrix ti dice quanto costa davvero spostarsi tra di loro.

Distanza vs durata

Tre numeri diversi vengono spesso chiamati "distanza", e confonderli è il bug più comune nel codice di routing.

La distanza haversine è la distanza ortodromica tra due coppie di latitudine e longitudine. È veloce da calcolare, non richiede chiamate di rete ed è sbagliata per qualsiasi compito che coinvolga la guida. Una distanza haversine di 2 km può corrispondere a una guida di 7 km una volta che si tiene conto del fiume che non puoi attraversare.

La distanza sulla rete stradale è la lunghezza del percorso effettivamente percorribile. Tiene conto di sensi unici, restrizioni di svolta e topologia del grafo stradale. È quello che una distance matrix API restituisce nel campo distance.

La durata con traffico è il tempo che il viaggio impiegherà date le condizioni di traffico attuali o previste. Un segmento autostradale di 12 km dura sei minuti alle 02:00 e venticinque minuti alle 17:30. I sistemi in produzione che si occupano di ETA chiedono durate traffic-aware e passano un orario di partenza così che il routing engine possa modellare correttamente la congestione.

Per il ranking e il dispatch, la durata vince quasi sempre sulla distanza. A un driver non importa che il job più vicino sia 800 metri più lontano se gli fa risparmiare quattro minuti di guida.

Dove compaiono le distance matrix

Le distance matrix girano silenziosamente sotto la maggior parte delle funzionalità logistiche e location-aware.

  • Assegnazione delivery driver: ogni ordine in attesa viene confrontato con ogni driver disponibile. Il dispatcher sceglie la cella con la durata più bassa che rispetta capacità del veicolo e vincoli di turno
  • Dispatching e ribilanciamento di flotte: ride-hailing e piattaforme di last-mile calcolano matrici tra veicoli e zone di domanda ogni pochi secondi per tenere le auto vicine ai passeggeri
  • Ranking di store locator: invece di restituire i cinque negozi più vicini in linea d'aria, il locator calcola una piccola matrice dalla posizione dell'utente ai candidati e li ordina per tempo di guida
  • Calcoli ETA su scala: i marketplace con molti ordini simultanei batchano gli ETA in chiamate matrix invece di lanciare migliaia di richieste single-route
  • VRP solver: i solver di vehicle routing problem (OR-Tools, jsprit, ottimizzatori commerciali) richiedono una matrice di costo completa come input. La qualità della soluzione di routing è limitata dalla qualità della matrice che gli fornisci
  • Site selection e pianificazione del territorio: gli analisti calcolano matrici tra location candidate e cluster di clienti per scegliere il magazzino che minimizza il tempo totale di guida

In tutti questi casi, la matrice è la primitiva per il calcolo bulk. È ciò che permette a un sistema di ragionare sul "migliore tra molti" senza pagare il costo di N per M chiamate di routing individuali.

Insidie in produzione

Le distance matrix sono facili al primo giorno e diventano difficili in fretta.

L'asimmetria è la regola. Le reti stradali reali hanno sensi unici, carreggiate divise e costi di svolta asimmetrici. La cella in (A, B) è raramente uguale alla cella in (B, A). Trattare la matrice come simmetrica per risparmiare memoria è una delle cause classiche di routing nella direzione sbagliata nei sistemi di dispatch.

Il costo N per M. Una matrice 100 per 100 ha 10.000 celle. Una matrice 500 per 500 ne ha 250.000. Costi e latenza crescono in modo quadratico. La maggior parte dei sistemi in produzione batcha le matrici in chunk (50 per 50 o 100 per 100), parallelizza le richieste e mette in cache i risultati che non cambiano spesso, come la matrice tra un set fisso di magazzini e un set fisso di negozi.

Variabilità oraria. Una matrice calcolata alle 03:00 non è valida alle 17:00. Se la tua logica di dispatch dipende dal traffico, richiedi una matrice traffic-aware al momento della decisione, oppure precalcola un piccolo set di matrici per fasce orarie (picco mattutino, fuori picco, picco serale) e scegli quella giusta.

Batching e rate limit. Le distance matrix API si pagano per elemento, non per richiesta, e la maggior parte dei provider mette un cap alla dimensione di una singola chiamata. Pianifica chunking e back-pressure dal primo giorno invece di scoprirli su scala.

Coordinate quality in, garbage out. Una matrice è buona solo quanto le coordinate che la alimentano. Un geocode finito sul lato sbagliato di una superstrada divisa produrrà una durata completamente sbagliata. Valida le coordinate di input prima che entrino nella richiesta matrix.

Le distance matrix in MapAtlas

La MapAtlas Distance Matrix API calcola matrici N per M complete di tempo e distanza di viaggio sulla rete stradale europea e globale reale. Supporta profili auto, camion, bicicletta e pedone, accetta richieste traffic-aware con un orario di partenza ed è costruita per le dimensioni di batch di cui hanno bisogno i veri carichi di dispatch e ottimizzazione.

Per workload che vanno oltre il ranking, la Distance Matrix API si combina naturalmente con la Optimize Route API, che prende una matrice e un set di stop e restituisce un percorso ordinato che minimizza il tempo totale di guida, e con la Isochrone API per filtri "tutto ciò che è raggiungibile entro X minuti" che riducono il set di candidati prima della chiamata matrix.

Una distance matrix non è glamour. È solo una griglia di numeri. Ma è la griglia di numeri che trasforma il "trova il migliore tra molti" da un incubo di routing N per M in una singola richiesta bulk, e farlo bene è ciò che separa un vero prodotto logistico da una demo con cinque pin su una mappa.

Domande frequenti

Cos'è una distance matrix?

Una distance matrix è una griglia N per M di tempi e distanze di viaggio tra un insieme di origini e un insieme di destinazioni. Ogni cella risponde a una singola domanda: quanto tempo serve per andare dall'origine i alla destinazione j, e quanto è lontana. Le moderne distance matrix API calcolano i valori sulla rete stradale reale invece che come distanze in linea retta, quindi i risultati tengono conto di sensi unici, restrizioni di svolta e geometria percorribile.

Qual è la differenza tra distanza e durata?

La distanza è quanto si percorre lungo la rete stradale, in metri o chilometri. La durata è quanto tempo serve, in secondi, considerando limiti di velocità, traffico e classe stradale. Non sono intercambiabili. Due percorsi possono avere la stessa distanza e durate molto diverse, e la maggior parte dei casi d'uso in produzione (ETA, dispatch, ranking) si concentra sulla durata. Una buona distance matrix API restituisce entrambi per ogni cella.

Quando usare una distance matrix invece di singoli percorsi?

Usa una distance matrix ogni volta che devi confrontare molti candidati: ordinare i cinque negozi più vicini su cinquanta, assegnare una consegna al driver disponibile più vicino su venti, o alimentare un solver di vehicle routing problem. Chiamare un endpoint di routing singolo N per M volte è lento e costoso. Un endpoint matrix restituisce gli stessi dati in una sola richiesta, ottimizzato per il calcolo bulk.

Le distance matrix sono simmetriche?

Quasi mai, sulle reti stradali reali. La guida da A a B è raramente uguale a quella da B ad A, a causa di sensi unici, strade a doppia carreggiata, restrizioni di svolta e traffico asimmetrico. Una distance matrix API di produzione restituisce una griglia N per M completa, non una metà triangolare. Se collassi la matrice per risparmiare memoria, finirai per instradare i driver dal lato sbagliato della strada.

L'hai trovato utile? Condividilo.

Sull'autore

Brent van der Heiden

Scritto da

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.

Vedi tutti gli articoli
Torna al blog