Haversine Formülü İle İki Konum Arasındaki Mesafeyi Hesaplama

Haversine_formula

GPS ve konum verileri ile uğraşıyorsanız. İki farklı konum arasındaki mesafeyi hesaplamanız zaman zaman gerekmektedir.

Bu yazıda Haversine formülü ile bu hesaplamayı nasıl yapabileceğinizden bahsedeceğim.

Bu metot temel matematik formülleri kullanıldığı için Java, Javascript, C# veya diğer dillere çevirmekte oldukça kolay olacaktır.

Aşağıda C# ile yazılmış bu örneği kullanabilirsiniz.

class Program
{
    static void Main(string[] args)
    {
        findDistance(41.08556197870254, 28.90931010246277, 41.05996279452782, 28.85280132293701);
        Console.ReadLine();
    }

    static int Rm = 3961;
    static int Rk = 6373;
    static void findDistance(double firstLat, double firstLng, double secondLat, double secondLng)
    {
        double lat1, lon1, lat2, lon2, dlat, dlon, a, c, dm, dk, mi, km;

        lat1 = firstLat * Math.PI / 180;
        lon1 = firstLng * Math.PI / 180;
        lat2 = secondLat * Math.PI / 180;
        lon2 = secondLng * Math.PI / 180;

        dlat = lat2 - lat1;
        dlon = lon2 - lon1;

        a = Math.Pow(Math.Sin(dlat / 2), 2) + Math.Cos(lat1) * Math.Cos(lat2) * Math.Pow(Math.Sin(dlon / 2), 2);
        c = 2 * Math.Atan2(Math.Sqrt(a), Math.Sqrt(1 - a));

        dm = c * Rm; // mil cinsinden
        dk = c * Rk; // kilometre cinsinden

        mi = Math.Round(dm, 3);
        km = Math.Round(dk, 3);

        Console.WriteLine(mi.ToString());
        Console.WriteLine(km.ToString());
    }
}