busroute.py

changeset 45
ddf7c58091ef
parent 44
f6b73571a6b8
child 46
548b526ded3b
equal deleted inserted replaced
44:f6b73571a6b8 45:ddf7c58091ef
49 i += 1 49 i += 1
50 priorities = { 50 priorities = {
51 'Ihala': 150, 51 'Ihala': 150,
52 'Kauppakeskus Mylly': 200, 52 'Kauppakeskus Mylly': 200,
53 'Kuninkoja': 80, 53 'Kuninkoja': 80,
54 'Moikoinen': 60, 54 'Moikoinen': 80,
55 'Raision keskusta': 150, 55 'Raision keskusta': 150,
56 'Friskala': 20,
57 'Kukola': 50, 56 'Kukola': 50,
58 'Kaistarniemi': 50, 57 'Kaistarniemi': 50,
59 'Papinsaari': 50, 58 'Papinsaari': 50,
60 'Oriniemi': 50, 59 'Oriniemi': 50,
61 'Pikisaari': 50, 60 'Pikisaari': 50,
62 'Häppilä': 20, 61 'Häppilä': 20,
63 'Haarla': 50, 62 'Haarla': 80,
64 'Ylioppilaskylä': 50, 63 'Ylioppilaskylä': 50,
65 'Halinen': 70, 64 'Halinen': 70,
66 'Kakskerta': 200, 65 'Kakskerta': 200,
67 'Pansio': 50, 66 'Pansio': 50,
68 'Räntämäki': 10, 67 'Räntämäki': 10,
108 'Rautatieasema': 50, 107 'Rautatieasema': 50,
109 'Rymättylä': 50, 108 'Rymättylä': 50,
110 "Sauvo": 500, 109 "Sauvo": 500,
111 "Kemiönsaari": 500, 110 "Kemiönsaari": 500,
112 'Suovuori': 300, 111 'Suovuori': 300,
112 'Eerikvalla': 50,
113 'Petäsmäki': 50,
114 'Tortinmäki': 50,
115 'Aura': 100,
116 'Friskala': -1,
113 } 117 }
114 118
115 if 'Kauppatori' not in reitti: 119 if 'Kauppatori' not in reitti:
116 priorities['Länsikeskus'] = priorities['Skanssi'] = priorities['Kauppatori'] 120 priorities['Länsikeskus'] = priorities['Skanssi'] = priorities['Kauppatori']
117 121
118 from_place = reitti[0] 122 from_place = reitti[0]
119 destination = reitti[-1] 123 destination = reitti[-1]
120 reitti_arvot = {} 124 reitti_arvot = {}
121 f = lambda i: i**-0.3 125 f = lambda i: i**-0.3
122 factor = 1 / max(f(i + 1) for i in range(len(reitti))) 126 factor = 1 / max(f(i + 1) for i in range(len(reitti)))
127 while priorities.get(reitti[-1], 0) < 0:
128 del reitti[-1]
129 destination = reitti[-1]
123 for i, stop in enumerate(reitti): 130 for i, stop in enumerate(reitti):
124 # muunna indeksi siten että myöhemmät alueet korostuvat 131 # muunna indeksi siten että myöhemmät alueet korostuvat
125 i = f(i + 1) * factor 132 i = f(i + 1) * factor
126 # ota prioriteetti huomioon, jotkin alueet ovat tärkeämpiä kyltissä kuin toiset 133 # ota prioriteetti huomioon, jotkin alueet ovat tärkeämpiä kyltissä kuin toiset
127 i *= priorities.get(stop, 1) 134 i *= priorities.get(stop, 1)
139 ], key = lambda stop: -stop[1]) 146 ], key = lambda stop: -stop[1])
140 # enintään neljä tulee kylttiin 147 # enintään neljä tulee kylttiin
141 weights = weights[:3] 148 weights = weights[:3]
142 # jos kolmas kylttiarvo ei ole tarpeeksi merkittävä suhteessa reitin pituuteen niin otetaan se pois 149 # jos kolmas kylttiarvo ei ole tarpeeksi merkittävä suhteessa reitin pituuteen niin otetaan se pois
143 try: 150 try:
144 if weights[2][0] != destination and weights[2][1] < (900 / length ** 0.8): 151 if weights[2][0] != destination and weights[2][1] < (725 / length ** 0.8):
145 del weights[2] 152 del weights[2]
146 except IndexError: 153 except IndexError:
147 pass 154 pass
148 try: 155 try:
149 if weights[1][0] != destination and weights[1][1] < (500 / length ** 1.15): 156 if weights[1][0] != destination and weights[1][1] < (500 / length ** 1.15):
165 del sign[i] 172 del sign[i]
166 if len(' - '.join(sign)) > 20: 173 if len(' - '.join(sign)) > 20:
167 result = finalise(sign, abbreviation_level = 1) 174 result = finalise(sign, abbreviation_level = 1)
168 if whole: 175 if whole:
169 result = [from_place] + result 176 result = [from_place] + result
177 if not result:
178 result = [destination]
170 short_from_place = replacements.get(from_place, from_place) 179 short_from_place = replacements.get(from_place, from_place)
171 if ( 180 if (
172 short_from_place != result[-1] 181 short_from_place != result[-1]
173 and abbreviations.get(short_from_place, short_from_place) in eksoalueet | {'Kauppatori'} 182 and abbreviations.get(short_from_place, short_from_place) in eksoalueet | {'Kauppatori'}
174 and result[-1] in eksoalueet | {'Kauppatori'} 183 and result[-1] in eksoalueet | {'Kauppatori'}

mercurial