Minggu, 17 April 2016

Menghitung Jarak Menggunakan Rumus Haversine Di PHP


Pada postingan kali ini saya akan mencoba memberikan contoh penggunaan rumus haversine untuk menghitung jarak antara 2 lokasi menggunakan bahasa pemrograman PHP. Untuk mengetahui apa itu haversine dapat Anda baca pada artikel Rumus Haversin atau baca selengkapnya di wikipedia

Dalam fungsi penghitungan jarak berikut, saya menggunakan rumus haversine untuk menghitung jarak antara dua titik pada permukaan bumi yaitu garis lintang dan bujur dari kedua titik.


gambaran umum dari fungsi:

  • Menggunakan rumus Haversine, kita menghitung jarak dalam derajat antara dua set koordinat
  • Nilai dalam derajat dikonversi menjadi kilometer (secara default), mil atau mil laut, tergantung pada kebutuhan Anda.
  • Jarak dikembalikan, dengan presisi yang dipilih (2 angka desimal secara default).
Perlu diingat bahwa bumi tidak sepenuhnya bulat, jadi ada kemungkinan terdapat sedikit kesalahan terkait dengan rumus haversine.
function hitungJarak($lokasi1_lat, $lokasi1_long, $lokasi2_lat, $lokasi2_long, $unit = 'km', $desimal = 2) {
// Menghitung jarak dalam derajat
$derajat = rad2deg(acos((sin(deg2rad($lokasi1_lat))*sin(deg2rad($lokasi2_lat))) + (cos(deg2rad($lokasi1_lat))*cos(deg2rad($lokasi2_lat))*cos(deg2rad($lokasi1_long-$lokasi2_long)))));

// Mengkonversi derajat kedalam unit yang dipilih (kilometer, mil atau mil laut)
switch($unit) {
case 'km':
$jarak = $derajat * 111.13384; // 1 derajat = 111.13384 km, berdasarkan diameter rata-rata bumi (12,735 km)
break;
case 'mi':
$jarak = $derajat * 69.05482; // 1 derajat = 69.05482 miles(mil), berdasarkan diameter rata-rata bumi (7,913.1 miles)
break;
case 'nmi':
$jarak = $derajat * 59.97662; // 1 derajat = 59.97662 nautic miles(mil laut), berdasarkan diameter rata-rata bumi (6,876.3 nautical miles)
}
return round($jarak, $desimal);
}


Berikut adalah contoh bagaimana cara menggunakan fungsi diatas :
$currentLat = "-1.2380149"; //garis bujur lokasi 1
$currentLon = "116.8381812"; //garis lintang lokasi 1
$destLat = "-1.2301204"; //garis bujur lokasi 2
$destLon = "116.8234827"; //garis lintang lokasi 2
echo hitungJarak($currentLat,$currentLong, $destLat, $destLon);

Full Code