calculate total distance traveled
This commit is contained in:
parent
09cbae3233
commit
7a991f697a
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
24
fgs/views.py
24
fgs/views.py
|
@ -3,6 +3,7 @@ from .jwt import jwt_required
|
|||
from .model import *
|
||||
from flask import g, jsonify, request, abort
|
||||
from sqlalchemy import func
|
||||
import geopy.distance
|
||||
|
||||
@app.route('/')
|
||||
def index():
|
||||
|
@ -37,6 +38,29 @@ def collars():
|
|||
|
||||
return jsonify(active_collars)
|
||||
|
||||
@app.route('/collars/stats/distance')
|
||||
@jwt_required
|
||||
def collars_distance():
|
||||
active_collars = []
|
||||
for collar in Collar.query.filter_by(active=True).all():
|
||||
coords = DataPoint.query.filter_by(collar_id=collar.id).\
|
||||
order_by(DataPoint.datetime.desc())
|
||||
|
||||
distance_kilometers = 0
|
||||
coords_pairs = list(map(lambda e : (e.longitude, e.latitude), coords))
|
||||
|
||||
coord_last = coords_pairs.pop()
|
||||
for coord in coords_pairs:
|
||||
distance_kilometers += geopy.distance.VincentyDistance(coord_last,coord).km
|
||||
coord_last = coord
|
||||
|
||||
active_collars.append(
|
||||
{'id': collar.id, 'name': collar.name,
|
||||
'distance': distance_kilometers }
|
||||
)
|
||||
|
||||
return jsonify(active_collars)
|
||||
|
||||
@app.route('/collars/<int:id>/history')
|
||||
@jwt_required
|
||||
def collar_history(id):
|
||||
|
|
Loading…
Reference in New Issue