@@ -107,24 +107,33 @@ fn aproximate_speed_limit(s: &str) -> usize {
107
107
5 = all
108
108
100 = skip
109
109
*/
110
- fn get_street_kind ( s : & str ) -> usize {
111
- match s {
112
- "motorway" | "motorway_link" => return 0 ,
113
- "trunk" | "trunk_link" => return 0 ,
110
+ fn get_street_type ( s : & str , has_sidewalk : bool ) -> usize {
111
+ let mut result = match s {
112
+ "motorway" | "motorway_link" => 0 ,
113
+ "trunk" | "trunk_link" => 0 ,
114
114
"raceway" | "services" | "rest_area" => 0 ,
115
- "primary" | "primary_link" => return 1 ,
116
- "secondary" | "secondary_link" => return 1 ,
117
- "tertiary" | "tertiary_link" => return 1 ,
118
- "cycleway" => return 2 ,
115
+ "primary" | "primary_link" => 1 ,
116
+ "secondary" | "secondary_link" => 1 ,
117
+ "tertiary" | "tertiary_link" => 1 ,
118
+ "cycleway" => 2 ,
119
119
"trail" | "track" | "path" => 3 ,
120
120
"elevator" | "platform" | "corridor" => 4 ,
121
- "bus_stop" | "bridleway" | "steps" | "pedestrian" | "footway" => return 4 ,
122
- "unclassified" => return 5 ,
123
- "residential" | "living_street" => return 5 ,
124
- "service" | "road" => return 5 ,
121
+ "bus_stop" | "bridleway" | "steps" | "pedestrian" | "footway" => 4 ,
122
+ "unclassified" => 5 ,
123
+ "residential" | "living_street" => 5 ,
124
+ "service" | "road" => 5 ,
125
125
"razed" | "abandoned" | "disused" | "construction" | "proposed" => 100 ,
126
- _ => return 5 ,
126
+ _ => 5 ,
127
+ } ;
128
+ if has_sidewalk {
129
+ result = match result {
130
+ 1 => 5 ,
131
+ 2 => 3 ,
132
+ 3 => 5 ,
133
+ _ => result,
134
+ }
127
135
}
136
+ return result;
128
137
}
129
138
130
139
fn main ( ) {
@@ -163,7 +172,14 @@ fn main() {
163
172
for way in groups:: ways ( & group, & block) {
164
173
if way. tags . contains_key ( "highway" ) {
165
174
let highway = way. tags . get ( "highway" ) . unwrap ( ) . trim ( ) ;
166
- let travel_type = get_street_kind ( highway) ;
175
+ let mut has_sidewalk: bool = false ;
176
+ if way. tags . contains_key ( "sidewalk" ) {
177
+ has_sidewalk = match way. tags . get ( "sidewalk" ) . unwrap ( ) . trim ( ) {
178
+ "None" | "none" | "No" | "no" => false ,
179
+ _ => true ,
180
+ }
181
+ }
182
+ let travel_type = get_street_type ( highway, has_sidewalk) ;
167
183
if travel_type == 100 {
168
184
continue ;
169
185
}
0 commit comments