«

»

nov 02

Imprimer ceci Article

Distance between two points on Earth surface – Haversine formula

Une fois n’est pas coutume, cet article sera en anglais ! J’ai dû implémenter cette formule pour un projet à Medialogy.

This is the Haversine formula Matlab code. It gives an accurate estimation of the distance between two points on the Earth when the coordinates are given as signed decimals. I used this formula to process data from the GPS of an iPhone 3GS, using C74 and MAX/MSP.

To get more information on this formula, visit Wikipedia.

Important!

Notice that the distances are sensitive to the value of the Earth radius. The radius is not constant along the latitude. The equatorial radius may be used but a better estimation is obtained when a more appropriate value is given for the correct latitude
%   Author:      Thomas PEYRARD
%   Time-stamp:  01-Nov-2011 09:49:51
%   E-mail:      tpeyra11@student.aau.dk
% Earth radius in km
    R = 6371;
% Coordonates of two points. You can use a vector and a for loop
    lat1 = 55.731482;
    lat2 = 55.730506;
    long1 = 12.396994;
    long2 = 12.392453;
% Converts degrees into gradians
    lat1 = lat1.*2*pi/360;
    lat2 = lat2.*2*pi/360;
    long1 = long1.*2*pi/360;
    long2 = long2.*2*pi/360;
    dlat = lat2-lat1;
    dlong = long2-long1;
    a = (sin(dlat/2))^2 + cos(lat1)*cos(lat2)*(sin(dlong/2))^2;
    c = 2*atan2(sqrt(a), sqrt(1-a));
    d = R*c*1000;        % d in km, mulptiplied by 1000 to get m
Article intéressant ? Alors partagez-le avec vos amis et la terre entière en cliquant sur les boutons ci-dessous :

Articles similaires :

Lien Permanent pour cet article : http://samoht.fr/informatique/distance-between-two-points-on-earth-surface-haversine-formula

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *


*

Vous pouvez utiliser les balises HTML suivantes : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>