Private
Public Access
1
0

routine to find shortest course completion

If rowing through start box more than 1 time, it checks for every
passing of the start box
This commit is contained in:
Sander Roosendaal
2018-06-01 09:16:24 +02:00
parent 45c406b621
commit 3998c7dded
3 changed files with 60 additions and 18 deletions

View File

@@ -70,7 +70,7 @@ siteurl = SITE_URL
# testing task
from rowers.emails import send_template_email
from rowers.courseutils import coursetime_paths, coursetime_first
from rowers.courseutils import coursetime_paths, coursetime_first, time_in_path
@app.task
def add(x, y):
@@ -276,21 +276,56 @@ def handle_check_race_course(self,
path = polygon_to_path(polygon,debug=debug)
paths.append(path)
(
coursetimeseconds,
coursemeters,
coursecompleted,
) = coursetime_paths(rowdata,paths)
(
coursetimefirst,
coursemetersfirst,
firstcompleted
) = coursetime_first(
rowdata,paths)
# check how many times went through start polygon
entrytimes,entrydistances = time_in_path(rowdata,paths[0],maxmin='max',getall=True)
coursetimeseconds = coursetimeseconds-coursetimefirst
coursemeters = coursemeters-coursemetersfirst
cseconds = []
cmeters = []
ccomplete = []
for startt in entrytimes:
rowdata2 = rowdata[rowdata['time']>(startt-10.)]
(
coursetimeseconds,
coursemeters,
coursecompleted,
) = coursetime_paths(rowdata2,paths)
(
coursetimefirst,
coursemetersfirst,
firstcompleted
) = coursetime_first(
rowdata2,paths)
coursetimeseconds = coursetimeseconds-coursetimefirst
coursemeters = coursemeters-coursemetersfirst
cseconds.append(coursetimeseconds)
cmeters.append(coursemeters)
ccomplete.append(coursecompleted)
records = pd.DataFrame({
'coursetimeseconds':cseconds,
'coursecompleted': ccomplete,
'coursemeters': cmeters
})
records = records[records['coursecompleted'] == True]
if len(records):
coursecompleted = True
mintime = records['coursetimeseconds'].min()
coursetimeseconds = records[records['coursetimeseconds'] == mintime]['coursetimeseconds'].min()
coursemeters = records[records['coursetimeseconds'] == mintime]['coursemeters'].min()
else:
coursecompleted = False
if coursecompleted:
query = 'UPDATE rowers_virtualraceresult SET coursecompleted = 1, duration = "{duration}", distance = {distance}, workoutid = {workoutid} WHERE id={recordid}'.format(