]> git.openstreetmap.org Git - nominatim.git/blob - tests/features/db/import/interpolation.feature
Merge remote-tracking branch 'upstream/master'
[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 | 8           | 1.001 1.001
233           | 3      | place | house | 4           | 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           | 6           | 1.0005,1.001
244
245     Scenario: Even three point interpolation with odd center point
246         Given the place nodes
247           | osm_id | class | type  | housenumber | geometry
248           | 1      | place | house | 2           | 1 1
249           | 2      | place | house | 8           | 1.001 1.001
250           | 3      | place | house | 7           | 1 1.001
251         And the place ways
252           | osm_id | class | type   | housenumber | geometry
253           | 1      | place | houses | even        | 1 1, 1 1.001, 1.001 1.001
254         And the ways
255           | id | nodes
256           | 1  | 1,3,2
257         When importing
258         Then way 1 expands to housenumbers
259           | housenumber | centroid
260           | 4           | 1,1.0004
261           | 6           | 1,1.0008
262
263     Scenario: Interpolation on self-intersecting way
264         Given the place nodes
265           | osm_id | class | type  | housenumber | geometry
266           | 1      | place | house | 2           | 0 0
267           | 2      | place | house | 6           | 0 0.001
268           | 3      | place | house | 10          | 0 0.002
269         And the place ways
270           | osm_id | class | type   | housenumber | geometry
271           | 1      | place | houses | even        | 0 0, 0 0.001, 0 0.002, 0 0.001
272         And the ways
273           | id | nodes
274           | 1  | 1,2,3,2
275         When importing
276         Then way 1 expands to housenumbers
277           | housenumber | centroid
278           | 4           | 0,0.0005
279           | 8           | 0,0.0015
280
281     Scenario: Interpolation on self-intersecting way II
282         Given the place nodes
283           | osm_id | class | type  | housenumber | geometry
284           | 1      | place | house | 2           | 0 0
285           | 2      | place | house | 6           | 0 0.001
286         And the place ways
287           | osm_id | class | type   | housenumber | geometry
288           | 1      | place | houses | even        | 0 0, 0 0.001, 0 0.002, 0 0.001
289         And the ways
290           | id | nodes
291           | 1  | 1,2,3,2
292         When importing
293         Then way 1 expands to housenumbers
294           | housenumber | centroid
295           | 4           | 0,0.0005
296
297
298      Scenario: addr:street on interpolation way
299        Given the scene parallel-road
300        And the place nodes
301           | osm_id | class | type  | housenumber | geometry
302           | 1      | place | house | 2           | :n-middle-w
303           | 2      | place | house | 6           | :n-middle-e
304           | 3      | place | house | 12          | :n-middle-w
305           | 4      | place | house | 16          | :n-middle-e
306        And the place ways
307           | osm_id | class   | type    | housenumber | street       | geometry
308           | 10     | place   | houses  | even        |              | :w-middle
309           | 11     | place   | houses  | even        | Cloud Street | :w-middle
310        And the place ways
311           | osm_id | class   | type     | name                    | geometry
312           | 2      | highway | tertiary | 'name' : 'Sun Way'      | :w-north
313           | 3      | highway | tertiary | 'name' : 'Cloud Street' | :w-south
314         And the ways
315           | id | nodes
316           | 10  | 1,100,101,102,2
317           | 11  | 3,200,201,202,4
318        When importing
319        Then table placex contains
320           | object | parent_place_id
321           | N1     | W2
322           | N2     | W2
323           | N3     | W3
324           | N4     | W3
325           | W10    | W2
326           | W11    | W3
327        And way 10 expands exactly to housenumbers 4
328        And way 11 expands exactly to housenumbers 14
329
330      Scenario: addr:street on housenumber way
331        Given the scene parallel-road
332        And the place nodes
333           | osm_id | class | type  | housenumber | street       | geometry
334           | 1      | place | house | 2           |              | :n-middle-w
335           | 2      | place | house | 6           |              | :n-middle-e
336           | 3      | place | house | 12          | Cloud Street | :n-middle-w
337           | 4      | place | house | 16          | Cloud Street | :n-middle-e
338        And the place ways
339           | osm_id | class   | type    | housenumber | geometry
340           | 10     | place   | houses  | even        | :w-middle
341           | 11     | place   | houses  | even        | :w-middle
342        And the place ways
343           | osm_id | class   | type     | name                    | geometry
344           | 2      | highway | tertiary | 'name' : 'Sun Way'      | :w-north
345           | 3      | highway | tertiary | 'name' : 'Cloud Street' | :w-south
346         And the ways
347           | id | nodes
348           | 10  | 1,100,101,102,2
349           | 11  | 3,200,201,202,4
350        When importing
351        Then table placex contains
352           | object | parent_place_id
353           | N1     | W2
354           | N2     | W2
355           | N3     | W3
356           | N4     | W3
357           | W10    | W2
358           | W11    | W3
359        And way 10 expands exactly to housenumbers 4
360        And way 11 expands exactly to housenumbers 14
361
362