]> git.openstreetmap.org Git - nominatim.git/blob - test/bdd/db/import/interpolation.feature
add forgotten BDD test
[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 and no street nearby
6         Given the grid with origin 1,1
7           | 1 |  | 9 |  | 2 |
8         Given the places
9           | osm | class | type   | housenr |
10           | N1  | place | house  | 2       |
11           | N2  | place | house  | 6       |
12         And the places
13           | osm | class | type   | addr+interpolation | geometry |
14           | W1  | place | houses | even               | 1,2      |
15         And the ways
16           | id | nodes |
17           | 1  | 1,2 |
18         When importing
19         Then W1 expands to no interpolation
20
21     Scenario: Simple even interpolation line with two points
22         Given the grid with origin 1,1
23           | 1 |  | 9 |  | 2 |
24           | 4 |  |   |  | 5 |
25         Given the places
26           | osm | class | type   | housenr |
27           | N1  | place | house  | 2       |
28           | N2  | place | house  | 6       |
29         And the places
30           | osm | class | type   | addr+interpolation | geometry |
31           | W1  | place | houses | even               | 1,2      |
32         And the named places
33           | osm | class   | type        | geometry |
34           | W10 | highway | residential | 4,5      |
35         And the ways
36           | id | nodes |
37           | 1  | 1,2 |
38         When importing
39         Then W1 expands to interpolation
40           | start | end | geometry |
41           | 4     | 4   | 9 |
42
43     Scenario: Backwards even two point interpolation line
44         Given the grid with origin 1,1
45           | 1 | 8 | 9 | 2 |
46           | 4 |   |   | 5 |
47         Given the places
48           | osm | class | type   | housenr |
49           | N1  | place | house  | 2       |
50           | N2  | place | house  | 8       |
51         And the places
52           | osm | class | type   | addr+interpolation | geometry |
53           | W1  | place | houses | even               | 2,1      |
54         And the named places
55           | osm | class   | type        | geometry |
56           | W10 | highway | residential | 4,5      |
57         And the ways
58           | id | nodes |
59           | 1  | 2,1 |
60         When importing
61         Then W1 expands to interpolation
62           | start | end | geometry |
63           | 4     | 6   | 9,8      |
64
65     Scenario: Simple odd two point interpolation
66         Given the grid with origin 1,1
67           | 1 | 8 |  |  | 9 | 2 |
68           | 4 |   |  |  | 5 |   |
69         Given the places
70           | osm | class | type   | housenr |
71           | N1  | place | house  | 1       |
72           | N2  | place | house  | 11      |
73         And the places
74           | osm | class | type   | addr+interpolation | geometry |
75           | W1  | place | houses | odd                | 1,2      |
76         And the named places
77           | osm | class   | type        | geometry |
78           | W10 | highway | residential | 4,5      |
79         And the ways
80           | id | nodes |
81           | 1  | 1,2 |
82         When importing
83         Then W1 expands to interpolation
84           | start | end | geometry |
85           | 3     | 9   | 8,9      |
86
87     Scenario: Simple all two point interpolation
88         Given the grid with origin 1,1
89           | 1 | 8 | 9 | 2 |
90           | 4 |   |   | 5 |
91         Given the places
92           | osm | class | type   | housenr |
93           | N1  | place | house  | 1       |
94           | N2  | place | house  | 4       |
95         And the places
96           | osm | class | type   | addr+interpolation | geometry |
97           | W1  | place | houses | all                | 1,2      |
98         And the named places
99           | osm | class   | type        | geometry |
100           | W10 | highway | residential | 4,5      |
101         And the ways
102           | id | nodes |
103           | 1  | 1,2 |
104         When importing
105         Then W1 expands to interpolation
106           | start | end | geometry |
107           | 2     | 3   | 8,9 |
108
109     Scenario: Even two point interpolation line with intermediate empty node
110         Given the grid
111           | 1 | 8 |  | 3 | 9 | 2 |
112           | 4 |   |  |   | 5 |   |
113         Given the places
114           | osm | class | type   | housenr |
115           | N1  | place | house  | 2       |
116           | N2  | place | house  | 12      |
117         And the places
118           | osm | class | type   | addr+interpolation | geometry |
119           | W1  | place | houses | even               | 1,3,2    |
120         And the named places
121           | osm | class   | type        | geometry |
122           | W10 | highway | residential | 4,5      |
123         And the ways
124           | id | nodes |
125           | 1  | 1,3,2 |
126         When importing
127         Then W1 expands to interpolation
128           | start | end | geometry |
129           | 4     | 10  | 8,3,9 |
130
131     Scenario: Even two point interpolation line with intermediate duplicated empty node
132         Given the grid
133           | 4 |   |   |   | 5 |
134           | 1 | 8 | 3 | 9 | 2 |
135         Given the places
136           | osm | class | type   | housenr |
137           | N1  | place | house  | 2       |
138           | N2  | place | house  | 10      |
139         And the places
140           | osm | class | type   | addr+interpolation | geometry |
141           | W1  | place | houses | even               | 1,3,2 |
142         And the named places
143           | osm | class   | type        | geometry |
144           | W10 | highway | residential | 4,5      |
145         And the ways
146           | id | nodes |
147           | 1  | 1,3,3,2 |
148         When importing
149         Then W1 expands to interpolation
150           | start | end | geometry |
151           | 4     | 8   | 8,3,9 |
152
153     Scenario: Simple even three point interpolation line
154         Given the grid
155           | 4 |   |  |   |   |   | 5 |
156           | 1 | 8 |  | 9 | 3 | 7 | 2 |
157         Given the places
158           | osm | class | type   | housenr |
159           | N1  | place | house  | 2       |
160           | N2  | place | house  | 14      |
161           | N3  | place | house  | 10      |
162         And the places
163           | osm | class | type   | addr+interpolation | geometry |
164           | W1  | place | houses | even               | 1,3,2    |
165         And the named places
166           | osm | class   | type        | geometry |
167           | W10 | highway | residential | 4,5      |
168         And the ways
169           | id | nodes |
170           | 1  | 1,3,2 |
171         When importing
172         Then W1 expands to interpolation
173           | start | end | geometry |
174           | 4     |  8  | 8,9 |
175           | 12    | 12  | 7 |
176
177     Scenario: Simple even four point interpolation line
178         Given the grid
179           | 1 | 10 |   | 11 | 3 |
180           |   |    |   |    | 12|
181           |   |    | 4 | 13 | 2 |
182         Given the places
183           | osm | class | type  | housenr |
184           | N1  | place | house | 2       |
185           | N2  | place | house | 14      |
186           | N3  | place | house | 10      |
187           | N4  | place | house | 18      |
188         And the places
189           | osm | class | type   | addr+interpolation | geometry |
190           | W1  | place | houses | even               | 1,3,2,4  |
191         And the named places
192           | osm | class   | type        | geometry |
193           | W10 | highway | residential | 1,3,2,4  |
194         And the ways
195           | id | nodes |
196           | 1  | 1,3,2,4 |
197         When importing
198         Then W1 expands to interpolation
199           | start | end | geometry |
200           | 4     | 8   | 10,11    |
201           | 12    | 12  | 12       |
202           | 16    | 16  | 13       |
203
204     Scenario: Reverse simple even three point interpolation line
205         Given the grid
206           | 1 | 8  |  | 9 | 3 | 7 | 2 |
207           | 4 |    |  |   |   |   | 5 |
208         Given the places
209           | osm | class | type  | housenr |
210           | N1  | place | house | 2       |
211           | N2  | place | house | 14      |
212           | N3  | place | house | 10      |
213         And the places
214           | osm | class | type   | addr+interpolation | geometry |
215           | W1  | place | houses | even               | 2,3,1    |
216         And the named places
217           | osm | class   | type        | geometry |
218           | W10 | highway | residential | 4,5      |
219         And the ways
220           | id | nodes |
221           | 1  | 2,3,1 |
222         When importing
223         Then W1 expands to interpolation
224           | start | end | geometry |
225           | 4     |  8  | 8,9      |
226           | 12    | 12  | 7        |
227
228     Scenario: Even three point interpolation line with odd center point
229         Given the grid
230           | 1 |  | 10 |  |  | 11 | 3 | 2 |
231           | 4 |  |    |  |  |    |   | 5 |
232         Given the places
233           | osm | class | type  | housenr |
234           | N1  | place | house | 2       |
235           | N2  | place | house | 8       |
236           | N3  | place | house | 7       |
237         And the places
238           | osm | class | type   | addr+interpolation | geometry |
239           | W1  | place | houses | even               | 1,3,2    |
240         And the named places
241           | osm | class   | type        | geometry |
242           | W10 | highway | residential | 4,5      |
243         And the ways
244           | id | nodes |
245           | 1  | 1,3,2 |
246         When importing
247         Then W1 expands to interpolation
248           | start | end | geometry |
249           | 4     | 6   | 10,11 |
250
251     Scenario: Interpolation line with self-intersecting way
252         Given the grid
253           | 1  | 9 | 2 |
254           |    |   | 8 |
255           |    |   | 3 |
256         Given the places
257           | osm | class | type  | housenr |
258           | N1  | place | house | 2       |
259           | N2  | place | house | 6       |
260           | N3  | place | house | 10      |
261         And the places
262           | osm | class | type   | addr+interpolation | geometry |
263           | W1  | place | houses | even               | 1,2,3,2  |
264         And the named places
265           | osm | class   | type        | geometry |
266           | W10 | highway | residential | 1,2,3    |
267         And the ways
268           | id | nodes |
269           | 1  | 1,2,3,2 |
270         When importing
271         Then W1 expands to interpolation
272           | start | end | geometry |
273           | 4     | 4   | 9        |
274           | 8     | 8   | 8        |
275           | 8     | 8   | 8        |
276
277     Scenario: Interpolation line with self-intersecting way II
278         Given the grid
279           | 1  | 9 | 2 |
280           |    |   | 3 |
281         Given the places
282           | osm | class | type  | housenr |
283           | N1  | place | house | 2       |
284           | N2  | place | house | 6       |
285         And the places
286           | osm | class | type   | addr+interpolation | geometry |
287           | W1  | place | houses | even               | 1,2,3,2  |
288         And the named places
289           | osm | class   | type        | geometry |
290           | W10 | highway | residential | 1,2,3    |
291         And the ways
292           | id | nodes |
293           | 1  | 1,2,3,2 |
294         When importing
295         Then W1 expands to interpolation
296           | start | end | geometry |
297           | 4     | 4   | 9        |
298
299     Scenario: addr:street on interpolation way
300         Given the grid
301           |    | 1 |  | 2 |    |
302           | 10 |   |  |   | 11 |
303           | 20 |   |  |   | 21 |
304         And the places
305           | osm | class | type  | housenr | geometry |
306           | N1  | place | house | 2       | 1        |
307           | N2  | place | house | 6       | 2        |
308           | N3  | place | house | 12      | 1        |
309           | N4  | place | house | 16      | 2        |
310         And the places
311           | osm | class   | type    | addr+interpolation | street       | geometry |
312           | W10 | place   | houses  | even               |              | 1,2      |
313           | W11 | place   | houses  | even               | Cloud Street | 1,2      |
314         And the places
315           | osm | class   | type     | name         | geometry |
316           | W2  | highway | tertiary | Sun Way      | 10,11    |
317           | W3  | highway | tertiary | Cloud Street | 20,21    |
318         And the ways
319           | id | nodes |
320           | 10 | 1,2   |
321           | 11 | 3,4   |
322         When importing
323         Then placex contains
324           | object | parent_place_id |
325           | N1     | W2 |
326           | N2     | W2 |
327           | N3     | W3 |
328           | N4     | W3 |
329         Then W10 expands to interpolation
330           | parent_place_id | start | end |
331           | W2              | 4     | 4 |
332         Then W11 expands to interpolation
333           | parent_place_id | start | end |
334           | W3              | 14    | 14 |
335         When sending search query "16 Cloud Street"
336         Then results contain
337          | ID | osm |
338          | 0  | N4  |
339         When sending search query "14 Cloud Street"
340         Then results contain
341          | ID | osm |
342          | 0  | W11 |
343
344     Scenario: addr:street on housenumber way
345         Given the grid
346           |    | 1 |  | 2 |    |
347           | 10 |   |  |   | 11 |
348           | 20 |   |  |   | 21 |
349         And the places
350           | osm | class | type  | housenr | street       | geometry |
351           | N1  | place | house | 2       |              | 1        |
352           | N2  | place | house | 6       |              | 2        |
353           | N3  | place | house | 12      | Cloud Street | 1        |
354           | N4  | place | house | 16      | Cloud Street | 2        |
355         And the places
356           | osm | class   | type    | addr+interpolation | geometry |
357           | W10 | place   | houses  | even               | 1,2      |
358           | W11 | place   | houses  | even               | 1,2      |
359         And the places
360           | osm | class   | type     | name         | geometry |
361           | W2  | highway | tertiary | Sun Way      | 10,11    |
362           | W3  | highway | tertiary | Cloud Street | 20,21    |
363         And the ways
364           | id  | nodes |
365           | 10  | 1,2 |
366           | 11  | 3,4 |
367         When importing
368         Then placex contains
369           | object | parent_place_id |
370           | N1     | W2 |
371           | N2     | W2 |
372           | N3     | W3 |
373           | N4     | W3 |
374         Then W10 expands to interpolation
375           | parent_place_id | start | end |
376           | W2              | 4     | 4 |
377         Then W11 expands to interpolation
378           | parent_place_id | start | end |
379           | W3              | 14    | 14 |
380         When sending search query "16 Cloud Street"
381         Then results contain
382          | ID | osm |
383          | 0  | N4  |
384         When sending search query "14 Cloud Street"
385         Then results contain
386          | ID | osm |
387          | 0  | W11 |
388
389     Scenario: Geometry of points and way don't match (github #253)
390         Given the places
391           | osm | class | type        | housenr | geometry |
392           | N1  | place | house       | 10      | 144.9632341 -37.76163 |
393           | N2  | place | house       | 6       | 144.9630541 -37.7628174 |
394           | N3  | shop  | supermarket | 2       | 144.9629794 -37.7630755 |
395         And the places
396           | osm | class | type   | addr+interpolation | geometry |
397           | W1  | place | houses | even    | 144.9632341 -37.76163,144.9630541 -37.7628172,144.9629794 -37.7630755 |
398         And the named places
399           | osm | class   | type        | geometry |
400           | W10 | highway | residential | 144.9632341 -37.76163,144.9629794 -37.7630755    |
401         And the ways
402           | id | nodes |
403           | 1  | 1,2,3 |
404         When importing
405         Then W1 expands to interpolation
406           | start | end | geometry |
407           | 4     | 4   | 144.963016 -37.762946 |
408           | 8     | 8   | 144.96314407 -37.762223692 |
409
410     Scenario: Place with missing address information
411         Given the grid
412           | 1 |  | 2 |  |  | 3 |
413           | 4 |  |   |  |  | 5 |
414         And the places
415           | osm | class   | type   | housenr |
416           | N1  | place   | house  | 23      |
417           | N2  | amenity | school |         |
418           | N3  | place   | house  | 29      |
419         And the places
420           | osm | class | type   | addr+interpolation | geometry |
421           | W1  | place | houses | odd                | 1,2,3 |
422         And the named places
423           | osm | class   | type        | geometry |
424           | W10 | highway | residential | 4,5      |
425         And the ways
426           | id | nodes |
427           | 1  | 1,2,3 |
428         When importing
429         Then W1 expands to interpolation
430           | start | end | geometry |
431           | 25    | 27  | 0.000016 0,0.00002 0,0.000033 0 |
432
433     Scenario: Ways without node entries are ignored
434         Given the places
435           | osm | class | type   | housenr | geometry |
436           | W1  | place | houses | even    | 1 1, 1 1.001 |
437         And the named places
438           | osm | class   | type        | geometry |
439           | W10 | highway | residential | 1 1, 1 1.001 |
440         When importing
441         Then W1 expands to no interpolation
442
443     Scenario: Ways with nodes without housenumbers are ignored
444         Given the grid
445           | 1 |  | 2 |
446           | 4 |  | 5 |
447         Given the places
448           | osm | class | type   |
449           | N1  | place | house  |
450           | N2  | place | house  |
451         Given the places
452           | osm | class | type   | housenr | geometry |
453           | W1  | place | houses | even    | 1,2 |
454         And the named places
455           | osm | class   | type        | geometry |
456           | W10 | highway | residential | 4,5      |
457         When importing
458         Then W1 expands to no interpolation
459
460     Scenario: Two point interpolation starting at 0
461         Given the grid with origin 1,1
462           | 1 | 10 |  |  | 11 | 2 |
463           | 4 |    |  |  |    | 5 |
464         Given the places
465           | osm | class | type   | housenr |
466           | N1  | place | house  | 0       |
467           | N2  | place | house  | 10      |
468         And the places
469           | osm | class | type   | addr+interpolation | geometry |
470           | W1  | place | houses | even               | 1,2      |
471         And the places
472           | osm | class   | type        | name        | geometry |
473           | W10 | highway | residential | London Road |4,5      |
474         And the ways
475           | id | nodes |
476           | 1  | 1,2 |
477         When importing
478         Then W1 expands to interpolation
479           | start | end | geometry |
480           | 2     | 8   | 10,11 |
481         When sending v1/reverse at 1,1
482         Then results contain
483           | ID | osm | type  | display_name |
484           | 0  | N1  | house | 0, London Road |
485
486     Scenario: Parenting of interpolation with additional tags
487         Given the grid
488           | 1 |   |   |   |   |   |
489           |   |   |   |   |   |   |
490           |   | 8 |   |   | 9 |   |
491           |   |   |   |   |   |   |
492           | 2 |   |   |   |   | 3 |
493         Given the places
494           | osm | class | type  | housenr | addr+street |
495           | N8  | place | house | 10      | Horiz St    |
496           | N9  | place | house | 16      | Horiz St    |
497         And the places
498           | osm | class   | type        | name     | geometry |
499           | W1  | highway | residential | Vert St  | 1,2      |
500           | W2  | highway | residential | Horiz St | 2,3      |
501         And the places
502           | osm | class | type   | addr+interpolation | addr+inclusion | geometry |
503           | W10 | place | houses | even               | actual         | 8,9      |
504         And the ways
505           | id | nodes |
506           | 10 | 8,9   |
507         When importing
508         Then placex contains
509           | object | parent_place_id |
510           | N8     | W2              |
511           | N9     | W2              |
512         And W10 expands to interpolation
513           | start | end | parent_place_id |
514           | 12    | 14  | W2              |
515
516
517     Scenario Outline: Bad interpolation values are ignored
518         Given the grid with origin 1,1
519           | 1 |  | 9 |  | 2 |
520           | 4 |  |   |  | 5 |
521         Given the places
522           | osm | class | type   | housenr |
523           | N1  | place | house  | 2       |
524           | N2  | place | house  | 6       |
525         And the places
526           | osm | class | type   | addr+interpolation | geometry |
527           | W1  | place | houses | <value>            | 1,2      |
528         And the named places
529           | osm | class   | type        | geometry |
530           | W10 | highway | residential | 4,5      |
531         And the ways
532           | id | nodes |
533           | 1  | 1,2 |
534         When importing
535         Then W1 expands to no interpolation
536
537         Examples:
538           | value |
539           | foo   |
540           | x     |
541           | 12-2  |
542
543
544     Scenario: Interpolation line where points have been moved (Github #3022)
545         Given the 0.00001 grid
546          | 1 | | | | | | | | 2 | 3 | 9 | | | | | | | | 4 |
547         Given the places
548           | osm | class | type   | housenr | geometry |
549           | N1  | place | house  | 2       | 1 |
550           | N2  | place | house  | 18      | 3 |
551           | N3  | place | house  | 24      | 9 |
552           | N4  | place | house  | 42      | 4 |
553         And the places
554           | osm | class | type   | addr+interpolation | geometry |
555           | W1  | place | houses | even               | 1,2,3,4  |
556         And the named places
557           | osm | class   | type        | geometry |
558           | W10 | highway | residential | 1,4      |
559         And the ways
560           | id | nodes   |
561           | 1  | 1,2,3,4 |
562         When importing
563         Then W1 expands to interpolation
564           | start | end |
565           | 4     | 16  |
566           | 20    | 22  |
567           | 26    | 40  |
568
569
570     Scenario: Interpolation line with duplicated points
571         Given the grid
572           | 7 | 10 | 8 | 11 | 9 |
573           | 4 |    |   |    | 5 |
574         Given the places
575           | osm | class | type   | housenr | geometry |
576           | N1  | place | house  | 2       | 7 |
577           | N2  | place | house  | 6       | 8 |
578           | N3  | place | house  | 10      | 8 |
579           | N4  | place | house  | 14      | 9 |
580         And the places
581           | osm | class | type   | addr+interpolation | geometry |
582           | W1  | place | houses | even               | 7,8,8,9  |
583         And the named places
584           | osm | class   | type        | geometry |
585           | W10 | highway | residential | 4,5      |
586         And the ways
587           | id | nodes   |
588           | 1  | 1,2,3,4 |
589         When importing
590         Then W1 expands to interpolation
591           | start | end | geometry |
592           | 4     | 4   | 10       |
593           | 12    | 12  | 11       |
594
595
596     Scenario: Interpolaton line with broken way geometry (Github #2986)
597         Given the grid
598           | 1 | 8 | 10 | 11 | 9 | 2 | 3 | 4 |
599         Given the places
600           | osm | class | type   | housenr |
601           | N1  | place | house  | 2       |
602           | N2  | place | house  | 8       |
603           | N3  | place | house  | 12      |
604           | N4  | place | house  | 14      |
605         And the places
606           | osm | class | type   | addr+interpolation | geometry |
607           | W1  | place | houses | even               | 8,9      |
608         And the named places
609           | osm | class   | type        | geometry |
610           | W10 | highway | residential | 1,4      |
611         And the ways
612           | id | nodes       |
613           | 1  | 1,8,9,2,3,4 |
614         When importing
615         Then W1 expands to interpolation
616           | start | end | geometry |
617           | 4     | 6   | 10,11    |