bussit.py

changeset 5
a65b680f1774
parent 4
312c432bb9e6
--- 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:

mercurial