busroute.py

Mon, 25 Sep 2017 10:46:23 +0300

author
Teemu Piippo <teemu@hecknology.net>
date
Mon, 25 Sep 2017 10:46:23 +0300
changeset 68
382dd85b83a2
parent 60
aab788e8a725
child 71
d2e19670b772
permissions
-rw-r--r--

Asioita

5
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
1 #!/usr/bin/env python3
27
f89504285945 Lisää aluejuttuja
Teemu Piippo <teemu@hecknology.net>
parents: 24
diff changeset
2
52
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
3 from configparser import ConfigParser
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
4
27
f89504285945 Lisää aluejuttuja
Teemu Piippo <teemu@hecknology.net>
parents: 24
diff changeset
5 replacements = {
52
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
6 "ylioppilaskylä-itä": "ylioppilaskylä",
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
7 "ylioppilaskylä-länsi": "ylioppilaskylä",
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
8 "jokila": "lieto",
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
9 "piispala": "lieto",
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
10 'saaro': 'ruissalo',
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
11 'silvola': 'vahto',
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
12 'hemmola': 'vahto',
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
13 'paasniittu': 'ruskon keskusta',
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
14 'kahari': 'ruskon keskusta',
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
15 'kemiö': 'kemiönsaari',
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
16 'kasnäs': 'kemiönsaari',
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
17 'pernon telakka': 'perno',
55
0f1d046b3f78 Suppeampi näkymä, pikatiet ja mootoritiet
Teemu Piippo <teemu@hecknology.net>
parents: 53
diff changeset
18 'paimion sairaala': 'paimio',
0f1d046b3f78 Suppeampi näkymä, pikatiet ja mootoritiet
Teemu Piippo <teemu@hecknology.net>
parents: 53
diff changeset
19 'hanhijoki': 'paimio',
27
f89504285945 Lisää aluejuttuja
Teemu Piippo <teemu@hecknology.net>
parents: 24
diff changeset
20 }
f89504285945 Lisää aluejuttuja
Teemu Piippo <teemu@hecknology.net>
parents: 24
diff changeset
21
f89504285945 Lisää aluejuttuja
Teemu Piippo <teemu@hecknology.net>
parents: 24
diff changeset
22 # nimiä joista voidaan joustaa tarvittaessa
f89504285945 Lisää aluejuttuja
Teemu Piippo <teemu@hecknology.net>
parents: 24
diff changeset
23 abbreviations = {
52
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
24 'raision keskusta': 'raisio',
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
25 'ruskon keskusta': 'rusko',
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
26 'naantalin keskusta': 'naantali',
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
27 'kaarinan keskusta': 'kaarina',
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
28 'kauppakeskus mylly': 'mylly',
27
f89504285945 Lisää aluejuttuja
Teemu Piippo <teemu@hecknology.net>
parents: 24
diff changeset
29 }
f89504285945 Lisää aluejuttuja
Teemu Piippo <teemu@hecknology.net>
parents: 24
diff changeset
30
52
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
31 region_info = ConfigParser()
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
32 region_info.read('regions.ini')
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
33 municipalities = set(region_info.sections())
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
34 municipalities_per_region = {}
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
35
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
36 for municipality in municipalities:
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
37 for region in region_info[municipality].keys():
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
38 municipalities_per_region[region] = municipality
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
39
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
40 for place_from, place_to in replacements.items():
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
41 municipalities_per_region[place_to] = municipalities_per_region[place_from]
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
42
27
f89504285945 Lisää aluejuttuja
Teemu Piippo <teemu@hecknology.net>
parents: 24
diff changeset
43 def simplify_name(name):
f89504285945 Lisää aluejuttuja
Teemu Piippo <teemu@hecknology.net>
parents: 24
diff changeset
44 name = replacements.get(name, name)
f89504285945 Lisää aluejuttuja
Teemu Piippo <teemu@hecknology.net>
parents: 24
diff changeset
45 name = abbreviations.get(name, name)
f89504285945 Lisää aluejuttuja
Teemu Piippo <teemu@hecknology.net>
parents: 24
diff changeset
46 return name
f89504285945 Lisää aluejuttuja
Teemu Piippo <teemu@hecknology.net>
parents: 24
diff changeset
47
68
382dd85b83a2 Asioita
Teemu Piippo <teemu@hecknology.net>
parents: 60
diff changeset
48 def reduce_schedule(reitti, trip_length, whole = False, long = False):
60
aab788e8a725 T9 aikataulu järkeväksi
Teemu Piippo <teemu@hecknology.net>
parents: 59
diff changeset
49 length = ((trip_length / 600) * 3 + len(reitti) * 2) / 5
5
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
50 if not reitti:
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
51 return ''
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
52 have_already = set()
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
53 i = 0
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
54 while i < len(reitti):
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
55 if reitti[i] in replacements:
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
56 reitti[i] = replacements[reitti[i]]
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
57 if reitti[i] in have_already:
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
58 del reitti[i]
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
59 else:
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
60 have_already.add(reitti[i])
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
61 i += 1
24
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
62 priorities = {
52
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
63 'ihala': 150,
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
64 'kauppakeskus mylly': 200,
68
382dd85b83a2 Asioita
Teemu Piippo <teemu@hecknology.net>
parents: 60
diff changeset
65 'kuninkoja': 150,
52
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
66 'moikoinen': 80,
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
67 'raision keskusta': 150,
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
68 'kukola': 50,
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
69 'kaistarniemi': 50,
68
382dd85b83a2 Asioita
Teemu Piippo <teemu@hecknology.net>
parents: 60
diff changeset
70 'papinsaari': 80,
52
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
71 'oriniemi': 50,
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
72 'pikisaari': 50,
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
73 'häppilä': 20,
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
74 'haarla': 80,
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
75 'ylioppilaskylä': 50,
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
76 'halinen': 70,
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
77 'kakskerta': 200,
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
78 'pansio': 50,
68
382dd85b83a2 Asioita
Teemu Piippo <teemu@hecknology.net>
parents: 60
diff changeset
79 'räntämäki': 25,
382dd85b83a2 Asioita
Teemu Piippo <teemu@hecknology.net>
parents: 60
diff changeset
80 'verkahovi': 25,
52
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
81 'skanssi': 200,
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
82 'vaala': 20,
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
83 'varissuo': 60,
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
84 'kohmo': 80,
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
85 'kupittaa': 70,
59
8c11784e9e16 Kupittaa as
Teemu Piippo <teemu@hecknology.net>
parents: 57
diff changeset
86 'kupittaa as': 120,
52
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
87 'kauppatori': 1e15,
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
88 'lentoasema': 50,
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
89 'runosmäki': 50,
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
90 'lieto': 100,
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
91 'lieto as': 200,
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
92 'ilmarinen': 50,
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
93 'vahto': 50,
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
94 'ruskon keskusta': 200,
60
aab788e8a725 T9 aikataulu järkeväksi
Teemu Piippo <teemu@hecknology.net>
parents: 59
diff changeset
95 'oriketo': 60,
52
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
96 'harittu': 40,
60
aab788e8a725 T9 aikataulu järkeväksi
Teemu Piippo <teemu@hecknology.net>
parents: 59
diff changeset
97 'jäkärlä': 80,
aab788e8a725 T9 aikataulu järkeväksi
Teemu Piippo <teemu@hecknology.net>
parents: 59
diff changeset
98 'moisio': 100,
52
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
99 'paattinen': 100,
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
100 'kaarinan keskusta': 200,
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
101 'naantalin keskusta': 200,
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
102 'uittamo': 50,
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
103 'piikkiö': 100,
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
104 'paimio': 100,
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
105 'pargas': 100,
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
106 'nagu': 100,
60
aab788e8a725 T9 aikataulu järkeväksi
Teemu Piippo <teemu@hecknology.net>
parents: 59
diff changeset
107 'yli-maaria': 60,
52
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
108 'saramäki': 50,
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
109 'tarvasjoki': 100,
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
110 'marttila': 100,
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
111 'koski tl': 100,
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
112 'katariina': 50,
68
382dd85b83a2 Asioita
Teemu Piippo <teemu@hecknology.net>
parents: 60
diff changeset
113 'länsikeskus': 30,
52
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
114 'kaanaa': 100,
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
115 'satava': 50,
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
116 'suikkila': 50,
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
117 'raunistula': 50,
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
118 'räntämäki': 50,
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
119 'moisio': 25,
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
120 'pääskyvuori': 100,
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
121 'logomo': 100,
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
122 'rymättylä': 50,
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
123 "sauvo": 500,
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
124 "kemiönsaari": 500,
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
125 'suovuori': 300,
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
126 'eerikvalla': 50,
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
127 'petäsmäki': 50,
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
128 'tortinmäki': 50,
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
129 'aura': 100,
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
130 'friskala': -1,
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
131 'merimasku': 50,
53
1c934953c3e6 Turkuhalli
Teemu Piippo <teemu@hecknology.net>
parents: 52
diff changeset
132 'turkuhalli': 100,
1c934953c3e6 Turkuhalli
Teemu Piippo <teemu@hecknology.net>
parents: 52
diff changeset
133 'messukeskus': 100,
68
382dd85b83a2 Asioita
Teemu Piippo <teemu@hecknology.net>
parents: 60
diff changeset
134 'naantalin pikatie': 25,
382dd85b83a2 Asioita
Teemu Piippo <teemu@hecknology.net>
parents: 60
diff changeset
135 'helsingin valtatie': 25,
382dd85b83a2 Asioita
Teemu Piippo <teemu@hecknology.net>
parents: 60
diff changeset
136 'lauste': 25,
382dd85b83a2 Asioita
Teemu Piippo <teemu@hecknology.net>
parents: 60
diff changeset
137 'pompo': 25,
382dd85b83a2 Asioita
Teemu Piippo <teemu@hecknology.net>
parents: 60
diff changeset
138 'loukinainen': 25,
382dd85b83a2 Asioita
Teemu Piippo <teemu@hecknology.net>
parents: 60
diff changeset
139 'tuorla': 25,
382dd85b83a2 Asioita
Teemu Piippo <teemu@hecknology.net>
parents: 60
diff changeset
140 'satakunnantie': 25,
382dd85b83a2 Asioita
Teemu Piippo <teemu@hecknology.net>
parents: 60
diff changeset
141 'hepokulta': 25,
382dd85b83a2 Asioita
Teemu Piippo <teemu@hecknology.net>
parents: 60
diff changeset
142 'nättinummi': 25,
382dd85b83a2 Asioita
Teemu Piippo <teemu@hecknology.net>
parents: 60
diff changeset
143 'nummenmäki': 25,
382dd85b83a2 Asioita
Teemu Piippo <teemu@hecknology.net>
parents: 60
diff changeset
144 'kurala': 25,
382dd85b83a2 Asioita
Teemu Piippo <teemu@hecknology.net>
parents: 60
diff changeset
145 'itäharju': 25,
382dd85b83a2 Asioita
Teemu Piippo <teemu@hecknology.net>
parents: 60
diff changeset
146 'vasaramäki': 25,
382dd85b83a2 Asioita
Teemu Piippo <teemu@hecknology.net>
parents: 60
diff changeset
147 'pohjola': 25,
382dd85b83a2 Asioita
Teemu Piippo <teemu@hecknology.net>
parents: 60
diff changeset
148 'iso-heikkilä': 25,
382dd85b83a2 Asioita
Teemu Piippo <teemu@hecknology.net>
parents: 60
diff changeset
149 'patterinhaka': 25,
382dd85b83a2 Asioita
Teemu Piippo <teemu@hecknology.net>
parents: 60
diff changeset
150 'illoinen': 50,
382dd85b83a2 Asioita
Teemu Piippo <teemu@hecknology.net>
parents: 60
diff changeset
151 'luolavuori': 25,
382dd85b83a2 Asioita
Teemu Piippo <teemu@hecknology.net>
parents: 60
diff changeset
152 'mäntymäki': 25,
382dd85b83a2 Asioita
Teemu Piippo <teemu@hecknology.net>
parents: 60
diff changeset
153 'kurjenmäki': 25,
382dd85b83a2 Asioita
Teemu Piippo <teemu@hecknology.net>
parents: 60
diff changeset
154 'kuusisto': 25,
382dd85b83a2 Asioita
Teemu Piippo <teemu@hecknology.net>
parents: 60
diff changeset
155 'rautatieasema': 25,
382dd85b83a2 Asioita
Teemu Piippo <teemu@hecknology.net>
parents: 60
diff changeset
156 'majakkaranta': 25,
382dd85b83a2 Asioita
Teemu Piippo <teemu@hecknology.net>
parents: 60
diff changeset
157 'itäranta': 25,
382dd85b83a2 Asioita
Teemu Piippo <teemu@hecknology.net>
parents: 60
diff changeset
158 'martti': 25,
382dd85b83a2 Asioita
Teemu Piippo <teemu@hecknology.net>
parents: 60
diff changeset
159 'vähä-heikkilä': 25,
382dd85b83a2 Asioita
Teemu Piippo <teemu@hecknology.net>
parents: 60
diff changeset
160 'särkilahti': 25,
382dd85b83a2 Asioita
Teemu Piippo <teemu@hecknology.net>
parents: 60
diff changeset
161 'urusvuori': 25,
382dd85b83a2 Asioita
Teemu Piippo <teemu@hecknology.net>
parents: 60
diff changeset
162 'port arthur': 25,
5
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
163 }
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
164
52
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
165 if 'kauppatori' not in reitti:
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
166 priorities['länsikeskus'] = priorities['skanssi'] = priorities['kauppatori']
5
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
167
24
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
168 from_place = reitti[0]
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
169 destination = reitti[-1]
5
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
170 reitti_arvot = {}
22
3d094a804af8 lisää muutoksia
Teemu Piippo <teemu@hecknology.net>
parents: 21
diff changeset
171 f = lambda i: i**-0.3
24
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
172 factor = 1 / max(f(i + 1) for i in range(len(reitti)))
45
ddf7c58091ef Ota se friskala pois kyltistä
Teemu Piippo <teemu@hecknology.net>
parents: 44
diff changeset
173 while priorities.get(reitti[-1], 0) < 0:
ddf7c58091ef Ota se friskala pois kyltistä
Teemu Piippo <teemu@hecknology.net>
parents: 44
diff changeset
174 del reitti[-1]
ddf7c58091ef Ota se friskala pois kyltistä
Teemu Piippo <teemu@hecknology.net>
parents: 44
diff changeset
175 destination = reitti[-1]
24
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
176 for i, stop in enumerate(reitti):
5
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
177 # muunna indeksi siten että myöhemmät alueet korostuvat
24
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
178 i = f(i + 1) * factor
5
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
179 # ota prioriteetti huomioon, jotkin alueet ovat tärkeämpiä kyltissä kuin toiset
24
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
180 i *= priorities.get(stop, 1)
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
181 reitti_arvot[stop] = i
5
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
182 # nollaa lähtöpaikan arvo ettei se mitenkään tule kylttiin
24
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
183 if from_place in reitti_arvot:
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
184 reitti_arvot[from_place] = 0
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
185 # varmista että destination tulee kylttiin
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
186 reitti_arvot[destination] = 1e10
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
187 # muodosta sign-tiedot järjestettynä reittiarvon mukaan
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
188 weights = sorted([
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
189 (stop, reitti_arvot[stop], i) \
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
190 for i, stop in enumerate(reitti) \
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
191 if reitti_arvot[stop] >= 1
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
192 ], key = lambda stop: -stop[1])
68
382dd85b83a2 Asioita
Teemu Piippo <teemu@hecknology.net>
parents: 60
diff changeset
193 if long:
382dd85b83a2 Asioita
Teemu Piippo <teemu@hecknology.net>
parents: 60
diff changeset
194 weights = weights[:4]
382dd85b83a2 Asioita
Teemu Piippo <teemu@hecknology.net>
parents: 60
diff changeset
195 else:
382dd85b83a2 Asioita
Teemu Piippo <teemu@hecknology.net>
parents: 60
diff changeset
196 # enintään neljä tulee kylttiin
382dd85b83a2 Asioita
Teemu Piippo <teemu@hecknology.net>
parents: 60
diff changeset
197 weights = weights[:3]
382dd85b83a2 Asioita
Teemu Piippo <teemu@hecknology.net>
parents: 60
diff changeset
198 # jos kolmas kylttiarvo ei ole tarpeeksi merkittävä suhteessa reitin pituuteen niin otetaan se pois
382dd85b83a2 Asioita
Teemu Piippo <teemu@hecknology.net>
parents: 60
diff changeset
199 try:
382dd85b83a2 Asioita
Teemu Piippo <teemu@hecknology.net>
parents: 60
diff changeset
200 if weights[2][0] != destination and weights[2][1] < (725 / length ** 0.8):
382dd85b83a2 Asioita
Teemu Piippo <teemu@hecknology.net>
parents: 60
diff changeset
201 del weights[2]
382dd85b83a2 Asioita
Teemu Piippo <teemu@hecknology.net>
parents: 60
diff changeset
202 except IndexError:
382dd85b83a2 Asioita
Teemu Piippo <teemu@hecknology.net>
parents: 60
diff changeset
203 pass
382dd85b83a2 Asioita
Teemu Piippo <teemu@hecknology.net>
parents: 60
diff changeset
204 try:
382dd85b83a2 Asioita
Teemu Piippo <teemu@hecknology.net>
parents: 60
diff changeset
205 if weights[1][0] != destination and weights[1][1] < (500 / length ** 1.15):
382dd85b83a2 Asioita
Teemu Piippo <teemu@hecknology.net>
parents: 60
diff changeset
206 del weights[1]
382dd85b83a2 Asioita
Teemu Piippo <teemu@hecknology.net>
parents: 60
diff changeset
207 except IndexError:
382dd85b83a2 Asioita
Teemu Piippo <teemu@hecknology.net>
parents: 60
diff changeset
208 pass
24
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
209 # lajitellaan painoarvot uudestaan reittijärjestykseen jotta sign tulee oikeinpäin
52
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
210 weights = sorted(weights, key = lambda weight_data: weight_data[2])
24
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
211 # muodostetaan sign..
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
212 sign = [paino[0] for paino in weights]
52
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
213 to_place = sign[-1]
55
0f1d046b3f78 Suppeampi näkymä, pikatiet ja mootoritiet
Teemu Piippo <teemu@hecknology.net>
parents: 53
diff changeset
214 nearby_municipalities = {'Turku', 'Raisio', 'Naantali', 'Kaarina', 'Lieto'}
52
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
215 if from_place != to_place:
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
216 municipality_from = municipalities_per_region.get(from_place)
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
217 municipality_to = municipalities_per_region.get(to_place)
55
0f1d046b3f78 Suppeampi näkymä, pikatiet ja mootoritiet
Teemu Piippo <teemu@hecknology.net>
parents: 53
diff changeset
218 if municipality_from and municipality_to and municipality_from not in nearby_municipalities | {municipality_to} and municipality_to not in nearby_municipalities:
52
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
219 def convert_region(region):
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
220 municipality = municipalities_per_region.get(region, region)
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
221 if municipality != municipality_from:
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
222 return municipality
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
223 else:
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
224 return region
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
225 sign = [convert_region(region) for region in sign]
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
226 # supista nimet tarvittaessa
24
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
227 if len(' - '.join(sign)) > 20:
52
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
228 sign = [abbreviations.get(place, place) for place in sign]
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
229 old_sign = sign.copy()
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
230 sign = []
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
231 for place in old_sign:
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
232 if place not in sign:
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
233 sign.append(place)
24
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
234 if whole:
52
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
235 sign = [from_place] + sign
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
236 if not sign:
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
237 sign = [destination]
cab8d38fe5c6 Kuntauudistus
Teemu Piippo <teemu@hecknology.net>
parents: 46
diff changeset
238 return sign

mercurial