У меня есть фрейм данных, который показывает время и координаты GPS, выглядит так:
2019-02-15 15:32:00 55.652480 12.510514
Мне нужно передать его функции, которая выглядит следующим образом:
import math
def haversine(coord1, coord2):
R = 6372800 # Earth radius in meters
lat1, lon1 = coord1
lat2, lon2 = coord2
phi1, phi2 = math.radians(lat1), math.radians(lat2)
dphi = math.radians(lat2 - lat1)
dlambda = math.radians(lon2 - lon1)
a = math.sin(dphi/2)**2 + \
math.cos(phi1)*math.cos(phi2)*math.sin(dlambda/2)**2
return 2*R*math.atan2(math.sqrt(a), math.sqrt(1 - a))
for n in clean["gps"]:
print(n)
for city, coord in crimepoints.items():
distance = haversine(n, coord)
print(city, distance)
if distance <= 500:
print('alarm')
print(distance)
crimelist.append(city)
crimelist.append(distance)
Эта функция принимает данные, которые выглядят следующим образом: ord = 51.5073219, -0.1276474 два числа с плавающей запятой. Поэтому я использовал это:
clean["gps"] = clean["latitude"].map(str) + "," + " " + clean["longitude"].map(str)
2019-02-15 15:32:00 55.652480 12.510514 55.652480000000004, 12.510514
, чтобы поместить широту и долготу в одну переменную.Проблема в том, что я не могу превратить строку в 2 числа с плавающей точкой, которые сейчас находятся в одной переменной.Я пробовал многие вещи, такие как float (), ast.literal_eval (), map (float, test.split (',')), но безрезультатно.
Я получаю эту ошибку при функции сбора данных:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-190-84732733cea4> in <module>
44
45 for city, coord in crimepoints.items():
---> 46 distance = haversine(n, tok)
47 print(city, distance)
48 if distance <= 500:
<ipython-input-190-84732733cea4> in haversine(coord1, coord2)
3 def haversine(coord1, coord2):
4 R = 6372800 # Earth radius in meters
----> 5 lat1, lon1 = coord1
6 lat2, lon2 = coord2
7
ValueError: too many values to unpack (expected 2)