returning flock centroid lat-lon, let client compute the rest

This commit is contained in:
rgarcia-herrera 2020-09-21 21:03:54 -05:00
parent c56f6fe0a8
commit c7ec3c7b3a

View File

@ -41,11 +41,11 @@ class Flock:
self.mean_speed = 0 self.mean_speed = 0
self.size = 0 self.size = 0
self.centroid = None self.centroid = None
if n > 0: if n > 0:
self.size = n self.size = n
self.mean_speed = sum(speeds) / float(len(speeds)) self.mean_speed = sum(speeds) / float(len(speeds))
self.centroid = LatLon(Latitude(sum(lats) / len(lats)), self.centroid = LatLon(Latitude(sum(lats) / len(lats)),
Longitude(sum(lons) / len(lons))) Longitude(sum(lons) / len(lons)))
@ -67,7 +67,7 @@ class Bike(Document):
self.bearing = bearing self.bearing = bearing
self.last_update = datetime.datetime.now() self.last_update = datetime.datetime.now()
self.save() self.save()
def heading_to(self, target): def heading_to(self, target):
s = LatLon(Latitude(self.point[1]), s = LatLon(Latitude(self.point[1]),
Longitude(self.point[0])) Longitude(self.point[0]))
@ -137,15 +137,11 @@ class Bike(Document):
:return: heading from point to flock centroid, in degrees :return: heading from point to flock centroid, in degrees
""" """
flock = Flock(self.find_flock()) flock = Flock(self.find_flock())
if flock.size > 0: if flock.size > 0:
flock_heading = self.heading_to(flock.centroid)
flock_lat = float(flock.centroid.lat) flock_lat = float(flock.centroid.lat)
flock_lon = float(flock.centroid.lon) flock_lon = float(flock.centroid.lon)
flock_distance = distance.geodesic((self.point[1],
self.point[0]), (self.destination[1], return {'flock_lat': flock_lat,
self.destination[0])).meters
return {'flock_heading': flock_heading,
'flock_lat': flock_lat,
'flock_lon': flock_lon, 'flock_lon': flock_lon,
'flock_avg_speed': flock.mean_speed, 'flock_avg_speed': flock.mean_speed,
'flock_size': flock.size} 'flock_size': flock.size}