Formula Haversine

Di sharing kali ini kita akan membahas definisi dan fungsi formula haversine, juga mengetahui bagaimana cara kerja formula haversine ini. Perlu diketahui, formula haversine adalah persamaan penting dalam sistem navigasi, nantinya formula haversine ini akan menghasilkan jarak terpendek antara dua titik, misalnya pada bola yang diambil dari garis bujur (longtitude) dan garis lintang (latitude).

Josef de Mendoza y Ríos
Josef de Mendoza y Ríos

Formula ini pertama kali ditemukan oleh Jamez Andrew di tahun 1805, dan digunakan pertama kali oleh Josef de Mendoza y Ríos di tahun 1801. Istilah haversine ini sendiri diciptakan pada tahun 1835 oleh Prof. James Inman.[1]

Josef de Mendoza y Ríos menggunakan haversine pertama kali dalam penelitiannya tentang “Masalah Utama Astronomi Nautical“, Proc.Royal Soc, Dec 22. 1796. Haversine digunakan untuk menemukan jarak antar bintang.[2]

Formula Haversine

Formula

a = sin²(Δφ/2) + cos φ1 ⋅ cos φ2 ⋅ sin²(Δλ/2)
c = 2 ⋅ atan2( √a, √(1−a) )
d = R ⋅ c

Keterangan :

φ adalah latitude, λ adalah longitude, R is radius bumi (radius = 6,371km);
“perlu dicatat, bahwa sudut harus dalam radian agar bisa berjalan di fungsi trigonometri!”

 

Hukum Haversine

220px-Law-of-haversinesUntuk meneliti lebih detail tentang rumus ini, kita akan memulai melihatnya dari hukum haversine itu sendiri. Hukumnya adalah semua persamaan yang digunakan berdasarkan bentuk bumi yang bulat (spherical earth) dengan menghilangkan faktor bahwa bumi itu sedikit elips (elipsodial factor). Ini merupakan kasus khusus dari formula umum dalam trigonometri bola, hukum haversines, yang berkaitan dengan sisi dan sudut segitiga bola.

Dalam unit bola, sebuah “segitiga” pada permukaan bola didefinisikan sebagai lingkaran-lingkaran besar yang menghubungkan tiga poin u, v, dan w pada bola. Jika panjang dari ketiga sisi adalah (dari u ke v), b (dari u ke w), dan c (dari v ke w), dan sudut sudut yang berlawanan c adalah C, maka hukum haversines menjadi [3]:

\operatorname{haversin}(c) = \operatorname{haversin}(a - b) + \sin(a) \sin(b) \, \operatorname{haversin}(C).

Untuk membutikkannya dapat dilakukan menggunakan query pada database. Diasumsikan bahwa kita telah memiliki table yang berisikan sebuah titik lokasi (lat & long) seperti gambar berikut:

Create Table
Create Table

Setelah itu, kita manfaatkan query berikut untuk membuktikannya:

Untuk lebih jelasnya tentang bagaimana menemukan sebuah lokasi menggunakan MySQL dapat dilihat disini.

Sama halnya testing yang dilakukan oleh Alexander Bij dalam blognya. Dia menggunakan query diabawah ini untuk menemukan jarak dari Hoofddorp Station ke Amsterdam Central Station.[4]

  • Hoofddorp Station: 52.2909264998, 4.700868765513
  • Amsterdam Station: 52.3773759354, 4.896747677825
both-locations
Hoofddorp Station – Amsterdam Station

Dan untuk memferifikasi hasil jarak yang ditemukannnya, Alexander Bij membuktikannya menggunakan google-maps-calculate-distance.

google-measurement

Well, hasilnya tidak jauh berbeda antara formula yang digunakan dengan Google Distance:

  • Haversine: 16.415929129056497
  • Google Distance: 16,42

Bukan hanya dalam bentu query,  ada banyak bahasa pemograman yang bisa digunakan untuk memanfaatkan formula ini,  salah satunya bahasa pemograman C#:

Hasil keluarannya : 2887.26

Dan untuk contoh formula haversine dalam bahasa pemograman yang lain, bisa di akses di sini.

 

Kesimpulan

Haversine merupakan formula yang populer digunakan untuk menemukan jarak antara 2 titik. Tetapi belum ada penelitian yang membuktikan dari sekian banyak formula untuk mencari jarak mana yang “terbaik”. Dalam hal ini setiap formula memiliki kelemahan dan kelebihan masing-masing, tergantung kebutuhan yang digunakan. Semoga Bermanfaat ! 😉

 

Daftar Pustaka

  • [1] http://en.wikipedia.org/wiki/Haversine_formula
  • [2] http://hsm.stackexchange.com/a/388
  • [3] http://www.movable-type.co.uk/scripts/latlong.html
  • [4] http://blog.godatadriven.com/impala-haversine.html
Iklan

Good People write good comments ..

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s