Измерения расстояния между координатами широты и долготы из таблицы базы данных с использованием Python - PullRequest
0 голосов
/ 20 июня 2019

Я хочу вычислить Расстояния между широтой и долготой координат из таблицы базы данных, причем первый запрашиваемый результат в Таблице является ссылкой для других широт и длинных координат. Таблица 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 .

1 Ответ

0 голосов
/ 20 июня 2019

Вот что вы бы сделали, если хотите сравнить каждую строку с длиной и широтой первой строки.

for i in range(1,len(results)):
     print haversine(results[0][2],results[0][3],results[i][2]results[i][3])
...