GNSS ha il calcolo della distanza lineare che uso per trovare la distanza lineare da casa, passando le coordinate di casa e quelle della posizione corrente.
Detto ciò l'idea è trovare la distanza tra le coordinate di dove mi trovo e quelle dell'autovelox nel db, quando mi trovo a un km ad esempio lo notifico.
Il problema è che dovrei scorrere tutto il db per calcolare ogni volta la distanza
fai una select su latitudine e longitudine con un delta rispetto alla posizione corrente
poi la distanza, se proprio devi calcolarla, la calcoli su un subset ristretto
altrimenti rispetti i limiti e il problema è risolto
Appunto, data la posizione del veicolo verificare in un certo raggio quanti ne ricadono.
E anche calcolando la distanza da lì potresti finire a segnalarti quelli che sono 500 metri in un'altra direzione che non è quella in cui stai andando.
Non è semplice.
SELECT *
FROM table_name
WHERE 6371000 * ACOS(SIN(RADIANS(Latitudine)) * SIN(RADIANS(:current_lat)) + COS(RADIANS(Latitudine)) * COS(RADIANS(:current_lat)) * COS(RADIANS(Longitudine) - RADIANS(:current_lon))) < 1000;
in cui current_lat e current_lon sono le tue, quelle della tua auto.
1000 sono i metri di distanza, che puoi ovviamente cambiare.
(Ovviamente senza i due punti : )
SELECT *
FROM table_name
WHERE 6371000 * ACOS(SIN(RADIANS(Latitudine)) * SIN(RADIANS(:current_lat)) + COS(RADIANS(Latitudine)) * COS(RADIANS(:current_lat)) * COS(RADIANS(Longitudine) - RADIANS(:current_lon))) < 1000;
in cui current_lat e current_lon sono le tue, quelle della tua auto.
1000 sono i metri di distanza, che puoi ovviamente cambiare.
(Ovviamente senza i due punti : )
fai una select su latitudine e longitudine con un delta rispetto alla posizione corrente
poi la distanza, se proprio devi calcolarla, la calcoli su un subset ristretto
altrimenti rispetti i limiti e il problema è risolto
Letto però non mi è chiara una cosa, ho 5 decimali quindi l'incremento di uno oppure la diminuzione di uno corrispondente alla distanza di 1.11 MT? Quindi 5 decimali sono 99999 MT?