Php de iki konum arasındaki mesafeyi hesaplama

Php programlama dilinde kullanarak iki farklı enlem ve boylama sahip konum arasındaki mesafeyi bulmak oldukça kolaydır. Php nin bizlere sunduğu birçok kullanışlı fonksiyon bulunmaktadır. Bu fonksiyonlar sayesinde birkaç satırsa istenilen veriyi rahatlıkla elde edebilmekteyiz. Eğer sisteminizde Php programlama dili kurulu değilse, Php kurulumu ile alakalı bilgilendirmeyi "Wamp Server kurulumu ve kullanımı" başlıklı makalemizde daha önceden detaylı şekilde gerçekleştirmiştik. Kodlama için yapmanız gereken aşağıda bulunan fonksiyonu wamp server kurulu olan sisteminizde mesafe.php isminde bir dosya oluşturup içerisine kopyalamaktadır.

function konumlarArasiMesafeyiGetir($enlem1, $boylam1, $enlem2, $boylam2) 
{
    $theta = $boylam1 - $boylam2; 
    $mil = (sin(deg2rad($enlem1)) * sin(deg2rad($enlem2))) + 
           (cos(deg2rad($enlem1)) * cos(deg2rad($enlem2)) * cos(deg2rad($theta))); 
    $mil = acos($mil); 
    $mil = rad2deg($mil); 
    $mil = $mil * 60 * 1.1515; 
    $feet = $mil * 5280; 
    $yard = $feet / 3; 
    $kilometre = $mil * 1.609344; 
    $metre = $kilometre * 1000; 
    return compact('mil','feet','yard','kilometre','metre'); 
}
Yukarıda hazırlanan metodda öncelikle parametre olarak girilen enlem boylam bilgilerinden boylam bilgilerinin birbirinden çıkarılması sağlanmıştır. Elde edilen değer ise deg2grad() fonksiyonu sayesinde dereceden radiusa dönüştürülmüştür. Ortaya çıkan değerin sin() ve cos() fonksiyonları ile sayesinde cosinüs ve sinüs değerleri elde edilmiştir. Aslında geometride kullanılan hipotenüs verisinin bulunmasında kullanılan yöntemin aynısı bu fonksiyonda da kullanılarak sonuç metre,kilometre,feet e yard ölçü birimlerine bağlı olarak elde edilmiştir. Fonksiyonu çağırmak için aşağıda bulunan kod parçacığını konumlarArasiMesafeyiGetir fonksiyonun hemen altına ekleyelim.
 
$konum1 = array('enlem' => 40.6167, 'boylam' => 43.1000); // Kars iline ait enlem-boylam bilgisi
$konum2 = array('enlem' => 41.0136, 'boylam' => 28.9550); // İstanbul iline ait enlem-boylam bilgisi

$mesafe = konumlarArasiMesafeyiGetir($konum1['enlem'], $konum1['boylam'], $konum2['enlem'], $konum2['boylam']); 

foreach ($mesafe as $birim => $deger) 
{ 
    echo $birim.': '.number_format($deger,4).'<br />'; 
}

Örnek veri olarak Kars-İstanbul illeri arası mesafenin hesaplanmasını sağladım. Bilgisayarımın browser alanına http://localhost/mesafe.php yazdığımda aşağıda bulunan sonuçlar listelendi.

mil: 739.3247 
feet: 3,903,634.4912 
yard: 1,301,211.4971 
kilometre: 1,189.8278 
metre: 1,189,827.7929

comments powered by Disqus