La parte più facile di questa domanda a cui rispondere è come trovare la distanza tra due punti di latitudine / longitudine. Puoi farlo usando la trigonometria sferica e un'approssimazione sferica della Terra. Le formule e i link di esempio del codice possono essere trovati qui . Probabilmente vuoi anche vedere se il tuo database ha estensioni GIS per farlo per te. Ad esempio, PostgreSQL ha il pacchetto PostGIS che offre la funzione ST_DistanceSpheroid
. Sebbene non sia ancora chiaro se il posto migliore per fare questo calcolo per il tuo problema sia nella query del database o nel codice dell'applicazione.
La parte più difficile è determinare i punti ancora . Qualsiasi cosa tu realizzi sarà un'approssimazione. Ci saranno aree grigie e condizioni al contorno dove non è chiaro come vorresti che guardasse. Se sei andato a pranzo dall'altra parte della strada, è ancora al lavoro? Che ne dici di mezzo miglio lungo la strada? Penso che un approccio euristico come quello che hai descritto possa funzionare, ma dovresti prototiparlo e sperimentare con dati reali per sapere quanto bene.
Per risolvere questo problema, osserverei algoritmi analisi cluster come k-means. Algoritmi di ottimizzazione come il metodo simplex Nelder-Mead o l'ottimizzazione dello sciame di particelle potrebbero essere utili, ad esempio, per massimizzare il numero di punti che si adattano all'interno di un cerchio di dimensioni fisse. Ma non troverai nessun proiettile d'argento, solo strumenti potenzialmente utili.
Potresti semplicemente iniziare a tracciare tutti i punti di una polilinea sulla mappa, vedere quanto è pessimo e andare da lì.