ich arbeite seit kurzer Zeit mit Python. Momentan führe ich eine Auswertung von Fahrdaten durch.
So will ich untersuchen, welche Strecken ein PKW über den Tag zurücklegt und alle verschiedenen Zielorte mit dem morgendlichen Abfahrtsort vergleichen (über die Harversine-Formel, welche durch die Geokoordinaten die Entfernung zwischen den Orten bestimmt). Nun bin ich dabei eine Funktion zu definieren, welche den Standort wiedergeben soll (bspw. zuhause). Die Funktion greift hierbei auf Parameter aus einer CSV-Tabelle, welche in einer späteren Funktion verwendet wird, zu.
Fahrzeug abdatum abzeit abstrasse ablongitudo ablatitude andatum anzeit anstrasse anland anort anlongitudo anlatitude
211 20100628 1115 Seestraße 10.5643 49.7132 20110628 1125 Bleichereistraße DE Seestraße 9.56012 49.7152
211 20100628 1153 Seestraße 10.5597 49.7150 20110628 1153 Bleichereistraße DE Seestraße 9.55898 49.71513
211 20100628 1309 Seestraße 10.5590 49.7150 20110628 1311 Bleichereistraße DE Seestraße 10.56004 49.71521
211 20100628 1423 Seestraße 10.5597 49.7152 20110628 1427 Bleichereistraße DE Seestraße 10.55906 49.71495
211 20100628 1450 Seestraße 10.5584 49.7154 20110628 1501 Leibnizstraße DE Kreuzstrass 10.57995 49.68392
211 20100628 1524 Kreuzstraße 10.5800 49.6842 20110628 1545 Bleichereistraße DE Seestraße 10.55965 49.71533
Stimmen die Ziel- mit den Abfahrdaten überein, soll ausgegeben werden dass sich das Fahrzeug zuhause befindet. Ebenso soll auch ausgegeben werden, dass sich das Fahrzeug zuhause befindet wenn die Distanz <= 0.5 km ist. Andernfalls soll ausgegeben werden, dass sich das Fahrzeug unterwegs befindet.
Code: Alles auswählen
def standort(abdatum, andatum, ablongitudo, ablatitude, anlongitudo, anlatitude, abzeit, anzeit):
radius = 6371
# distance
dlat = math.radians(anlatitude-ablatitude)
dlon = math.radians(anlongitudo-ablongitudo)
a = math.sin(dlat/2) * math.sin(dlat/2) + math.cos(math.radians(ablatitude)) \
* math.cos(math.radians(anlatitude)) * math.sin(dlon/2) * math.sin(dlon/2)
c = 2 * math.atan2(math.sqrt(a), math.sqrt(1-a))
d = (radius * c)
# Funktion Standort
if abdatum == andatum:
if (ablongitudo and ablatitude) == (anlongitudo and anlatitude):
return 'zuhause'
elif (ablongitudo and ablatitude) != (anlongitudo and anlatitude):
if d <= 0.1:
return 'zuhause'
else:
return 'unterwegs'
else:
return 'unterwegs'
Viele Grüße
Sebastian