Я хочу вычислить Расстояния между широтой и долготой координат из таблицы базы данных, причем первый запрашиваемый результат в Таблице является ссылкой для других широт и длинных координат. Таблица Db будет состоять из «USR, REF, LONG, LAT».
В конечном итоге моя цель - создать графический интерфейс, в котором пользователь ищет запись REF. Затем пользователь сделает выбор из таблицы. И на основе выбранной записи, которая будет использоваться в качестве эталона для других длинных точек широты, будет отображаться расстояние между указанными широтными и длинными точками и другими отличиями широтных и длинных точек.
Я попробовал формулу haversine. Но я вижу, что большинство уроков показывают только две точки широты и лота для удаленных измерений
import sys
import math
def haversine(lon1, lat1, lon2, lat2):
# convert decimal degrees to radians
lon1, lat1, lon2, lat2 = map(math.radians, [lon1, lat1, lon2, lat2])
# haversine formula
dlon = lon2 - lon1
dlat = lat2 - lat1
a = math.sin(dlat/2)**2 + math.cos(lat1) * math.cos(lat2) *math.sin(dlon/2)**2
c = 2 * math.asin(math.sqrt(a))
km = 6367 * c
return km
conn = pypyodbc.connect(# My MsAccessDB Location)
cursor = conn.cursor()
query = "SELECT*FROM Test_dist ORDER BY Licensee"
cursor.execute(query)
results = cursor.fetchall()
for x in results:
print(x) ```
OUTPUT
(' ABC JIM', 469.55, 18.533333, -33.85)
(' CALLY', 383.5125, 23.460278, -33.234722)
(' ROSS', 469.55, 21.983333, -34.166667)
(' SALLY M', 383.5625, 23.2325, -33.072222)
('KRACE', 400.36, 23.5688, -33.045668)
('LEEMER', 202.36, 23.2566, -33.158859)
When i run the code it displays all my records . I am not sure how to implement this into the haversine function thou as I would need to do it from my database table .