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