2 Feature: Import into placex
3 Tests that data in placex is completed correctly.
5 Scenario: No country code tag is available
7 | osm_id | class | type | name | geometry
8 | 1 | highway | primary | 'name' : 'A1' | country:us
10 Then table placex contains
11 | object | country_code | calculated_country_code |
14 Scenario: Location overwrites country code tag
15 Given the scene country
17 | osm_id | class | type | name | country_code | geometry
18 | 1 | highway | primary | 'name' : 'A1' | de | :us
20 Then table placex contains
21 | object | country_code | calculated_country_code |
24 Scenario: Country code tag overwrites location for countries
26 | osm_type | osm_id | class | type | admin_level | name | country_code | geometry
27 | R | 1 | boundary | administrative | 2 | 'name' : 'foo' | de | (-100 40, -101 40, -101 41, -100 41, -100 40)
29 Then table placex contains
30 | object | country_code | calculated_country_code |
33 Scenario: Illegal country code tag for countries is ignored
35 | osm_type | osm_id | class | type | admin_level | name | country_code | geometry
36 | R | 1 | boundary | administrative | 2 | 'name' : 'foo' | xx | (-100 40, -101 40, -101 41, -100 41, -100 40)
38 Then table placex contains
39 | object | country_code | calculated_country_code |
42 Scenario: admin level is copied over
44 | osm_id | class | type | admin_level | name
45 | 1 | place | state | 3 | 'name' : 'foo'
47 Then table placex contains
48 | object | admin_level |
51 Scenario: admin level is default 15
53 | osm_id | class | type | name
54 | 1 | amenity | prison | 'name' : 'foo'
56 Then table placex contains
57 | object | admin_level |
60 Scenario: admin level is never larger than 15
62 | osm_id | class | type | name | admin_level
63 | 1 | amenity | prison | 'name' : 'foo' | 16
65 Then table placex contains
66 | object | admin_level |
70 Scenario: postcode node without postcode is dropped
72 | osm_id | class | type
73 | 1 | place | postcode
75 Then table placex has no entry for N1
77 Scenario: postcode boundary without postcode is dropped
79 | osm_type | osm_id | class | type | geometry
80 | R | 1 | boundary | postal_code | poly-area:0.1
82 Then table placex has no entry for R1
84 Scenario: search and address ranks for GB post codes correctly assigned
86 | osm_id | class | type | postcode | geometry
87 | 1 | place | postcode | E45 2CD | country:gb
88 | 2 | place | postcode | E45 2 | country:gb
89 | 3 | place | postcode | Y45 | country:gb
91 Then table placex contains
92 | object | postcode | calculated_country_code | rank_search | rank_address
93 | N1 | E45 2CD | gb | 25 | 5
94 | N2 | E45 2 | gb | 23 | 5
95 | N3 | Y45 | gb | 21 | 5
97 Scenario: wrongly formatted GB postcodes are down-ranked
99 | osm_id | class | type | postcode | geometry
100 | 1 | place | postcode | EA452CD | country:gb
101 | 2 | place | postcode | E45 23 | country:gb
102 | 3 | place | postcode | y45 | country:gb
104 Then table placex contains
105 | object | calculated_country_code | rank_search | rank_address
110 Scenario: search and address rank for DE postcodes correctly assigned
111 Given the place nodes
112 | osm_id | class | type | postcode | geometry
113 | 1 | place | postcode | 56427 | country:de
114 | 2 | place | postcode | 5642 | country:de
115 | 3 | place | postcode | 5642A | country:de
116 | 4 | place | postcode | 564276 | country:de
118 Then table placex contains
119 | object | calculated_country_code | rank_search | rank_address
125 Scenario: search and address rank for other postcodes are correctly assigned
126 Given the place nodes
127 | osm_id | class | type | postcode | geometry
128 | 1 | place | postcode | 1 | country:ca
129 | 2 | place | postcode | X3 | country:ca
130 | 3 | place | postcode | 543 | country:ca
131 | 4 | place | postcode | 54dc | country:ca
132 | 5 | place | postcode | 12345 | country:ca
133 | 6 | place | postcode | 55TT667 | country:ca
134 | 7 | place | postcode | 123-65 | country:ca
135 | 8 | place | postcode | 12 445 4 | country:ca
136 | 9 | place | postcode | A1:bc10 | country:ca
138 Then table placex contains
139 | object | calculated_country_code | rank_search | rank_address
151 Scenario: search and address ranks for places are correctly assigned
152 Given the named place nodes
153 | osm_id | class | type |
155 | 11 | place | Continent |
156 | 12 | place | continent |
158 | 14 | place | country |
159 | 15 | place | state |
160 | 16 | place | region |
161 | 17 | place | county |
162 | 18 | place | city |
163 | 19 | place | island |
164 | 20 | place | town |
165 | 21 | place | village |
166 | 22 | place | hamlet |
167 | 23 | place | municipality |
168 | 24 | place | district |
169 | 25 | place | unincorporated_area |
170 | 26 | place | borough |
171 | 27 | place | suburb |
172 | 28 | place | croft |
173 | 29 | place | subdivision |
174 | 30 | place | isolated_dwelling |
175 | 31 | place | farm |
176 | 32 | place | locality |
177 | 33 | place | islet |
178 | 34 | place | mountain_pass |
179 | 35 | place | neighbourhood |
180 | 36 | place | house |
181 | 37 | place | building |
182 | 38 | place | houses |
183 And the named place nodes
184 | osm_id | class | type | extratags
185 | 100 | place | locality | 'locality' : 'townland'
186 | 101 | place | city | 'capital' : 'yes'
188 Then table placex contains
189 | object | rank_search | rank_address |
222 Scenario: search and address ranks for boundaries are correctly assigned
223 Given the named place nodes
224 | osm_id | class | type
225 | 1 | boundary | administrative
226 And the named place ways
227 | osm_id | class | type | geometry
228 | 10 | boundary | administrative | 10 10, 11 11
229 And the named place areas
230 | osm_type | osm_id | class | type | admin_level | geometry
231 | R | 20 | boundary | administrative | 2 | (1 1, 2 2, 1 2, 1 1)
232 | R | 21 | boundary | administrative | 32 | (3 3, 4 4, 3 4, 3 3)
233 | R | 22 | boundary | nature_park | 6 | (0 0, 1 0, 0 1, 0 0)
234 | R | 23 | boundary | natural_reserve| 10 | (0 0, 1 1, 1 0, 0 0)
236 Then table placex has no entry for N1
237 And table placex has no entry for W10
238 And table placex contains
239 | object | rank_search | rank_address
245 Scenario Outline: minor highways droped without name, included with
246 Given the scene roads-with-pois
249 | osm_id | class | type | geometry
250 | 1 | highway | <type> | :w-south
251 And the named place ways
252 | osm_id | class | type | geometry
253 | 2 | highway | <type> | :w-north
255 Then table placex has no entry for W1
256 And table placex contains
257 | object | rank_search | rank_address
258 | W2 | <rank> | <rank>
276 Scenario: search and address ranks for highways correctly assigned
277 Given the scene roads-with-pois
279 | osm_id | class | type
280 | 1 | highway | bus_stop
282 | osm_id | class | type | geometry
283 | 1 | highway | primary | :w-south
284 | 2 | highway | secondary | :w-south
285 | 3 | highway | tertiary | :w-south
286 | 4 | highway | residential | :w-north
287 | 5 | highway | unclassified | :w-north
288 | 6 | highway | something | :w-north
290 Then table placex contains
291 | object | rank_search | rank_address
300 Scenario: rank and inclusion of landuses
301 Given the place nodes
302 | osm_id | class | type
303 | 1 | landuse | residential
304 And the named place nodes
305 | osm_id | class | type
306 | 2 | landuse | residential
308 | osm_id | class | type | geometry
309 | 1 | landuse | residential | 0 0, 0 1
310 And the named place ways
311 | osm_id | class | type | geometry
312 | 2 | landuse | residential | 1 1, 1 1.1
314 | osm_type | osm_id | class | type | geometry
315 | W | 3 | landuse | residential | poly-area:0.1
316 | R | 1 | landuse | residential | poly-area:0.01
317 | R | 10 | landuse | residential | poly-area:0.5
318 And the named place areas
319 | osm_type | osm_id | class | type | geometry
320 | W | 4 | landuse | residential | poly-area:0.1
321 | R | 2 | landuse | residential | poly-area:0.05
323 Then table placex has no entry for N1
324 And table placex has no entry for W1
325 And table placex has no entry for W3
326 And table placex has no entry for R1
327 And table placex has no entry for R10
328 And table placex contains
329 | object | rank_search | rank_address
335 Scenario: rank and inclusion of naturals
336 Given the place nodes
337 | osm_id | class | type
339 | 3 | natural | volcano
340 And the named place nodes
341 | osm_id | class | type
343 | 4 | natural | volcano
344 | 5 | natural | foobar
346 | osm_id | class | type | geometry
347 | 1 | natural | mountain_range | 10 10,11 11
348 And the named place ways
349 | osm_id | class | type | geometry
350 | 2 | natural | mountain_range | 12 12,11 11
351 | 3 | natural | foobar | 13 13,13.1 13
352 | 4 | natural | coastline | 14 14,14.1 14
354 | osm_type | osm_id | class | type | geometry
355 | R | 1 | natural | volcano | poly-area:0.1
356 | R | 2 | natural | volcano | poly-area:1.0
357 And the named place areas
358 | osm_type | osm_id | class | type | geometry
359 | R | 3 | natural | volcano | poly-area:0.1
360 | R | 4 | natural | foobar | poly-area:0.5
361 | R | 5 | natural | sea | poly-area:5.0
362 | R | 6 | natural | sea | poly-area:0.01
363 | R | 7 | natural | coastline | poly-area:1.0
365 Then table placex has no entry for N1
366 And table placex has no entry for N3
367 And table placex has no entry for W1
368 And table placex has no entry for R1
369 And table placex has no entry for R2
370 And table placex has no entry for R7
371 And table placex has no entry for W4
372 And table placex contains
373 | object | rank_search | rank_address