]> git.openstreetmap.org Git - nominatim.git/blob - tests/features/db/import/interpolation.feature
Merge pull request #447 from lonvia/fix-array-expression
[nominatim.git] / tests / features / 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 two point interpolation
6         Given the place nodes
7           | osm_id | class | type  | housenumber | geometry
8           | 1      | place | house | 2           | 1 1
9           | 2      | place | house | 6           | 1 1.001
10         And the place ways
11           | osm_id | class | type   | housenumber | geometry
12           | 1      | place | houses | even        | 1 1, 1 1.001
13         And the ways
14           | id | nodes
15           | 1  | 1,2
16         When importing
17         Then way 1 expands to housenumbers
18           | housenumber | centroid
19           | 4           | 1,1.0005
20
21     Scenario: Simple even two point interpolation with zero beginning
22         Given the place nodes
23           | osm_id | class | type  | housenumber | geometry
24           | 1      | place | house | 0           | 1 1
25           | 2      | place | house | 8           | 1 1.001
26         And the place ways
27           | osm_id | class | type   | housenumber | geometry
28           | 1      | place | houses | even        | 1 1, 1 1.001
29         And the ways
30           | id | nodes
31           | 1  | 1,2
32         When importing
33         Then way 1 expands to housenumbers
34           | housenumber | centroid
35           | 2           | 1,1.00025
36           | 4           | 1,1.0005
37           | 6           | 1,1.00075
38
39     Scenario: Backwards even two point interpolation
40         Given the place nodes
41           | osm_id | class | type  | housenumber | geometry
42           | 1      | place | house | 2           | 1 1
43           | 2      | place | house | 6           | 1 1.001
44         And the place ways
45           | osm_id | class | type   | housenumber | geometry
46           | 1      | place | houses | even        | 1 1.001, 1 1
47         And the ways
48           | id | nodes
49           | 1  | 2,1
50         When importing
51         Then way 1 expands to housenumbers
52           | housenumber | centroid
53           | 4           | 1,1.0005
54
55     Scenario: Even two point interpolation with odd beginning
56         Given the place nodes
57           | osm_id | class | type  | housenumber | geometry
58           | 1      | place | house | 11          | 1 1
59           | 2      | place | house | 16          | 1 1.001
60         And the place ways
61           | osm_id | class | type   | housenumber | geometry
62           | 1      | place | houses | even        | 1 1, 1 1.001
63         And the ways
64           | id | nodes
65           | 1  | 1,2
66         When importing
67         Then way 1 expands to housenumbers
68           | housenumber | centroid
69           | 12          | 1,1.0002
70           | 14          | 1,1.0006
71
72     Scenario: Even two point interpolation with odd end
73         Given the place nodes
74           | osm_id | class | type  | housenumber | geometry
75           | 1      | place | house | 10          | 1 1
76           | 2      | place | house | 15          | 1 1.001
77         And the place ways
78           | osm_id | class | type   | housenumber | geometry
79           | 1      | place | houses | even        | 1 1, 1 1.001
80         And the ways
81           | id | nodes
82           | 1  | 1,2
83         When importing
84         Then way 1 expands to housenumbers
85           | housenumber | centroid
86           | 12          | 1,1.0004
87           | 14          | 1,1.0008
88
89     Scenario: Reverse even two point interpolation with odd beginning
90         Given the place nodes
91           | osm_id | class | type  | housenumber | geometry
92           | 1      | place | house | 11          | 1 1
93           | 2      | place | house | 16          | 1 1.001
94         And the place ways
95           | osm_id | class | type   | housenumber | geometry
96           | 1      | place | houses | even        | 1 1.001, 1 1
97         And the ways
98           | id | nodes
99           | 1  | 2,1
100         When importing
101         Then way 1 expands to housenumbers
102           | housenumber | centroid
103           | 12          | 1,1.0002
104           | 14          | 1,1.0006
105
106     Scenario: Reverse even two point interpolation with odd end
107         Given the place nodes
108           | osm_id | class | type  | housenumber | geometry
109           | 1      | place | house | 10          | 1 1
110           | 2      | place | house | 15          | 1 1.001
111         And the place ways
112           | osm_id | class | type   | housenumber | geometry
113           | 1      | place | houses | even        | 1 1.001, 1 1
114         And the ways
115           | id | nodes
116           | 1  | 2,1
117         When importing
118         Then way 1 expands to housenumbers
119           | housenumber | centroid
120           | 12          | 1,1.0004
121           | 14          | 1,1.0008
122
123       Scenario: Simple odd two point interpolation
124         Given the place nodes
125           | osm_id | class | type  | housenumber | geometry
126           | 1      | place | house | 1           | 1 1
127           | 2      | place | house | 11          | 1 1.001
128         And the place ways
129           | osm_id | class | type   | housenumber | geometry
130           | 1      | place | houses | odd         | 1 1, 1 1.001
131         And the ways
132           | id | nodes
133           | 1  | 1,2
134         When importing
135         Then way 1 expands to housenumbers
136           | housenumber | centroid
137           | 3           | 1,1.0002
138           | 5           | 1,1.0004
139           | 7           | 1,1.0006
140           | 9           | 1,1.0008
141
142       Scenario: Odd two point interpolation with even beginning
143         Given the place nodes
144           | osm_id | class | type  | housenumber | geometry
145           | 1      | place | house | 2           | 1 1
146           | 2      | place | house | 7           | 1 1.001
147         And the place ways
148           | osm_id | class | type   | housenumber | geometry
149           | 1      | place | houses | odd         | 1 1, 1 1.001
150         And the ways
151           | id | nodes
152           | 1  | 1,2
153         When importing
154         Then way 1 expands to housenumbers
155           | housenumber | centroid
156           | 3           | 1,1.0002
157           | 5           | 1,1.0006
158
159      Scenario: Simple all two point interpolation
160         Given the place nodes
161           | osm_id | class | type  | housenumber | geometry
162           | 1      | place | house | 1           | 1 1
163           | 2      | place | house | 3           | 1 1.001
164         And the place ways
165           | osm_id | class | type   | housenumber | geometry
166           | 1      | place | houses | all         | 1 1, 1 1.001
167         And the ways
168           | id | nodes
169           | 1  | 1,2
170         When importing
171         Then way 1 expands to housenumbers
172           | housenumber | centroid
173           | 2           | 1,1.0005
174
175     Scenario: Simple numbered two point interpolation
176         Given the place nodes
177           | osm_id | class | type  | housenumber | geometry
178           | 1      | place | house | 3           | 1 1
179           | 2      | place | house | 9           | 1 1.001
180         And the place ways
181           | osm_id | class | type   | housenumber | geometry
182           | 1      | place | houses | 3           | 1 1, 1 1.001
183         And the ways
184           | id | nodes
185           | 1  | 1,2
186         When importing
187         Then way 1 expands to housenumbers
188           | housenumber | centroid
189           | 6           | 1,1.0005
190
191     Scenario: Even two point interpolation with intermediate empty node
192         Given the place nodes
193           | osm_id | class | type  | housenumber | geometry
194           | 1      | place | house | 2           | 1 1
195           | 2      | place | house | 10          | 1.001 1.001
196         And the place ways
197           | osm_id | class | type   | housenumber | geometry
198           | 1      | place | houses | even        | 1 1, 1 1.001, 1.001 1.001
199         And the ways
200           | id | nodes
201           | 1  | 1,3,2
202         When importing
203         Then way 1 expands to housenumbers
204           | housenumber | centroid
205           | 4           | 1,1.0005
206           | 6           | 1,1.001
207           | 8           | 1.0005,1.001
208
209
210     Scenario: Even two point interpolation with intermediate duplicated empty node
211         Given the place nodes
212           | osm_id | class | type  | housenumber | geometry
213           | 1      | place | house | 2           | 1 1
214           | 2      | place | house | 10          | 1.001 1.001
215         And the place ways
216           | osm_id | class | type   | housenumber | geometry
217           | 1      | place | houses | even        | 1 1, 1 1.001, 1.001 1.001
218         And the ways
219           | id | nodes
220           | 1  | 1,3,3,2
221         When importing
222         Then way 1 expands to housenumbers
223           | housenumber | centroid
224           | 4           | 1,1.0005
225           | 6           | 1,1.001
226           | 8           | 1.0005,1.001
227
228     Scenario: Simple even three point interpolation
229         Given the place nodes
230           | osm_id | class | type  | housenumber | geometry
231           | 1      | place | house | 2           | 1 1
232           | 2      | place | house | 14          | 1.001 1.001
233           | 3      | place | house | 10          | 1 1.001
234         And the place ways
235           | osm_id | class | type   | housenumber | geometry
236           | 1      | place | houses | even        | 1 1, 1 1.001, 1.001 1.001
237         And the ways
238           | id | nodes
239           | 1  | 1,3,2
240         When importing
241         Then way 1 expands to housenumbers
242           | housenumber | centroid
243           | 4           | 1,1.00025
244           | 6           | 1,1.0005
245           | 8           | 1,1.00075
246           | 12          | 1.0005,1.001
247
248      Scenario: Simple even four point interpolation
249         Given the place nodes
250           | osm_id | class | type  | housenumber | geometry
251           | 1      | place | house | 2           | 1 1
252           | 2      | place | house | 14          | 1.001 1.001
253           | 3      | place | house | 10          | 1 1.001
254           | 4      | place | house | 18          | 1.001 1.002
255         And the place ways
256           | osm_id | class | type   | housenumber | geometry
257           | 1      | place | houses | even        | 1 1, 1 1.001, 1.001 1.001, 1.001 1.002
258         And the ways
259           | id | nodes
260           | 1  | 1,3,2,4
261         When importing
262         Then way 1 expands to housenumbers
263           | housenumber | centroid
264           | 4           | 1,1.00025
265           | 6           | 1,1.0005
266           | 8           | 1,1.00075
267           | 12          | 1.0005,1.001
268           | 16          | 1.001,1.0015
269
270     Scenario: Reverse simple even three point interpolation
271         Given the place nodes
272           | osm_id | class | type  | housenumber | geometry
273           | 1      | place | house | 2           | 1 1
274           | 2      | place | house | 14          | 1.001 1.001
275           | 3      | place | house | 10          | 1 1.001
276         And the place ways
277           | osm_id | class | type   | housenumber | geometry
278           | 1      | place | houses | even        | 1.001 1.001, 1 1.001, 1 1
279         And the ways
280           | id | nodes
281           | 1  | 2,3,1
282         When importing
283         Then way 1 expands to housenumbers
284           | housenumber | centroid
285           | 4           | 1,1.00025
286           | 6           | 1,1.0005
287           | 8           | 1,1.00075
288           | 12          | 1.0005,1.001
289
290     Scenario: Even three point interpolation with odd center point
291         Given the place nodes
292           | osm_id | class | type  | housenumber | geometry
293           | 1      | place | house | 2           | 1 1
294           | 2      | place | house | 8           | 1.001 1.001
295           | 3      | place | house | 7           | 1 1.001
296         And the place ways
297           | osm_id | class | type   | housenumber | geometry
298           | 1      | place | houses | even        | 1 1, 1 1.001, 1.001 1.001
299         And the ways
300           | id | nodes
301           | 1  | 1,3,2
302         When importing
303         Then way 1 expands to housenumbers
304           | housenumber | centroid
305           | 4           | 1,1.0004
306           | 6           | 1,1.0008
307
308     Scenario: Interpolation on self-intersecting way
309         Given the place nodes
310           | osm_id | class | type  | housenumber | geometry
311           | 1      | place | house | 2           | 0 0
312           | 2      | place | house | 6           | 0 0.001
313           | 3      | place | house | 10          | 0 0.002
314         And the place ways
315           | osm_id | class | type   | housenumber | geometry
316           | 1      | place | houses | even        | 0 0, 0 0.001, 0 0.002, 0 0.001
317         And the ways
318           | id | nodes
319           | 1  | 1,2,3,2
320         When importing
321         Then way 1 expands to housenumbers
322           | housenumber | centroid
323           | 4           | 0,0.0005
324           | 8           | 0,0.0015
325
326     Scenario: Interpolation on self-intersecting way II
327         Given the place nodes
328           | osm_id | class | type  | housenumber | geometry
329           | 1      | place | house | 2           | 0 0
330           | 2      | place | house | 6           | 0 0.001
331         And the place ways
332           | osm_id | class | type   | housenumber | geometry
333           | 1      | place | houses | even        | 0 0, 0 0.001, 0 0.002, 0 0.001
334         And the ways
335           | id | nodes
336           | 1  | 1,2,3,2
337         When importing
338         Then way 1 expands to housenumbers
339           | housenumber | centroid
340           | 4           | 0,0.0005
341
342
343      Scenario: addr:street on interpolation way
344        Given the scene parallel-road
345        And the place nodes
346           | osm_id | class | type  | housenumber | geometry
347           | 1      | place | house | 2           | :n-middle-w
348           | 2      | place | house | 6           | :n-middle-e
349           | 3      | place | house | 12          | :n-middle-w
350           | 4      | place | house | 16          | :n-middle-e
351        And the place ways
352           | osm_id | class   | type    | housenumber | street       | geometry
353           | 10     | place   | houses  | even        |              | :w-middle
354           | 11     | place   | houses  | even        | Cloud Street | :w-middle
355        And the place ways
356           | osm_id | class   | type     | name                    | geometry
357           | 2      | highway | tertiary | 'name' : 'Sun Way'      | :w-north
358           | 3      | highway | tertiary | 'name' : 'Cloud Street' | :w-south
359         And the ways
360           | id | nodes
361           | 10  | 1,100,101,102,2
362           | 11  | 3,200,201,202,4
363        When importing
364        Then table placex contains
365           | object | parent_place_id
366           | N1     | W2
367           | N2     | W2
368           | N3     | W3
369           | N4     | W3
370           | W10    | W2
371           | W11    | W3
372        And way 10 expands exactly to housenumbers 4
373        And way 11 expands exactly to housenumbers 14
374
375      Scenario: addr:street on housenumber way
376        Given the scene parallel-road
377        And the place nodes
378           | osm_id | class | type  | housenumber | street       | geometry
379           | 1      | place | house | 2           |              | :n-middle-w
380           | 2      | place | house | 6           |              | :n-middle-e
381           | 3      | place | house | 12          | Cloud Street | :n-middle-w
382           | 4      | place | house | 16          | Cloud Street | :n-middle-e
383        And the place ways
384           | osm_id | class   | type    | housenumber | geometry
385           | 10     | place   | houses  | even        | :w-middle
386           | 11     | place   | houses  | even        | :w-middle
387        And the place ways
388           | osm_id | class   | type     | name                    | geometry
389           | 2      | highway | tertiary | 'name' : 'Sun Way'      | :w-north
390           | 3      | highway | tertiary | 'name' : 'Cloud Street' | :w-south
391         And the ways
392           | id | nodes
393           | 10  | 1,100,101,102,2
394           | 11  | 3,200,201,202,4
395        When importing
396        Then table placex contains
397           | object | parent_place_id
398           | N1     | W2
399           | N2     | W2
400           | N3     | W3
401           | N4     | W3
402           | W10    | W2
403           | W11    | W3
404        And way 10 expands exactly to housenumbers 4
405        And way 11 expands exactly to housenumbers 14
406
407     Scenario: Geometry of points and way don't match (github #253)
408         Given the place nodes
409           | osm_id | class | type   | housenumber | geometry
410           | 1      | place | house  | 10          | 144.9632341 -37.76163
411           | 2      | place | house  | 6           | 144.9630541 -37.7628174
412           | 3      | shop  | supermarket | 2      | 144.9629794 -37.7630755
413         And the place ways
414           | osm_id | class | type   | housenumber | geometry
415           | 1      | place | houses | even        | 144.9632341 -37.76163,144.9630541 -37.7628172,144.9629794 -37.7630755
416         And the ways
417           | id | nodes
418           | 1  | 1,2,3
419         When importing
420         Then way 1 expands to housenumbers
421           | housenumber  | centroid
422           | 4            | 144.963016723312,-37.7629464422819+-0.000005
423           | 8            | 144.9631440856,-37.762223694978+-0.000005
424
425     Scenario: Place with missing address information
426         Given the place nodes
427           | osm_id | class   | type   | housenumber | geometry
428           | 1      | place   | house  | 23          | 0.0001 0.0001
429           | 2      | amenity | school |             | 0.0001 0.0002
430           | 3      | place   | house  | 29          | 0.0001 0.0004
431         And the place ways
432           | osm_id | class | type   | housenumber | geometry
433           | 1      | place | houses | odd         | 0.0001 0.0001,0.0001 0.0002,0.0001 0.0004
434         And the ways
435           | id | nodes
436           | 1  | 1,2,3
437         When importing
438         Then way 1 expands to housenumbers
439           | housenumber | centroid
440           | 25          | 0.0001,0.0002
441           | 27          | 0.0001,0.0003