]> git.openstreetmap.org Git - nominatim.git/blob - test/bdd/db/import/placex.feature
Merge remote-tracking branch 'upstream/master'
[nominatim.git] / test / bdd / db / import / placex.feature
1 @DB
2 Feature: Import into placex
3     Tests that data in placex is completed correctly.
4
5     Scenario: No country code tag is available
6         Given the named places
7           | osm | class   | type     | geometry   |
8           | N1  | highway | primary  | country:us |
9         When importing
10         Then placex contains
11           | object | addr+country | country_code |
12           | N1     | -            | us           |
13
14     Scenario: Location overwrites country code tag
15         Given the named places
16           | osm | class   | type     | country | geometry |
17           | N1  | highway | primary  | de      | country:us |
18         When importing
19         Then placex contains
20           | object | addr+country | country_code |
21           | N1     | de           | us           |
22
23     Scenario: Country code tag overwrites location for countries
24         Given the named places
25           | osm | class    | type            | admin | country | geometry |
26           | R1  | boundary | administrative  | 2     | de      | (-100 40, -101 40, -101 41, -100 41, -100 40) |
27         When importing
28         Then placex contains
29           | object | rank_search| addr+country | country_code |
30           | R1     | 4          | de           | de           |
31
32     Scenario: Illegal country code tag for countries is ignored
33         Given the named places
34           | osm | class    | type            | admin | country | geometry |
35           | R1  | boundary | administrative  | 2     | xx      | (-100 40, -101 40, -101 41, -100 41, -100 40) |
36         When importing
37         Then placex contains
38           | object | addr+country | country_code |
39           | R1     | xx           | us           |
40
41     Scenario: admin level is copied over
42         Given the named places
43           | osm | class | type      | admin |
44           | N1  | place | state     | 3     |
45         When importing
46         Then placex contains
47           | object | admin_level |
48           | N1     | 3           |
49
50     Scenario: postcode node without postcode is dropped
51         Given the places
52           | osm | class   | type     | name+ref |
53           | N1  | place   | postcode | 12334    |
54         When importing
55         Then placex has no entry for N1
56
57     Scenario: postcode boundary without postcode is dropped
58         Given the places
59           | osm | class    | type        | name+ref | geometry |
60           | R1  | boundary | postal_code | 554476   | poly-area:0.1 |
61         When importing
62         Then placex has no entry for R1
63
64     Scenario: search and address ranks for GB post codes correctly assigned
65         Given the places
66          | osm  | class | type     | postcode | geometry |
67          | N1   | place | postcode | E45 2CD  | country:gb |
68          | N2   | place | postcode | E45 2    | country:gb |
69          | N3   | place | postcode | Y45      | country:gb |
70         When importing
71         Then placex contains
72          | object | postcode | country_code | rank_search | rank_address |
73          | N1     | E45 2CD  | gb           | 25          | 0 |
74          | N2     | E45 2    | gb           | 23          | 0 |
75          | N3     | Y45      | gb           | 21          | 0 |
76
77     Scenario: wrongly formatted GB postcodes are down-ranked
78         Given the places
79          | osm  | class | type     | postcode | geometry |
80          | N1   | place | postcode | EA452CD  | country:gb |
81          | N2   | place | postcode | E45 23   | country:gb |
82         When importing
83         Then placex contains
84          | object | country_code | rank_search | rank_address |
85          | N1     | gb           | 30          | 0 |
86          | N2     | gb           | 30          | 0 |
87
88     Scenario: search and address rank for DE postcodes correctly assigned
89         Given the places
90          | osm | class | type     | postcode | geometry |
91          | N1  | place | postcode | 56427    | country:de |
92          | N2  | place | postcode | 5642     | country:de |
93          | N3  | place | postcode | 5642A    | country:de |
94          | N4  | place | postcode | 564276   | country:de |
95         When importing
96         Then placex contains
97          | object | country_code | rank_search | rank_address |
98          | N1     | de           | 21          | 0 |
99          | N2     | de           | 30          | 0 |
100          | N3     | de           | 30          | 0 |
101          | N4     | de           | 30          | 0 |
102
103     Scenario: search and address rank for other postcodes are correctly assigned
104         Given the places
105          | osm | class | type     | postcode | geometry |
106          | N1  | place | postcode | 1        | country:ca |
107          | N2  | place | postcode | X3       | country:ca |
108          | N3  | place | postcode | 543      | country:ca |
109          | N4  | place | postcode | 54dc     | country:ca |
110          | N5  | place | postcode | 12345    | country:ca |
111          | N6  | place | postcode | 55TT667  | country:ca |
112          | N7  | place | postcode | 123-65   | country:ca |
113          | N8  | place | postcode | 12 445 4 | country:ca |
114          | N9  | place | postcode | A1:bc10  | country:ca |
115         When importing
116         Then placex contains
117          | object | country_code | rank_search | rank_address |
118          | N1     | ca           | 21          | 0 |
119          | N2     | ca           | 21          | 0 |
120          | N3     | ca           | 21          | 0 |
121          | N4     | ca           | 21          | 0 |
122          | N5     | ca           | 21          | 0 |
123          | N6     | ca           | 21          | 0 |
124          | N7     | ca           | 25          | 0 |
125          | N8     | ca           | 25          | 0 |
126          | N9     | ca           | 25          | 0 |
127
128     Scenario: search and address ranks for places are correctly assigned
129         Given the named places
130           | osm  | class     | type      |
131           | N1   | foo       | bar       |
132           | N11  | place     | Continent |
133           | N12  | place     | continent |
134           | N13  | place     | sea       |
135           | N14  | place     | country   |
136           | N15  | place     | state     |
137           | N16  | place     | region    |
138           | N17  | place     | county    |
139           | N18  | place     | city      |
140           | N19  | place     | island    |
141           | N20  | place     | town      |
142           | N21  | place     | village   |
143           | N22  | place     | hamlet    |
144           | N23  | place     | municipality |
145           | N24  | place     | district     |
146           | N25  | place     | unincorporated_area |
147           | N26  | place     | borough             |
148           | N27  | place     | suburb              |
149           | N28  | place     | croft               |
150           | N29  | place     | subdivision         |
151           | N30  | place     | isolated_dwelling   |
152           | N31  | place     | farm                |
153           | N32  | place     | locality            |
154           | N33  | place     | islet               |
155           | N34  | place     | mountain_pass       |
156           | N35  | place     | neighbourhood       |
157           | N36  | place     | house               |
158           | N37  | place     | building            |
159           | N38  | place     | houses              |
160         And the named places
161           | osm  | class     | type      | extra+capital |
162           | N101 | place     | city      | yes |
163         When importing
164         Then placex contains
165           | object | rank_search | rank_address |
166           | N1     | 30          | 30 |
167           | N11    | 30          | 30 |
168           | N12    | 2           | 0 |
169           | N13    | 2           | 0 |
170           | N14    | 4           | 0 |
171           | N15    | 8           | 0 |
172           | N16    | 18          | 0 |
173           | N17    | 12          | 12 |
174           | N18    | 16          | 16 |
175           | N19    | 17          | 0 |
176           | N20    | 18          | 16 |
177           | N21    | 19          | 16 |
178           | N22    | 19          | 16 |
179           | N23    | 19          | 16 |
180           | N24    | 19          | 16 |
181           | N25    | 19          | 16 |
182           | N26    | 19          | 16 |
183           | N27    | 20          | 20 |
184           | N28    | 20          | 20 |
185           | N29    | 20          | 20 |
186           | N30    | 20          | 20 |
187           | N31    | 20          | 0 |
188           | N32    | 20          | 0 |
189           | N33    | 20          | 0 |
190           | N34    | 20          | 0 |
191           | N101   | 15          | 16 |
192           | N35    | 22          | 22 |
193           | N36    | 30          | 30 |
194           | N37    | 30          | 30 |
195           | N38    | 28          | 0 |
196
197     Scenario: search and address ranks for boundaries are correctly assigned
198         Given the named places
199           | osm | class    | type |
200           | N1  | boundary | administrative |
201         And the named places
202           | osm | class    | type           | geometry |
203           | W10 | boundary | administrative | 10 10, 11 11 |
204         And the named places
205           | osm | class    | type           | admin | geometry |
206           | R20 | boundary | administrative | 2     | (1 1, 2 2, 1 2, 1 1) |
207           | R21 | boundary | administrative | 32    | (3 3, 4 4, 3 4, 3 3) |
208           | R22 | boundary | nature_park    | 6     | (0 0, 1 0, 0 1, 0 0) |
209           | R23 | boundary | natural_reserve| 10    | (0 0, 1 1, 1 0, 0 0) |
210         And the named places
211           | osm | class | type    | geometry |
212           | R40 | place | country | (1 1, 2 2, 1 2, 1 1) |
213           | R41 | place | state   | (3 3, 4 4, 3 4, 3 3) |
214         When importing
215         Then placex has no entry for N1
216         And placex has no entry for W10
217         And placex contains
218           | object | rank_search | rank_address |
219           | R20    | 4           | 4 |
220           | R21    | 30          | 30 |
221           | R22    | 30          | 30 |
222           | R23    | 30          | 30 |
223           | R40    | 4           | 0 |
224           | R41    | 8           | 0 |
225
226     Scenario: search and address ranks for highways correctly assigned
227         Given the scene roads-with-pois
228         And the places
229           | osm | class    | type  |
230           | N1  | highway  | bus_stop |
231         And the places
232           | osm | class    | type         | geometry |
233           | W1  | highway  | primary      | :w-south |
234           | W2  | highway  | secondary    | :w-south |
235           | W3  | highway  | tertiary     | :w-south |
236           | W4  | highway  | residential  | :w-north |
237           | W5  | highway  | unclassified | :w-north |
238           | W6  | highway  | something    | :w-north |
239         When importing
240         Then placex contains
241           | object | rank_search | rank_address |
242           | N1     | 30          |  0 |
243           | W1     | 26          | 26 |
244           | W2     | 26          | 26 |
245           | W3     | 26          | 26 |
246           | W4     | 26          | 26 |
247           | W5     | 26          | 26 |
248           | W6     | 26          | 26 |
249
250     Scenario: rank and inclusion of landuses
251         Given the named places
252           | osm | class   | type |
253           | N2  | landuse | residential |
254         And the named places
255           | osm | class   | type        | geometry |
256           | W2  | landuse | residential | 1 1, 1 1.1 |
257           | W4  | landuse | residential | poly-area:0.1 |
258           | R2  | landuse | residential | poly-area:0.05 |
259           | R3  | landuse | forrest     | poly-area:0.5 |
260         When importing
261         Then placex contains
262           | object | rank_search | rank_address |
263           | N2     | 30          |  0 |
264           | W2     | 30          |  0 |
265           | W4     | 22          | 22 |
266           | R2     | 22          | 22 |
267           | R3     | 22          |  0 |
268
269     Scenario: rank and inclusion of naturals
270        Given the named places
271           | osm | class   | type |
272           | N2  | natural | peak |
273           | N4  | natural | volcano |
274           | N5  | natural | foobar |
275        And the named places
276           | osm | class   | type           | geometry |
277           | W2  | natural | mountain_range | 12 12,11 11 |
278           | W3  | natural | foobar         | 13 13,13.1 13 |
279           | R3  | natural | volcano        | poly-area:0.1 |
280           | R4  | natural | foobar         | poly-area:0.5 |
281           | R5  | natural | sea            | poly-area:5.0 |
282           | R6  | natural | sea            | poly-area:0.01 |
283        When importing
284        Then placex contains
285           | object | rank_search | rank_address |
286           | N2     | 18          | 0 |
287           | N4     | 18          | 0 |
288           | N5     | 30          | 30 |
289           | W2     | 18          | 0 |
290           | R3     | 18          | 0 |
291           | R4     | 30          | 30 |
292           | R5     | 4           | 0 |
293           | R6     | 4           | 0 |
294           | W3     | 30          | 30 |
295
296     Scenario: boundary ways for countries and states are ignored
297         Given the named places
298           | osm | class    | type           | admin | geometry |
299           | W4  | boundary | administrative | 2     | poly-area:0.1 |
300           | R4  | boundary | administrative | 2     | poly-area:0.1 |
301           | W5  | boundary | administrative | 3     | poly-area:0.1 |
302           | R5  | boundary | administrative | 3     | poly-area:0.1 |
303           | W6  | boundary | administrative | 4     | poly-area:0.1 |
304           | R6  | boundary | administrative | 4     | poly-area:0.1 |
305           | W7  | boundary | administrative | 5     | poly-area:0.1 |
306           | R7  | boundary | administrative | 5     | poly-area:0.1 |
307        When importing
308        Then placex contains exactly
309            | object |
310            | R4     |
311            | R5     |
312            | R6     |
313            | W7     |
314            | R7     |