ngodingdulu

Menghitung Jarak Dua Koordinat di Android Studio

Oleh Afa HernandesDiperbarui 3 menit baca

Menghitung Jarak Dua Koordinat di Android Studio - gambar 1

Teori Haversine Formula

Teorema Haversine Formula adalah sebuah persamaan yang penting dalam bidang navigasi, untuk mencari jarak busur antara dua titik pada bola dari longitude dan latitude. Ini merupakan bentuk persamaan khusus dari trigonometri bola, law of haversines, mencari hubungan sisi dan sudut pada segitiga dalam bidang bola.

Menghitung Jarak Dua Koordinat di Android Studio - gambar 2

Spherical law of cosines :

Menghitung Jarak Dua Koordinat di Android Studio - gambar 3

Dimana a,b,c ialah jarak yang bersatuan radian/sudut karena berada dalam bidang bola, yang bisa kita korelasikan dengan persamaan busur dibawah ini :

Menghitung Jarak Dua Koordinat di Android Studio - gambar 4

Rumus Busur

Kemudian kita implementasikan persamaan harvesin dibawah ini :

Menghitung Jarak Dua Koordinat di Android Studio - gambar 5

Sehingga dari Formula diatas kita dapat implementasi menjadi :

Menghitung Jarak Dua Koordinat di Android Studio - gambar 6

Teori Euclidean Distance

Euclidean distance adalah perhitungan jarak dari 2 buah titik dalamEuclidean space. Euclidean space diperkenalkan oleh Euclid, seorang matematikawan dari Yunani sekitar tahun 300 B.C.E. untuk mempelajari hubungan antara sudut dan jarak. Euclidean ini berkaitan dengan Teorema Phytagoras dan biasanya diterapkan pada 1, 2 dan 3 dimensi. Tapi juga sederhana jika diterapkan pada dimensi yang lebih tinggi.

Pada 1 dimensi

Semisal ingin menghitung jarak Euclidean 1 dimensi. Titip pertama adalah 4, titik kedua adalah -10. Caranya adalah kurankan -10 dengan 4. sehingga menghasilkan -14. Cari nilai absolut dari nilai -14 dengan cara mempangkatkannya sehingga mendapat nilai 196. Kemudian diakarkan sehingga mendapatkan nilai 14. Sehingga jarak euclidean dari 2 titik tersebut adalah 14.

Pada 2 dimensi

Menghitung Jarak Dua Koordinat di Android Studio - gambar 7

Koordinat jarak

Caranya hampir sama. Misalkan titik pertama mempunyai kordinat (1,2). Titik kedua ada di kordinat (5,5). Caranya adalah kurangkan setiap kordinat titik kedua dengan titik yang pertama. Yaitu, (5-1,5-2) sehingga menjadi (4,3). Kemudian pangkatkan masing-masing sehingga memperoleh (16,9). Kemudian tambahkan semuanya sehingga memperoleh nilai 16+9 = 25. Hasil ini kemudian diakarkan menjadi 5. Sehingga jarak euclideannya adalah 5.

Menghitung Jarak Dua Koordinat di Android Studio - gambar 8

Rumus Euclid

Sehingga dari Formula diatas kita dapat implementasi menjadi :

Menghitung Jarak Dua Koordinat di Android Studio - gambar 9

Rumus Jarak Euclide

Hasil perhitungan (Jarak) diatas masih dalam satuan decimal degree(sesuai dengan format longlat yang dipakai) sehingga untuk menyesuaikannya perlu dikalikan dengan 111.319 km (1 derajat bumi = 111.319 km)

Penggunaan Teorema Euclid dan Teorema Harvesine

Pertama kita siapkan bahan uji sebagai berikut :

1. Titik Pertama : Gedung Sate (Bandung)

Long : 107.618633

Lat : -6.901361

2. Titik Kedua: Mesjid Raya Lembang (KBB)

Long : 107.618279

Lat : -6.811771

Jarak aktual yang diperoleh dari Gmap ialah 10.05 Km.

Dengan Teorema Euclid :

Rumus Jarak Euclide

=((SQRT((B6-B7)^2+(C6-C7)^2)*111.319))

Hasilnya diperoleh Jarak = 9.97 Km

Dengan Teorema Harvesine:

Menghitung Jarak Dua Koordinat di Android Studio - gambar 10

Rumus Jarak Harvesin

=(6371.1*((2*ASIN(SQRT((SIN((RADIANS(B7)-RADIANS(B6))/2)^2)+COS(RADIANS(B7))*COS(RADIANS(B6))*(SIN((RADIANS(C7)-RADIANS(C6))/2)^2))))))

Hasilnya diperoleh Jarak = 9.96 Km

JIka menggunakan excel:

Menghitung Jarak Dua Koordinat di Android Studio - gambar 11

Untuk Source Code Haversine sebagai berikut :

getjarakhaversine.java
//cara 1
public static double getJarak(double lat1, double lon1, double lat2, double lon2) {
final int R = 6371; // Radious of the earth
Double latDistance = toRad(lat2-lat1);
Double lonDistance = toRad(lon2-lon1);
Double a = Math.sin(latDistance / 2) * Math.sin(latDistance / 2) +
Math.cos(toRad(lat1)) * Math.cos(toRad(lat2)) *
Math.sin(lonDistance / 2) * Math.sin(lonDistance / 2);
Double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
Double distance = R * c;
System.out.println("Jarak Antara latitude dan Logitude :" + distance);
}
private static Double toRad(Double value) {
return value * Math.PI / 180;
}
//===================================================================================
//cara 2
public static double getJarak(double lat1, double lng1, double lat2, double lng2) {
double earthRadius = 3958.75;
double dLat = Math.toRadians(lat2-lat1);
double dLng = Math.toRadians(lng2-lng1);
double a = Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2)) *
Math.sin(dLng/2) * Math.sin(dLng/2);
double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
double dist = earthRadius * c;
int meterConversion = 1609;
double myjr=dist * meterConversion;
return Math.floor(myjr/1000);
}

Ngga ada noda ngga belajar

Bagikan:WhatsAppTelegramXFacebook
MobileSource Code

Source Code Halaman Dashboard UI Android

Pada tutorial bahasa pemrograman kali ini, saya akan membagikan sebuah tutorial tentang bagaimana caranya membuat Halaman Menu Utama yang

4 Februari 20216 mnt

Enter bukaEsc tutupHalaman pencarian