]> git.openstreetmap.org Git - nominatim.git/blob - test/bdd/db/import/interpolation.feature
restrict linked places to place nodes
[nominatim.git] / test / bdd / db / import / interpolation.feature
1 @DB
2 Feature: Import of address interpolations
3     Tests that interpolated addresses are added correctly
4
5     Scenario: Simple even interpolation line with two points
6         Given the places
7           | osm | class | type   | housenr | geometry |
8           | N1  | place | house  | 2       | 1 1 |
9           | N2  | place | house  | 6       | 1 1.001 |
10         And the places
11           | osm | class | type   | addr+interpolation | geometry |
12           | W1  | place | houses | even    | 1 1, 1 1.001 |
13         And the ways
14           | id | nodes |
15           | 1  | 1,2 |
16         When importing
17         Then W1 expands to interpolation
18           | start | end | geometry |
19           | 2     | 6   | 1 1, 1 1.001 |
20
21     Scenario: Backwards even two point interpolation line
22         Given the places
23           | osm | class | type   | housenr | geometry |
24           | N1  | place | house  | 2       | 1 1 |
25           | N2  | place | house  | 6       | 1 1.001 |
26         And the places
27           | osm | class | type   | addr+interpolation | geometry |
28           | W1  | place | houses | even    | 1 1.001, 1 1 |
29         And the ways
30           | id | nodes |
31           | 1  | 2,1 |
32         When importing
33         Then W1 expands to interpolation
34           | start | end | geometry |
35           | 2     | 6   | 1 1, 1 1.001 |
36
37     Scenario: Simple odd two point interpolation
38         Given the places
39           | osm | class | type   | housenr | geometry |
40           | N1  | place | house  | 1       | 1 1 |
41           | N2  | place | house  | 11      | 1 1.001 |
42         And the places
43           | osm | class | type   | addr+interpolation | geometry |
44           | W1  | place | houses | odd     | 1 1, 1 1.001 |
45         And the ways
46           | id | nodes |
47           | 1  | 1,2 |
48         When importing
49         Then W1 expands to interpolation
50           | start | end | geometry |
51           | 1     | 11  | 1 1, 1 1.001 |
52
53     Scenario: Simple all two point interpolation
54         Given the places
55           | osm | class | type   | housenr | geometry |
56           | N1  | place | house  | 1       | 1 1 |
57           | N2  | place | house  | 3       | 1 1.001 |
58         And the places
59           | osm | class | type   | addr+interpolation | geometry |
60           | W1  | place | houses | all     | 1 1, 1 1.001 |
61         And the ways
62           | id | nodes |
63           | 1  | 1,2 |
64         When importing
65         Then W1 expands to interpolation
66           | start | end | geometry |
67           | 1     | 3   | 1 1, 1 1.001 |
68
69     Scenario: Even two point interpolation line with intermediate empty node
70         Given the places
71           | osm | class | type   | housenr | geometry |
72           | N1  | place | house  | 2       | 1 1 |
73           | N2  | place | house  | 10      | 1.001 1.001 |
74         And the places
75           | osm | class | type   | addr+interpolation | geometry |
76           | W1  | place | houses | even    | 1 1, 1 1.001, 1.001 1.001 |
77         And the ways
78           | id | nodes |
79           | 1  | 1,3,2 |
80         When importing
81         Then W1 expands to interpolation
82           | start | end | geometry |
83           | 2     | 10  | 1 1, 1 1.001, 1.001 1.001 |
84
85     Scenario: Even two point interpolation line with intermediate duplicated empty node
86         Given the places
87           | osm | class | type   | housenr | geometry |
88           | N1  | place | house  | 2       | 1 1 |
89           | N2  | place | house  | 10      | 1.001 1.001 |
90         And the places
91           | osm | class | type   | addr+interpolation | geometry |
92           | W1  | place | houses | even    | 1 1, 1 1.001, 1.001 1.001 |
93         And the ways
94           | id | nodes |
95           | 1  | 1,3,3,2 |
96         When importing
97         Then W1 expands to interpolation
98           | start | end | geometry |
99           | 2     | 10  | 1 1, 1 1.001, 1.001 1.001 |
100
101     Scenario: Simple even three point interpolation line
102         Given the places
103           | osm | class | type   | housenr | geometry |
104           | N1  | place | house  | 2       | 1 1 |
105           | N2  | place | house  | 14      | 1.001 1.001 |
106           | N3  | place | house  | 10      | 1 1.001 |
107         And the places
108           | osm | class | type   | addr+interpolation | geometry |
109           | W1  | place | houses | even    | 1 1, 1 1.001, 1.001 1.001 |
110         And the ways
111           | id | nodes |
112           | 1  | 1,3,2 |
113         When importing
114         Then W1 expands to interpolation
115           | start | end | geometry |
116           | 2     | 10  | 1 1, 1 1.001 |
117           | 10    | 14  | 1 1.001, 1.001 1.001 |
118
119     Scenario: Simple even four point interpolation line
120         Given the places
121           | osm | class | type  | housenr | geometry |
122           | N1  | place | house | 2       | 1 1 |
123           | N2  | place | house | 14      | 1.001 1.001 |
124           | N3  | place | house | 10      | 1 1.001 |
125           | N4  | place | house | 18      | 1.001 1.002 |
126         And the places
127           | osm | class | type   | addr+interpolation | geometry |
128           | W1  | place | houses | even    | 1 1, 1 1.001, 1.001 1.001, 1.001 1.002 |
129         And the ways
130           | id | nodes |
131           | 1  | 1,3,2,4 |
132         When importing
133         Then W1 expands to interpolation
134           | start | end | geometry |
135           | 2     | 10  | 1 1, 1 1.001 |
136           | 10    | 14  | 1 1.001, 1.001 1.001 |
137           | 14    | 18  | 1.001 1.001, 1.001 1.002 |
138
139     Scenario: Reverse simple even three point interpolation line
140         Given the places
141           | osm | class | type  | housenr | geometry |
142           | N1  | place | house | 2       | 1 1 |
143           | N2  | place | house | 14      | 1.001 1.001 |
144           | N3  | place | house | 10      | 1 1.001 |
145         And the places
146           | osm | class | type   | addr+interpolation | geometry |
147           | W1  | place | houses | even    | 1.001 1.001, 1 1.001, 1 1 |
148         And the ways
149           | id | nodes |
150           | 1  | 2,3,1 |
151         When importing
152         Then W1 expands to interpolation
153           | start | end | geometry |
154           | 2     | 10  | 1 1, 1 1.001 |
155           | 10    | 14  | 1 1.001, 1.001 1.001 |
156
157     Scenario: Even three point interpolation line with odd center point
158         Given the places
159           | osm | class | type  | housenr | geometry |
160           | N1  | place | house | 2       | 1 1 |
161           | N2  | place | house | 8       | 1.001 1.001 |
162           | N3  | place | house | 7       | 1 1.001 |
163         And the places
164           | osm | class | type   | addr+interpolation | geometry |
165           | W1  | place | houses | even    | 1 1, 1 1.001, 1.001 1.001 |
166         And the ways
167           | id | nodes |
168           | 1  | 1,3,2 |
169         When importing
170         Then W1 expands to interpolation
171           | start | end | geometry |
172           | 2     | 7   | 1 1, 1 1.001 |
173           | 7     | 8   | 1 1.001, 1.001 1.001 |
174
175     Scenario: Interpolation line with self-intersecting way
176         Given the places
177           | osm | class | type  | housenr | geometry |
178           | N1  | place | house | 2       | 0 0 |
179           | N2  | place | house | 6       | 0 0.001 |
180           | N3  | place | house | 10      | 0 0.002 |
181         And the places
182           | osm | class | type   | addr+interpolation | geometry |
183           | W1  | place | houses | even    | 0 0, 0 0.001, 0 0.002, 0 0.001 |
184         And the ways
185           | id | nodes |
186           | 1  | 1,2,3,2 |
187         When importing
188         Then W1 expands to interpolation
189           | start | end | geometry |
190           | 2     | 6   | 0 0, 0 0.001 |
191           | 6     | 10  | 0 0.001, 0 0.002 |
192           | 6     | 10  | 0 0.001, 0 0.002 |
193
194     Scenario: Interpolation line with self-intersecting way II
195         Given the places
196           | osm | class | type  | housenr | geometry |
197           | N1  | place | house | 2       | 0 0 |
198           | N2  | place | house | 6       | 0 0.001 |
199         And the places
200           | osm | class | type   | addr+interpolation | geometry |
201           | W1  | place | houses | even    | 0 0, 0 0.001, 0 0.002, 0 0.001 |
202         And the ways
203           | id | nodes |
204           | 1  | 1,2,3,2 |
205         When importing
206         Then W1 expands to interpolation
207           | start | end | geometry |
208           | 2     | 6   | 0 0, 0 0.001 |
209
210     Scenario: addr:street on interpolation way
211         Given the scene parallel-road
212         And the places
213           | osm | class | type  | housenr | geometry |
214           | N1  | place | house | 2       | :n-middle-w |
215           | N2  | place | house | 6       | :n-middle-e |
216           | N3  | place | house | 12      | :n-middle-w |
217           | N4  | place | house | 16      | :n-middle-e |
218         And the places
219           | osm | class   | type    | addr+interpolation | street       | geometry |
220           | W10 | place   | houses  | even    |              | :w-middle |
221           | W11 | place   | houses  | even    | Cloud Street | :w-middle |
222         And the places
223           | osm | class   | type     | name         | geometry |
224           | W2  | highway | tertiary | Sun Way      | :w-north |
225           | W3  | highway | tertiary | Cloud Street | :w-south |
226         And the ways
227           | id | nodes |
228           | 10  | 1,100,101,102,2 |
229           | 11  | 3,200,201,202,4 |
230         When importing
231         Then placex contains
232           | object | parent_place_id |
233           | N1     | W2 |
234           | N2     | W2 |
235           | N3     | W3 |
236           | N4     | W3 |
237         Then W10 expands to interpolation
238           | parent_place_id | start | end |
239           | W2              | 2     | 6 |
240         Then W11 expands to interpolation
241           | parent_place_id | start | end |
242           | W3              | 12    | 16 |
243         When searching for "16 Cloud Street"
244         Then results contain
245          | ID | osm_type | osm_id |
246          | 0  | N        | 4 |
247         When searching for "14 Cloud Street"
248         Then results contain
249          | ID | osm_type | osm_id |
250          | 0  | W        | 11 |
251         When searching for "18 Cloud Street"
252         Then results contain
253          | ID | osm_type | osm_id |
254          | 0  | W        | 3 |
255
256     Scenario: addr:street on housenumber way
257         Given the scene parallel-road
258         And the places
259           | osm | class | type  | housenr | street       | geometry |
260           | N1  | place | house | 2       |              | :n-middle-w |
261           | N2  | place | house | 6       |              | :n-middle-e |
262           | N3  | place | house | 12      | Cloud Street | :n-middle-w |
263           | N4  | place | house | 16      | Cloud Street | :n-middle-e |
264         And the places
265           | osm | class   | type    | addr+interpolation | geometry |
266           | W10 | place   | houses  | even               | :w-middle |
267           | W11 | place   | houses  | even               | :w-middle |
268         And the places
269           | osm | class   | type     | name         | geometry |
270           | W2  | highway | tertiary | Sun Way      | :w-north |
271           | W3  | highway | tertiary | Cloud Street | :w-south |
272         And the ways
273           | id  | nodes |
274           | 10  | 1,100,101,102,2 |
275           | 11  | 3,200,201,202,4 |
276         When importing
277         Then placex contains
278           | object | parent_place_id |
279           | N1     | W2 |
280           | N2     | W2 |
281           | N3     | W3 |
282           | N4     | W3 |
283         Then W10 expands to interpolation
284           | parent_place_id | start | end |
285           | W2              | 2     | 6 |
286         Then W11 expands to interpolation
287           | parent_place_id | start | end |
288           | W3              | 12    | 16 |
289         When searching for "16 Cloud Street"
290         Then results contain
291          | ID | osm_type | osm_id |
292          | 0  | N        | 4 |
293         When searching for "14 Cloud Street"
294         Then results contain
295          | ID | osm_type | osm_id |
296          | 0  | W        | 11 |
297
298     Scenario: Geometry of points and way don't match (github #253)
299         Given the places
300           | osm | class | type        | housenr | geometry |
301           | N1  | place | house       | 10      | 144.9632341 -37.76163 |
302           | N2  | place | house       | 6       | 144.9630541 -37.7628174 |
303           | N3  | shop  | supermarket | 2       | 144.9629794 -37.7630755 |
304         And the places
305           | osm | class | type   | addr+interpolation | geometry |
306           | W1  | place | houses | even    | 144.9632341 -37.76163,144.9630541 -37.7628172,144.9629794 -37.7630755 |
307         And the ways
308           | id | nodes |
309           | 1  | 1,2,3 |
310         When importing
311         Then W1 expands to interpolation
312           | start | end | geometry |
313           | 2     | 6   | 144.9629794 -37.7630755, 144.9630541 -37.7628174 |
314           | 6     | 10  | 144.9630541 -37.7628174, 144.9632341 -37.76163 |
315
316     Scenario: Place with missing address information
317         Given the grid
318           | 1 |  | 2 |  |  | 3 |
319         And the places
320           | osm | class   | type   | housenr |
321           | N1  | place   | house  | 23      |
322           | N2  | amenity | school |         |
323           | N3  | place   | house  | 29      |
324         And the places
325           | osm | class | type   | addr+interpolation | geometry |
326           | W1  | place | houses | odd                | 1,2,3 |
327         And the ways
328           | id | nodes |
329           | 1  | 1,2,3 |
330         When importing
331         Then W1 expands to interpolation
332           | start | end | geometry |
333           | 23    | 29  | 1,2,3 |
334
335     Scenario: Ways without node entries are ignored
336         Given the places
337           | osm | class | type   | housenr | geometry |
338           | W1  | place | houses | even    | 1 1, 1 1.001 |
339         When importing
340         Then W1 expands to no interpolation
341
342     Scenario: Ways without nodes without housenumbers are ignored
343         Given the places
344           | osm | class | type   | housenr | geometry |
345           | N1  | place | house  |         | 1 1 |
346           | N2  | place | house  |         | 1 1.001 |
347           | W1  | place | houses | even    | 1 1, 1 1.001 |
348         When importing
349         Then W1 expands to no interpolation
350