Skip to content

Commit 5aa8dca

Browse files
committed
[pre] rearange speed aproximations
1 parent 7277064 commit 5aa8dca

File tree

1 file changed

+15
-10
lines changed

1 file changed

+15
-10
lines changed

pre/src/main.rs

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -56,26 +56,28 @@ fn parse_speed(max_speed: &str, highway: &str) -> usize {
5656
/// resolves the int value from a dirty string that can't be resolved by default parsing
5757
fn resolve_max_speed(s: &str) -> Result<usize, &str> {
5858
match s {
59+
"DE:motorway" => return Ok(120),
5960
"DE:rural" | "AT:rural" => return Ok(100),
6061
"DE:urban" | "AT:urban" | "CZ:urban" => return Ok(50),
61-
"DE:walk" | "walk" | "Schrittgeschwindigkeit" => return Ok(7),
62+
"maxspeed=50" => return Ok(50),
63+
"50;" | "50b" => return Ok(50),
6264
"DE:living_street" => return Ok(30),
63-
"DE:motorway" => return Ok(120),
6465
"30 kph" => return Ok(30),
6566
"zone:maxspeed=de:30" => return Ok(30),
6667
"DE:zone:30" => return Ok(30),
67-
"50;" | "50b" => return Ok(50),
68-
"10 mph" => return Ok(10),
69-
"5 mph" => return Ok(7),
70-
"maxspeed=50" => return Ok(50),
7168
"DE:zone30" => return Ok(30),
7269
"30 mph" => return Ok(30),
7370
"20:forward" => return Ok(20),
71+
"10 mph" => return Ok(10),
72+
"5 mph" => return Ok(7),
73+
"DE:walk" | "walk" | "Schrittgeschwindigkeit" => return Ok(7),
7474
_ => return Err("none"),
7575
};
7676
}
7777

7878
/// approximates the speed limit based on given highway type
79+
// infos from https://wiki.openstreetmap.org/wiki/Key:highway
80+
// TODO check if more types can be added
7981
fn aproximate_speed_limit(s: &str) -> usize {
8082
match s {
8183
"motorway" => return 120,
@@ -88,10 +90,13 @@ fn aproximate_speed_limit(s: &str) -> usize {
8890
"tertiary" | "tertiary_link" => return 50,
8991
"unclassified" => return 40,
9092
"residential" => return 30,
91-
"service" => return 10,
92-
"living_street" => return 50,
93-
"walk" => return 3,
94-
_ => return 50,
93+
"track" | "service" => return 10,
94+
"living_street" => return 7,
95+
"path" | "walk" | "footway" => return 4,
96+
_ => {
97+
// println!("speed limit {:?}", s);
98+
return 50;
99+
}
95100
}
96101
}
97102

0 commit comments

Comments
 (0)