buses.py

changeset 72
65408ed066b3
parent 71
d2e19670b772
child 75
4f8a67d5d79e
equal deleted inserted replaced
71:d2e19670b772 72:65408ed066b3
27 try: 27 try:
28 return self.service in services_for_day[day] 28 return self.service in services_for_day[day]
29 except KeyError: 29 except KeyError:
30 return False 30 return False
31 def concise_schedule(self, starting_stop = None): 31 def concise_schedule(self, starting_stop = None):
32 if starting_stop and starting_stop in self.schedule:
33 schedule = copy(self.schedule)
34 schedule = schedule[schedule.index(starting_stop):]
35 else:
36 schedule = self.schedule
32 if profile['regions']['use-regions']: 37 if profile['regions']['use-regions']:
33 if starting_stop and starting_stop in self.schedule:
34 schedule = copy(self.schedule)
35 schedule = schedule[schedule.index(starting_stop):]
36 else:
37 schedule = self.schedule
38 used_areas = set() 38 used_areas = set()
39 result = [] 39 result = []
40 for halt in schedule: 40 for halt in schedule:
41 stop = halt.stop 41 stop = halt.stop
42 if stop.region and stop.region not in used_areas: 42 if stop.region and stop.region not in used_areas:
43 used_areas.add(stop.region) 43 used_areas.add(stop.region)
44 result.append(stop.region) 44 result.append(stop.region)
45 return result 45 return result
46 else: 46 else:
47 return [halt.stop.name for halt in self.schedule] 47 return [halt.stop.name for halt in schedule]
48 48
49 class BusRoute: 49 class BusRoute:
50 def __init__(self, entry): 50 def __init__(self, entry):
51 self.id = entry['route_id'] 51 self.id = entry['route_id']
52 self.reference = entry['route_short_name'] 52 self.reference = entry['route_short_name']
476 route.description = simplify_name(most_common_route[0]) + ' - ' + simplify_name(most_common_route[-1]) 476 route.description = simplify_name(most_common_route[0]) + ' - ' + simplify_name(most_common_route[-1])
477 except: 477 except:
478 route.description = '' 478 route.description = ''
479 route.trips = sorted(route.trips, key = lambda trip: trip.schedule and trip.schedule[0].departure_time or timedelta()) 479 route.trips = sorted(route.trips, key = lambda trip: trip.schedule and trip.schedule[0].departure_time or timedelta())
480 480
481 # Fölin datassa on jotain tosi kummaa. Ilmeisesti ajovuoron viimeisen pysähdyksen saapumisaika on ihan täysin 481 if 'compatibility' in profile and profile['compatibility'].get('fix-destination-times', False):
482 # väärin. Arvaan että se on seuraavan lähdön aika, mutta joka tapauksessa se on väärin. 482 # Fölin datassa on jotain tosi kummaa. Ilmeisesti ajovuoron viimeisen pysähdyksen saapumisaika on ihan täysin
483 # Arvataan mikä se todellinen saapumisaika on. Se ei voi mennä kauhean paljon pahemmin vikaan kuin alkuperäinen 483 # väärin. Arvaan että se on seuraavan lähdön aika, mutta joka tapauksessa se on väärin.
484 # väärin oleva data. 484 # Arvataan mikä se todellinen saapumisaika on. Se ei voi mennä kauhean paljon pahemmin vikaan kuin alkuperäinen
485 for trip in all_trips.values(): 485 # väärin oleva data.
486 if len(trip.schedule) >= 2: 486 for trip in all_trips.values():
487 bus_speed_coefficient = 750 # metriä minuutissa 487 if len(trip.schedule) >= 2:
488 last_leg_distance = trip.schedule[-1].traveled_distance - trip.schedule[-2].traveled_distance 488 bus_speed_coefficient = 750 # metriä minuutissa
489 trip.schedule[-1].arrival_time = trip.schedule[-2].departure_time + timedelta(minutes = last_leg_distance / bus_speed_coefficient) 489 last_leg_distance = trip.schedule[-1].traveled_distance - trip.schedule[-2].traveled_distance
490 trip.schedule[-1].arrival_time = trip.schedule[-2].departure_time + timedelta(minutes = last_leg_distance / bus_speed_coefficient)
490 491
491 global trips_by_vehicle_info 492 global trips_by_vehicle_info
492 trips_by_vehicle_info = {} 493 trips_by_vehicle_info = {}
493 for trip in all_trips.values(): 494 for trip in all_trips.values():
494 trips_by_vehicle_info[(trip.block_id, trip.schedule[0].arrival_time)] = trip 495 trips_by_vehicle_info[(trip.block_id, trip.schedule[0].arrival_time)] = trip

mercurial