patch
parent
6f0776630b
commit
47b1e0bc24
|
@ -108,10 +108,14 @@ def calcula_distancias_parada(redis_id, parada_id):
|
|||
|
||||
paradadb = obtiene_datos_parada(parada_id)
|
||||
if not paradadb:
|
||||
salida_parada['stop_name'] = 'Parada no Existe'
|
||||
salida_parada['debug'] = 'Parada no Existe'
|
||||
return 400, salida_parada
|
||||
|
||||
salida_parada['lineas'] = []
|
||||
|
||||
if not paradadb.vigente:
|
||||
salida_parada['stop_name'] = paradadb.stop_names
|
||||
salida_parada['debug'] = 'Parada sin servicios'
|
||||
salida_parada['vigente'] = False
|
||||
return 200, info_linea
|
||||
|
@ -121,7 +125,6 @@ def calcula_distancias_parada(redis_id, parada_id):
|
|||
for key in ['stop_name', 'stop_lat', 'stop_lon']:
|
||||
salida_parada[key] = getattr(paradadb, key)
|
||||
|
||||
salida_parada['lineas'] = []
|
||||
|
||||
for id_linea in obtiene_lineas_parada(paradadb.id_paradero):
|
||||
rt_linea = pickle.loads(redis_client.get(id_linea))
|
||||
|
@ -139,21 +142,27 @@ def calcula_distancias_parada(redis_id, parada_id):
|
|||
|
||||
expediciones_enruta = []
|
||||
expediciones_pasadas = []
|
||||
for item in rt_linea['servicios']:
|
||||
if item[0] < parada_distance:
|
||||
expediciones_enruta.append(item)
|
||||
estimator = 'debug_estimator'
|
||||
for expedicion in rt_linea['servicios']:
|
||||
trip_info = estima_llegada(parada_distance, expedicion)
|
||||
|
||||
if trip_info[estimator] > 0:
|
||||
expediciones_enruta.append(trip_info)
|
||||
else:
|
||||
expediciones_pasadas.append(item)
|
||||
expediciones_pasadas.append(trip_info)
|
||||
|
||||
expediciones_enruta.sort(key=lambda x: x[estimator])
|
||||
expediciones_pasadas.sort(key=lambda x: x[estimator])
|
||||
|
||||
if len(expediciones_enruta) > 0:
|
||||
info_linea['servicios'].append( estima_llegada(parada_distance, expediciones_enruta.pop(-1)) )
|
||||
info_linea['servicios'].append( expediciones_enruta.pop(-1) )
|
||||
if len(expediciones_enruta) > 0:
|
||||
info_linea['servicios'].append( estima_llegada(parada_distance, expediciones_enruta.pop(-1)) )
|
||||
info_linea['servicios'].append( expediciones_enruta.pop(-1) )
|
||||
|
||||
if len(expediciones_pasadas) > 0:
|
||||
info_linea['recientes'].append( estima_llegada(parada_distance, expediciones_pasadas.pop(0)) )
|
||||
info_linea['recientes'].append( expediciones_enruta.pop(0) )
|
||||
if len(expediciones_pasadas) > 0:
|
||||
info_linea['recientes'].append( estima_llegada(parada_distance, expediciones_pasadas.pop(0)) )
|
||||
info_linea['recientes'].append( expediciones_enruta.pop(0) )
|
||||
|
||||
salida_parada['lineas'].append(info_linea)
|
||||
|
||||
|
@ -167,24 +176,30 @@ def estima_llegada(parada_distance, expedicion):
|
|||
trip_info['drift'] = int(trip_info['ts']) - ts
|
||||
trip_info['trip_distance'] = parada_distance - int(trip_info['trip_traveled'])
|
||||
estimator = int(trip_info['trip_distance'] / 5) # 18 Km/h promedio -> 5 m/s
|
||||
trip_info['debug_estimator'] = estimator
|
||||
trip_info['old_estimator'] = estimator
|
||||
trip_info['forward_correction'] = trip_info['drift'] * 5 # distancia avanzada desde el timestamp original (estimación de avance)
|
||||
trip_info['forward_inference'] = 60 * 5 # forward position a minute to predict position
|
||||
estimator = int((trip_info['trip_distance'] + trip_info['forward_correction'] - trip_info['forward_inference']) / 5)
|
||||
trip_info['estimator'] = estimator
|
||||
|
||||
if estimator > 1570: # 26:10 minutos
|
||||
trip_info['trip_estimator'] = '25-30 minutos'
|
||||
trip_info['trip_estimator'] = 'En 25-30 minutos'
|
||||
elif estimator > 1260: # #21 minutos
|
||||
trip_info['trip_estimator'] = '20-25 minutos'
|
||||
trip_info['trip_estimator'] = 'En 20-25 minutos'
|
||||
elif estimator > 950: #15:50 minutos
|
||||
trip_info['trip_estimator'] = '15-20 minutos'
|
||||
trip_info['trip_estimator'] = 'En 15-20 minutos'
|
||||
elif estimator > 640: #10:40 minutos
|
||||
trip_info['trip_estimator'] = '10-15 minutos'
|
||||
trip_info['trip_estimator'] = 'En 10-15 minutos'
|
||||
elif estimator > 330: # 5:30
|
||||
trip_info['trip_estimator'] = '5-10 minutos'
|
||||
trip_info['trip_estimator'] = 'En 5-10 minutos'
|
||||
elif estimator > 200: # 3:20 sec
|
||||
trip_info['trip_estimator'] = '3 minutos'
|
||||
trip_info['trip_estimator'] = 'En 3 minutos'
|
||||
elif estimator > 70: #
|
||||
trip_info['trip_estimator'] = 'Llegando'
|
||||
elif estimator > 0: #
|
||||
trip_info['trip_estimator'] = 'En parada'
|
||||
trip_info['trip_estimator'] = 'En Parada'
|
||||
elif estimator > -60: #
|
||||
trip_info['trip_estimator'] = 'Avanzando'
|
||||
else: #
|
||||
salida = math.ceil(-estimator/60)
|
||||
trip_info['trip_estimator'] = 'Hace {} minutos'.format(salida)
|
||||
|
|
Loading…
Reference in New Issue