:::: MENU ::::

Calcolare la distanza di due punti della terra: la formula dell’emisenoverso.

Tempo fa ho avuto la necessità di implementare delle funzioni per estrarre da un database tutti i comuni limitrofi ad un punto dato. L’utente inseriva il nome della città, venivano ricercate le corrispondenti coordinate geografiche utilizzando i servizi di Google Maps e poi, attraverso una query di ricerca, veniva interrogata la base dati restituendo i comuni limitrofi in un raggio di km prestabilito (in linea d’aria!).

Per arrivare a ciò, mi è stata di grande aiuto la cosiddetta distanza ortodromica, cioè è il percorso più breve tra due punti sulla superficie di una sfera (e si suppone che la Terra è una sfera perfetta, anche se non lo è in realtà), e la formula matematica dell’emisenoverso, formula della trigonometria sferica che è molto utile in navigazione e in cartografia. Attraverso tale formula e con gli opportuni accorgimenti, è possibile sapere quale distanza intercorre tra due punti geografici (latitudine e longitudine), sia in chilometri che in miglia.

Da Wikipedia, la formula matematica è la seguente:

senoverso

dove l’emisenoverso non è altro che la metà della funzione senoverso, cioè:

emisenoverso, e cioè,  emisenoverso_2 che in PHP diventa

Lo script qui in basso non è altro che una trasposizione in PHP della prima formula citata.

Attraverso la funzione asin (arcoseno) ci viene restituito il valore dell’angolo interessato che poi verrà moltiplicato per il raggio della terra. Per ovvi motivi, la distanza calcolata viene considerata in linea d’aria, senza considerare le conformazioni fisiche del terreno, strade, etc.

Nel prossimo articolo vedremo come implementare questa funzione all’interno di MySQL e come riuscire a farci restituire i punti geogrefici di interesse attigui a un determinato punto geografico dato.

 


Comments are closed.

By continuing to use the site, you agree to the use of cookies. more information

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close