buses.py

changeset 19
16fa9fb20b32
parent 18
1c8ff93fbfac
child 20
3199e289ae62
equal deleted inserted replaced
18:1c8ff93fbfac 19:16fa9fb20b32
118 'stop': stop, 118 'stop': stop,
119 }) 119 })
120 # Lajittele lopputulos saapumisajan mukaan. 120 # Lajittele lopputulos saapumisajan mukaan.
121 result.sort(key = lambda schedule_entry: schedule_entry['time']) 121 result.sort(key = lambda schedule_entry: schedule_entry['time'])
122 return result 122 return result
123 @property
124 def linkki_karttaan(self):
125 return 'http://www.openstreetmap.org/#map=19/%f/%f' % (self.sijainti.leveys, self.sijainti.pituus)
126 123
127 class Pysähdys: 124 class Pysähdys:
128 def __init__(self, saapumisaika, lähtöaika, pysäkki, ajo): 125 def __init__(self, saapumisaika, lähtöaika, pysäkki, ajo):
129 self.saapumisaika, self.lähtöaika, self.pysäkki, self.ajo = saapumisaika, lähtöaika, \ 126 self.saapumisaika, self.lähtöaika, self.pysäkki, self.ajo = saapumisaika, lähtöaika, \
130 pysäkki, ajo 127 pysäkki, ajo
228 for bus_stop in other.stops: 225 for bus_stop in other.stops:
229 bus_stop.cluster = self 226 bus_stop.cluster = self
230 self.stops |= other.stops 227 self.stops |= other.stops
231 other.stops = set() 228 other.stops = set()
232 other._center = None 229 other._center = None
230 def schedule(self, max_amount = 50):
231 result = []
232 for stop in self.stops:
233 result += stop.schedule(max_amount)
234 result.sort(key = lambda schedule_entry: schedule_entry['time'])
235 return result[:max_amount]
233 236
234 from collections import defaultdict 237 from collections import defaultdict
235 bus_stops_by_name = defaultdict(set) 238 bus_stops_by_name = defaultdict(set)
236 for bus_stop in pysäkit.values(): 239 for bus_stop in pysäkit.values():
237 bus_stops_by_name[bus_stop.nimi].add(bus_stop) 240 bus_stops_by_name[bus_stop.nimi].add(bus_stop)
324 327
325 print('Ryhmitellään pysäkit...') 328 print('Ryhmitellään pysäkit...')
326 cluster_bus_stops() 329 cluster_bus_stops()
327 name_clusters() 330 name_clusters()
328 331
332 clusters_by_name = {}
333 for cluster in all_clusters:
334 assert cluster.name not in clusters_by_name
335 clusters_by_name[cluster.name] = cluster
336
329 print('Ladataan aikataulut... ', end = '', flush = True, file = stderr) 337 print('Ladataan aikataulut... ', end = '', flush = True, file = stderr)
330 with open('gtfs/stop_times.txt') as file: 338 with open('gtfs/stop_times.txt') as file:
331 rivimäärä = sum(line.count('\n') for line in file) 339 rivimäärä = sum(line.count('\n') for line in file)
332 laskettu = 0 340 laskettu = 0
333 file.seek(0) 341 file.seek(0)

mercurial