Formula Haversine untuk Pengiraan GPS: Jarak dan Galas
Masalah:
Mengira jarak dan bearing antara dua titik GPS selalunya melibatkan penggunaan formula jarak Haversine. Walau bagaimanapun, isu boleh timbul apabila mendapatkan bearing yang betul, terutamanya jika nilai negatif dihasilkan.
Penyelesaian:
Untuk mengira jarak, formula Haversine boleh digunakan:
from math import radians, cos, sin, asin, sqrt def haversine(lon1, lat1, lon2, lat2): """ Calculate the great circle distance in kilometers 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. Determines return value units. return c * r
Untuk menentukan galas, laraskan pembolehubah Bearing sebagai berikut:
Bearing = atan2(sin(lon2-lon1)*cos(lat2), cos(lat1)*sin(lat2) - sin(lat1)*cos(lat2)*cos(lon2-lon1)) Bearing = degrees(Bearing)
Pengubahsuaian ini memastikan bahawa galas terletak antara 0 dan 360 darjah.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengira Jarak dan Galas GPS Dengan Tepat Menggunakan Formula Haversine?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!