I sistemi a griglia sono utilizzati in moltissimi contesti per analizzare grandi quantità di dati spaziali e soprattutto per suddividere le aree della terra in celle identificabili in maniera univoca.
Uber ha sviluppato un sistema di indicizzazione spaziale chiamato H3 in grado di risolvere tutti i problemi di ottimizzazione e previsioni dei tempi di una corsa o relativi al raggiungimento di un passeggero da parte dell’autista. Ovviamente questo comporta grandi vantaggi per l’azienda ma anche per il cliente, che vedrà ottimizzati anche i costi della prestazione (i quali dipendono ovviamente dalla lunghezza temporale della corsa).
Uno degli sviluppatori di H3 è Isaac Brodksy, co – fondatore di Unfolded. Informatico e ingegnere informatico, Brodsky ha lavorato in maniera decisiva a gestire e migliorare le dinamiche di mercato di Uber.
Come funziona il sistema H3? A cosa deve la sua enorme versatilità? Tutto parte da un’intuizione geniale: i quadrati non sono affatto la forma geometrica migliore per comporre una griglia da utilizzare in termini GIS.
Indice dei Contenuti
Cos’è la rete H3?
A livello puramente accademico, H3 viene definito come un sistema discreto di rete globale, è cioè un sistema che suddivide in celle l’intera superficie terrestre.
La griglia H3, in maniera piuttosto controintuitiva, non è costituita da quadrati, come ad esempio la rete globale formata dall’intersezione di meridiani e paralleli: è formata da esagoni.
Questa scelta è uno dei maggiori motivi di orgoglio degli sviluppatori di H3, i quali hanno scelto come forma fondamentale per la composizione della griglia un esagono.
Il motivo è estremamente semplice (ma bisognava pensarci): formando una griglia di esagoni, si possono individuare “circoli” di esagoni equidistanti da un punto centrale. Questo è geometricamente impossibile con i quadrati, dal momento che l’unica forma simile a un anello che è possibile realizzare utilizzando come base un quadrato è semplicemente un quadrato più ampio. Questo implica che il centro delle le celle poste ai quattro vertici del quadrato saranno più distanti dal centro del centro delle celle poste a metà dei lati del quadrato in questione.
Come funziona la rete H3?
Le caratteristiche della rete H3 semplificano enormemente le operazioni di calcolo della distanza tra le celle e delle loro relazioni spaziali e, quindi, il raggiungimento degli obiettivi di Uber.
Come se non bastasse la rete H3 comprende 16 risoluzioni, cioè 16 diversi “strati” di esagoni di dimensioni decrescenti. Per fare un esempio pratico, la griglia 8 viene creata suddividendo ogni cella della griglia 7 in esagoni più piccoli. Questo procedimento viene eseguito 16 volte per tutta la superficie terrestre ed è possibile passare da una griglia all’altra a seconda delle necessità dell’utente.
Quando si inserisce nella griglia H3 un punto, un poligono o qualsiasi tipo di forma, si forniscono al sistema H3 entrambe le coordinate di quel punto più una risoluzione di riferimento e un’operazione di indicizzazione da eseguire.
A questo punto H3 è in grado di:
- individuare la cella in cui è incluso il punto indicato dalle coordinate
- individuare il centro della cella calcolando la sua latitudine e longitudine
- determinare i confini della cella in termini di latitudine e longitudine
Se l’individuazione di un punto all’interno di una singola risoluzione è estremamente preciso, così come la definizione dei confini della cella all’interno della quale è contenuto, si potrebbero verificare alcune distorsioni quando si passa da una risoluzione all’altra. Questo, spiegano gli sviluppatori, potrebbe creare un motivo a zig zag o frastagliato intorno al bordo delle celle.
Questi errori di renderizzazione derivano dalla necessità di troncare talvolta la precisione della risoluzione stessa. Se la distorsione delle renderizzazione è pari al 7-8% della superficie si determina la comparsa di un errore.
Naturalmente questo problema è parzialmente aggirabile: se si desidera preservare i limiti esatti delle celle è necessario prestare la massima attenzione nel non tentare la renderizzazione dei dati in una risoluzione differente da quella in cui a cui sono stati associati i dati inseriti. Un esempio tipico è avere la necessità di troncare la posizione dell’indice per risparmiare spazio al momento dell’archiviazione di dati in un database: in questo caso, per evitare errori di visualizzazione, bisognerà eseguire il rendering nella risoluzione originale.
Esempi di utilizzo della griglia H3
Utilizzando la griglia H3 è possibile per esempio calcolare la densità degli edifici o il numero di edifici all’interno di un’area o di diverse aree, ma è anche possibile eseguire un’analisi per raggio al fine di definire quanti edifici esistono in un’area di una certa ampiezza che si estende intorno al punto di origine.
Naturalmente è possibile anche eseguire ricerche all’interno di aree determinate non dal punto di vista matematico ma da quello antropologico: inserendo i dati necessari si può, ad esempio, eseguire una ricerca sull’area corrispondente a un quartiere
Per eseguire la ricerca si andrà a inserire nel sistema tutti i tipi di dati in nostro possesso relativi agli edifici di quella zona, che siano poligoni o qualsiasi altro tipo di dati. Il sistema H3 è in grado di convertire le informazioni in un punto o in una forma poligonale da inserire nella griglia H3 e, per farlo, è in grado di utilizzare diversi linguaggi di programmazione come Python e Java nonché diversi tipi di database come Elasticsearch e Postgres.
La funzione di H3 preposta allo scopo è Polyfill, in grado di individuare gli indici di H3 relativi a un poligono che è stato inserito nel sistema come input. Una volta ottenuti gli indici H3 relativi a ogni singolo edificio è possibile utilizzare gli strumenti standard di elaborazione dei dati applicandoli a dati geospaziali.
Se si intende fare ricerche sull’area che si estende a una certa distanza da un punto di riferimento è possibile generare le celle che giacciono a quella distanza e successivamente procedere all’esecuzione di analisi su di esse.
L’enorme versatilità di H3 consiste proprio nella capacità di fornire ai linguaggi di programmazione e ai database identificatori H3 sotto forma di stringhe o numeri interi, in maniera che siano facilmente utilizzabili dai vari linguaggi di programmazione, dai software di analisi dei dati e infine dai database più comuni.
Arrivati a questo punto sarà possibile utilizzare i dati ottenuti per eseguire ricerche molto specifiche all’interno del database, per esempio scoprendo quanti edifici ci sono entro un certo raggio da partire da una determinata posizione. Un passaggio successivo consiste nell’utilizzare strumenti di visualizzazione come Kepler.gl in grado per esempio di creare una mappa termica degli edifici in questione.
È possibile associare agli indicatori in H3 qualsiasi tipo di dati, allegando metriche categoriali o numeriche, geometrie originali (operazione che potrebbe risultare più costosa ma certamente possibile): tutto ciò che rimane fisso all’interno del sistema è l’identificatore spaziale e l’utilizzo di una chiave primaria.
I vantaggi offerti da H3 nell’elaborazione e nell’utilizzo di dati geospaziali
Un enorme vantaggio della rete H3 è la sua integrazione con un sistema di analisi geospaziale che permette di indicizzare, elaborare e visualizzare dati relativi potenzialmente a tutta la superficie terrestre.
Il sistema a griglia H3 permette di unificare spazialmente dati molto diversi tra loro, ottenendo risultati che sarebbe molto difficile raggiungere con l’utilizzo di altre tecnologie.
Per esempio, grazie ad H3 negli Stati Uniti è stato possibile integrare i dati relativi ai codici postali in cui vive un gruppo di cittadini e le informazioni demografiche in possesso dell’ufficio censimento degli Stati Uniti.
Potenzialmente sarebbe stato possibile aggiungere a questi dati anche tracce GPS e raster, unificandoli in un’analisi che qualsiasi utente sarebbe in grado di eseguire con facilità. Inutile sottolineare come tutto questo renda immediatamente accessibile una grande quantità di dati geospaziali estremamente diversi tra loro.Per cos’altro potrebbe essere utilizzato H3 oltre all’ottimizzazione delle corse di Uber? Per sviluppare nuove frontiere del settore videoludico. Avete mai sentito parlare di Pokemon Go? Si tratta di un sistema interattivo di realtà aumentata che si basa proprio sulle enormi potenzialità di H3.