]> git.openstreetmap.org Git - nominatim.git/blob - test/bdd/db/import/interpolation.feature
Merge remote-tracking branch 'upstream/master'
[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           | 4     | 4   | 1 1.0005 |
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  | 8       | 1 1.003 |
26         And the places
27           | osm | class | type   | addr+interpolation | geometry |
28           | W1  | place | houses | even    | 1 1.003, 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           | 4     | 6   | 1 1.001, 1 1.002 |
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           | 3     | 9  | 1 1.0002, 1 1.0008 |
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  | 4       | 1 1.003 |
58         And the places
59           | osm | class | type   | addr+interpolation | geometry |
60           | W1  | place | houses | all     | 1 1, 1 1.003 |
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           | 2     | 3   | 1 1.001, 1 1.002 |
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           | 4     | 8   | 1 1.0005, 1 1.001, 1.0005 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           | 4     | 8   | 1 1.0005, 1 1.001, 1.0005 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           | 4     |  8  | 1 1.00025, 1 1.00075 |
117           | 12    | 12  | 1.0005 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           | 4     | 8   | 1 1.00025, 1 1.00075 |
136           | 12    | 12  | 1.0005 1.001 |
137           | 16    | 16  | 1.001 1.0015 |
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           | 4     |  8  | 1 1.00025, 1 1.00075 |
155           | 12    | 12  | 1.0005 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           | 4     | 6   | 1 1.0004, 1 1.0008 |
173
174     Scenario: Interpolation line with self-intersecting way
175         Given the places
176           | osm | class | type  | housenr | geometry |
177           | N1  | place | house | 2       | 0 0 |
178           | N2  | place | house | 6       | 0 0.001 |
179           | N3  | place | house | 10      | 0 0.002 |
180         And the places
181           | osm | class | type   | addr+interpolation | geometry |
182           | W1  | place | houses | even    | 0 0, 0 0.001, 0 0.002, 0 0.001 |
183         And the ways
184           | id | nodes |
185           | 1  | 1,2,3,2 |
186         When importing
187         Then W1 expands to interpolation
188           | start | end | geometry |
189           | 4     | 4   | 0 0.0005 |
190           | 8     | 8   | 0 0.0015 |
191           | 8     | 8   | 0 0.0015 |
192
193     Scenario: Interpolation line with self-intersecting way II
194         Given the places
195           | osm | class | type  | housenr | geometry |
196           | N1  | place | house | 2       | 0 0 |
197           | N2  | place | house | 6       | 0 0.001 |
198         And the places
199           | osm | class | type   | addr+interpolation | geometry |
200           | W1  | place | houses | even    | 0 0, 0 0.001, 0 0.002, 0 0.001 |
201         And the ways
202           | id | nodes |
203           | 1  | 1,2,3,2 |
204         When importing
205         Then W1 expands to interpolation
206           | start | end | geometry |
207           | 4     | 4   | 0 0.0005 |
208
209     Scenario: addr:street on interpolation way
210         Given the scene parallel-road
211         And the places
212           | osm | class | type  | housenr | geometry |
213           | N1  | place | house | 2       | :n-middle-w |
214           | N2  | place | house | 6       | :n-middle-e |
215           | N3  | place | house | 12      | :n-middle-w |
216           | N4  | place | house | 16      | :n-middle-e |
217         And the places
218           | osm | class   | type    | addr+interpolation | street       | geometry |
219           | W10 | place   | houses  | even    |              | :w-middle |
220           | W11 | place   | houses  | even    | Cloud Street | :w-middle |
221         And the places
222           | osm | class   | type     | name         | geometry |
223           | W2  | highway | tertiary | Sun Way      | :w-north |
224           | W3  | highway | tertiary | Cloud Street | :w-south |
225         And the ways
226           | id | nodes |
227           | 10  | 1,100,101,102,2 |
228           | 11  | 3,200,201,202,4 |
229         When importing
230         Then placex contains
231           | object | parent_place_id |
232           | N1     | W2 |
233           | N2     | W2 |
234           | N3     | W3 |
235           | N4     | W3 |
236         Then W10 expands to interpolation
237           | parent_place_id | start | end |
238           | W2              | 4     | 4 |
239         Then W11 expands to interpolation
240           | parent_place_id | start | end |
241           | W3              | 14    | 14 |
242         When sending search query "16 Cloud Street"
243         Then results contain
244          | ID | osm_type | osm_id |
245          | 0  | N        | 4 |
246         When sending search query "14 Cloud Street"
247         Then results contain
248          | ID | osm_type | osm_id |
249          | 0  | W        | 11 |
250
251     Scenario: addr:street on housenumber way
252         Given the scene parallel-road
253         And the places
254           | osm | class | type  | housenr | street       | geometry |
255           | N1  | place | house | 2       |              | :n-middle-w |
256           | N2  | place | house | 6       |              | :n-middle-e |
257           | N3  | place | house | 12      | Cloud Street | :n-middle-w |
258           | N4  | place | house | 16      | Cloud Street | :n-middle-e |
259         And the places
260           | osm | class   | type    | addr+interpolation | geometry |
261           | W10 | place   | houses  | even               | :w-middle |
262           | W11 | place   | houses  | even               | :w-middle |
263         And the places
264           | osm | class   | type     | name         | geometry |
265           | W2  | highway | tertiary | Sun Way      | :w-north |
266           | W3  | highway | tertiary | Cloud Street | :w-south |
267         And the ways
268           | id  | nodes |
269           | 10  | 1,100,101,102,2 |
270           | 11  | 3,200,201,202,4 |
271         When importing
272         Then placex contains
273           | object | parent_place_id |
274           | N1     | W2 |
275           | N2     | W2 |
276           | N3     | W3 |
277           | N4     | W3 |
278         Then W10 expands to interpolation
279           | parent_place_id | start | end |
280           | W2              | 4     | 4 |
281         Then W11 expands to interpolation
282           | parent_place_id | start | end |
283           | W3              | 14    | 14 |
284         When sending search query "16 Cloud Street"
285         Then results contain
286          | ID | osm_type | osm_id |
287          | 0  | N        | 4 |
288         When sending search query "14 Cloud Street"
289         Then results contain
290          | ID | osm_type | osm_id |
291          | 0  | W        | 11 |
292
293     Scenario: Geometry of points and way don't match (github #253)
294         Given the places
295           | osm | class | type        | housenr | geometry |
296           | N1  | place | house       | 10      | 144.9632341 -37.76163 |
297           | N2  | place | house       | 6       | 144.9630541 -37.7628174 |
298           | N3  | shop  | supermarket | 2       | 144.9629794 -37.7630755 |
299         And the places
300           | osm | class | type   | addr+interpolation | geometry |
301           | W1  | place | houses | even    | 144.9632341 -37.76163,144.9630541 -37.7628172,144.9629794 -37.7630755 |
302         And the ways
303           | id | nodes |
304           | 1  | 1,2,3 |
305         When importing
306         Then W1 expands to interpolation
307           | start | end | geometry |
308           | 4     | 4   | 144.963016 -37.762946 |
309           | 8     | 8   | 144.963144 -37.7622237 |
310
311     Scenario: Place with missing address information
312         Given the grid
313           | 1 |  | 2 |  |  | 3 |
314         And the places
315           | osm | class   | type   | housenr |
316           | N1  | place   | house  | 23      |
317           | N2  | amenity | school |         |
318           | N3  | place   | house  | 29      |
319         And the places
320           | osm | class | type   | addr+interpolation | geometry |
321           | W1  | place | houses | odd                | 1,2,3 |
322         And the ways
323           | id | nodes |
324           | 1  | 1,2,3 |
325         When importing
326         Then W1 expands to interpolation
327           | start | end | geometry |
328           | 25    | 27  | 0.000016 0,0.00002 0,0.000033 0 |
329
330     Scenario: Ways without node entries are ignored
331         Given the places
332           | osm | class | type   | housenr | geometry |
333           | W1  | place | houses | even    | 1 1, 1 1.001 |
334         When importing
335         Then W1 expands to no interpolation
336
337     Scenario: Ways without nodes without housenumbers are ignored
338         Given the places
339           | osm | class | type   | housenr | geometry |
340           | N1  | place | house  |         | 1 1 |
341           | N2  | place | house  |         | 1 1.001 |
342           | W1  | place | houses | even    | 1 1, 1 1.001 |
343         When importing
344         Then W1 expands to no interpolation
345
346     Scenario: Two point interpolation starting at 0
347         Given the places
348           | osm | class | type   | housenr | geometry |
349           | N1  | place | house  | 0       | 1 1 |
350           | N2  | place | house  | 10      | 1 1.001 |
351         And the places
352           | osm | class | type   | addr+interpolation | geometry |
353           | W1  | place | houses | even     | 1 1, 1 1.001 |
354         And the ways
355           | id | nodes |
356           | 1  | 1,2 |
357         When importing
358         Then W1 expands to interpolation
359           | start | end | geometry |
360           | 2     | 8   | 1 1.0002, 1 1.0008 |
361         When sending jsonv2 reverse coordinates 1,1
362         Then results contain
363           | ID | osm_type | osm_id | type  | display_name |
364           | 0  | node     | 1      | house | 0 |