--- a/bussit.py Fri May 19 21:15:12 2017 +0300 +++ b/bussit.py Thu May 25 16:41:21 2017 +0300 @@ -2,7 +2,9 @@ import enum, json from sys import stderr from datetime import date, time, datetime, timedelta +from copy import copy from misc import * +from geometria import * Suunta = enum.Enum('Suunta', [('Taaksepäin', 0), ('Eteenpäin', 1)]) def muunna_ajovuoro_tunniste(tunniste): @@ -27,6 +29,20 @@ return self.palvelu in palvelut_per_päivä[päivä] except KeyError: return False + def suppea_reitti(self, pysäkistä = None): + if pysäkistä and pysäkistä in self.reitti: + reitti = copy(self.reitti) + reitti = reitti[reitti.index(pysäkistä):] + else: + reitti = self.reitti + käytetyt_alueet = set() + tulos = [] + for pysähdys in reitti: + pysäkki = pysähdys.pysäkki + if pysäkki.alue and pysäkki.alue not in käytetyt_alueet: + käytetyt_alueet.add(pysäkki.alue) + tulos.append(pysäkki.alue) + return tulos class Linja: def __init__(self, tietue): @@ -98,6 +114,9 @@ päivä += timedelta(1) # Typistä lopputulos haluttuun tulosmäärään. return taulu[:määrä] + @property + def linkki_karttaan(self): + return 'http://www.openstreetmap.org/#map=19/%f/%f' % (self.sijainti.leveys, self.sijainti.pituus) class Pysähdys: def __init__(self, saapumisaika, lähtöaika, pysäkki, ajo): @@ -167,7 +186,7 @@ print('Ladataan pysäkit... ', file = stderr, end = '', flush = True) with open('gtfs/stops.txt') as file: for rivi in lue_csv(file): - sijainti = (float(rivi['stop_lat']), float(rivi['stop_lon'])) + sijainti = Sijainti(float(rivi['stop_lat']), float(rivi['stop_lon'])) pysäkki = Pysäkki(rivi['stop_id'], rivi['stop_name'], sijainti) pysäkit[pysäkki.tunniste] = pysäkki with open('pysäkkialueet.json') as file: