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) |