Italian DataBase con coordinate autovelox

Fulvio75

Well-Known Member
Licensed User
E che ci fai? Gli passi latitudine e longitudine della posizione della tua auto e calcoli la distanza?
In che senso dovresti scorrere la tabella?
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
 

Alessandro71

Well-Known Member
Licensed User
Longtime User
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
 

Sagenut

Expert
Licensed User
Longtime User
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.
 

LucaMs

Expert
Licensed User
Longtime User
Query suggerita da ChatGPT:
B4X:
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 : )

Se non restituisce record, sei salvo ?
 

Elric

Well-Known Member
Licensed User
Hai valutato anche le intersezioni?

Sei sulla SS xyz e viaggi verso nord. Arrivi a un cavalcavia, passi sopra la SS zyx, che nei pressi del cavalcavia ha un autovelox... o_O

Che fai? ? Memorizzi o no??
 

Fulvio75

Well-Known Member
Licensed User
Hai valutato anche le intersezioni?

Sei sulla SS xyz e viaggi verso nord. Arrivi a un cavalcavia, passi sopra la SS zyx, che nei pressi del cavalcavia ha un autovelox... o_O

Che fai? ? Memorizzi o no??
Infatti quello originale della macchina se sono sotto al cavalcavia e l'autovelox è sopra lo segnala ?
 

Fulvio75

Well-Known Member
Licensed User
Query suggerita da ChatGPT:
B4X:
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 : )

Se non restituisce record, sei salvo ?
Provo
 

Fulvio75

Well-Known Member
Licensed User
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
Il problema è capire cosa indicano i numeri della latitudine e longitudine e quanto variano a seconda della distanza, non mi sono ancora informato
 

Fulvio75

Well-Known Member
Licensed User
questione di decimali, senza seni e coseni
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?
 

Fulvio75

Well-Known Member
Licensed User
SQLite non ha le funzioni ACOS, SIN eccecc
Cattura.PNG
 
Top