Sto sviluppando un'applicazione che dovrebbe mostrare gli indirizzi che si trovano in una specifica distanza di una posizione. So come trovare la distanza tra due punti, ma il problema è che non sono sicuro quale sarebbe l'approccio migliore in termini di prestazioni.Qual è l'approccio migliore per trovare tutti gli indirizzi che si trovano a una distanza specifica dal punto selezionato
Un modo è quello di recuperare tutti gli indirizzi e controllarli uno a uno verso l'indirizzo selezionato nel back-end ma esiste un modo per ridurre al minimo il numero di elementi che richiamo dal database, piuttosto che utilizzare la memoria? qual è l'approccio migliore per farlo e come?
Immagina di avere 300.000 record devo recuperarli tutti e calcolare la loro distanza dal punto selezionato? Come James ha suggerito che posso avere i record in diverse regioni e calcolare la distanza, quindi quale metodo sarebbe opportuno seguire, calcolo della distanza tramite query o Java?
public class Address{
long Id;
Double latitude;
Double longitude;
..
}
public static double distFrom(double lat1, double lng1, double lat2, double lng2) {
double earthRadius = 3958.75;
double dLat = Math.toRadians(lat2-lat1);
double dLng = Math.toRadians(lng2-lng1);
double sindLat = Math.sin(dLat/2);
double sindLng = Math.sin(dLng/2);
double a = Math.pow(sindLat, 2) + Math.pow(sindLng, 2)
* Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2));
double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
double dist = earthRadius * c;
return dist;
}
This question e this one metodi offrono per calcolare la distanza attraverso il mysql, ma da che parte è meglio Java o mysql Sono abbastanza confuso.
Vorrei prendere in considerazione l'utilizzo di DB che gestisce le informazioni GIS e sono progettati per questo, come [PostGIS] (http://postgis.net/). –