compute distance to flock on client side

This commit is contained in:
rgarcia-herrera 2020-09-21 20:29:07 -05:00
parent 2c0d29f154
commit c56f6fe0a8

View File

@ -102,8 +102,6 @@ class Bike(Document):
local_radius = trip_len * point_altruism local_radius = trip_len * point_altruism
destination_radius = trip_len * dest_altruism destination_radius = trip_len * dest_altruism
# TODO: filter by timestamp
# these are bikes around me # these are bikes around me
local = [bike for bike in local = [bike for bike in
self.db.bike.find( self.db.bike.find(
@ -114,7 +112,7 @@ class Bike(Document):
'coordinates': self.point}, 'coordinates': self.point},
'$maxDistance': local_radius}}, '$maxDistance': local_radius}},
'last_update': { 'last_update': {
'$gte': datetime.datetime.now() - datetime.timedelta(minutes=15)}, '$gte': datetime.datetime.now() - datetime.timedelta(minutes=15)}, # TODO: adjust this
'_id': {'$ne': bson.objectid.ObjectId(self.id)}})] '_id': {'$ne': bson.objectid.ObjectId(self.id)}})]
local_ids = set([bike['_id'] for bike in local]) local_ids = set([bike['_id'] for bike in local])
@ -141,11 +139,14 @@ class Bike(Document):
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_heading = self.heading_to(flock.centroid)
flock_lat = float(flock.centroid.lat)
flock_lon = float(flock.centroid.lon)
flock_distance = distance.geodesic((self.point[1], flock_distance = distance.geodesic((self.point[1],
self.point[0]), (self.destination[1], self.point[0]), (self.destination[1],
self.destination[0])).meters self.destination[0])).meters
return {'flock_heading': flock_heading, return {'flock_heading': flock_heading,
'flock_distance': flock_distance, 'flock_lat': flock_lat,
'flock_lon': flock_lon,
'flock_avg_speed': flock.mean_speed, 'flock_avg_speed': flock.mean_speed,
'flock_size': flock.size} 'flock_size': flock.size}
else: else: