Menghitung Jarak Berdasarkan Koordinat dengan Python

Beberapa waktu lalu mendapat sebuah kasus untuk menghitung jarak satu titik koordinat (latitude dan longitude) dengan titik koordinat lain. Setelah searching ke beberapa referensi akhirnya mendapat satu persamaan yang bisa digunakan untuk menghitung jarak 2 titik koordinat. Nama persamaan ini disebut Haversine Formula.

Haversine Formula adalah persamaan yang penting dalam bidang navigasi untuk mencari jarak antara dua lokasi. Persamaan ini bekerja dengan menarik sebuah garis dari satu titik ke titik kedua. Pada artikel ini, implementasi dari persamaan haversine ini akan dibuat dengan Python. Untuk satuan jarak yang digunakan adalah Kilometer.

Kode

def haversine(lon1, lat1, lon2, lat2):
    """
    Calculate the great circle distance between two points
    on the earth (specified in decimal degrees)
    """
    # convert decimal degrees to radians
    lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2])

    # haversine formula
    dlon = lon2 - lon1
    dlat = lat2 - lat1
    a = sin(dlat/2)**2 + cos(lat1) * cos(lat2) * sin(dlon/2)**2
    c = 2 * asin(sqrt(a))
    r = 6371 # Radius of earth in kilometers. Use 3956 for miles
    return c * r

center_point = [{'lat': -7.7940023, 'lng': 110.3656535}]
test_point = [{'lat': -7.79457, 'lng': 110.36563}]

lat1 = center_point[0]['lat']
lon1 = center_point[0]['lng']
lat2 = test_point[0]['lat']
lon2 = test_point[0]['lng']

a = haversine(lon1, lat1, lon2, lat2)

print('Distance (km) : ', a)

area = 1.00 # in kilometer
if a <= area:
    print('Inside the area')
else:
    print('Outside the area')

Variabel lat1 dan lon2 merupakan titik koordinat lokasi pertama, sedangkan lat2 dan lon2 merupakan titik koordinat lokasi kedua. Koordinat-koordinat ini kemudia dikirim pada fungsi def haversine yang merupakan fungsi penghitung jarak dengan persamaan haversine.

Sebagai tambahan saya membuat kondisi senderhana, yang menenapkan titik1 berada didalam luas area tertentu dari titik2 atau tidak. Variabel area menginisialisasi jarak radius yang diinginkan, misal dalam contoh adalah 1.00 (1 KM), jika jarak antar kedua titik kurang dari 1 KM maka bernilai true, jika tidak berinai false, atau diluar jangkauan area/radius.

Leave a Reply

Your email address will not be published. Required fields are marked *