Breaking

Showing posts with label Navigasi. Show all posts
Showing posts with label Navigasi. Show all posts

Sunday, April 17, 2016

April 17, 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
April 17, 2016

Rumus Haversine

segitiga bola diselesaikan menggunakan hukum haversines.


Rumus haversin merupakan rumus yang sering digunakan dalam navigasi, rumus Haversine digunakan untuk menghitung jarak antara titik di permukaan bumi menggunakan garis lintang (longitude) dan garis bujur (lattitude) sebagai variabel inputan. Haversine formula adalah persamaan penting pada navigasi, memberikan jarak lingkaran besar antara dua titik pada permukaan bola (bumi) berdasarkan bujur dan lintang. Dengan mengasumsikan bahwa bumi berbentuk bulat sempurna dengan jari-jari R 6.367, 45 km, dan lokasi dari 2 titik di koordinant bola (lintang dan bujur) masing-masing adalah lon1, lat1, dan lon2, lat2, maka rumus Haversine dapat ditulis dengan persamaan sebagai berikut :

x = (lon2-lon1) * cos ((lat1+lat2)/2);
y= (lat2-lat1);
d= sqrt(x*x+y*y)*R

Keterangan:
x = Longitude (Lintang)
y= Lattitude ( Bujur)
d= Jarak
R= Radius Bumi =6371 km
1 derajat= 0.0174532925 radian

Contoh Perhitungan Rumus Haversine
Lokasi 1:
lon1= 119.800801, lat1= -0.790175
Lokasi 2:
lon2= 119.8428 , lat2= -0.8989

lat1 = -0.790175 * 0.0174532925
radian = -0.013791155 radian
lon1= 119.800801 * 0.0174532925
radian = 2.090918422 radian

lat2 = -0.8989 * 0.0174532925
radian = -0.01569 radian
lon2= 119.8428 * 0.0174532925
radian= 2.091651 radian

x = (lon2-lon1) * cos ((lat1+lat2)/2)
   = (2.091651-2.090918422) * cos ((-0.013791155 + -0.01569)/2)
   = 0.0007329412
y = (lat2-lat1)
   = (-0.01569- (-0.013791155))
   = -0.001897609 d
   = sqrt (x*x + y*y) * R
   = sqrt((0.0007329412*0.0007329412)+( -0.001897609*- 0.001897609))*6371
   = sqrt (0.0000041381) * 6371
   =12.96012927 km