2 Feature: Linking of places
3 Tests for correctly determining linked places
5 Scenario: Only address-describing places can be linked
6 Given the scene way-area-with-center
8 | osm | class | type | name | geometry |
9 | R13 | landuse | forest | Garbo | :area |
10 | N256 | natural | peak | Garbo | :inner-C |
13 | object | linked_place_id |
17 Scenario: Postcode areas cannot be linked
23 | osm | class | type | addr+postcode | extra+wikidata | geometry |
24 | R13 | boundary | postal_code | 123 | Q87493 | (1,2,3,4,1) |
25 | N25 | place | suburb | 123 | Q87493 | 9 |
28 | object | linked_place_id |
32 Scenario: Waterways are linked when in waterway relations
33 Given the scene split-road
35 | osm | class | type | name | geometry |
36 | W1 | waterway | river | Rhein | :w-2 |
37 | W2 | waterway | river | Rhein | :w-3 |
38 | R13 | waterway | river | Rhein | :w-1 + :w-2 + :w-3 |
39 | R23 | waterway | river | Limmat| :w-4a |
41 | id | members | tags+type |
42 | 13 | R23:tributary,W1,W2:main_stream | waterway |
45 | object | linked_place_id |
50 When sending search query "rhein"
55 Scenario: Relations are not linked when in waterway relations
56 Given the scene split-road
58 | osm | class | type | name | geometry |
59 | W1 | waterway | stream | Rhein | :w-2 |
60 | W2 | waterway | river | Rhein | :w-3 |
61 | R1 | waterway | river | Rhein | :w-1 + :w-2 + :w-3 |
62 | R2 | waterway | river | Limmat| :w-4a |
64 | id | members | tags+type |
68 | object | linked_place_id |
74 Scenario: Empty waterway relations are handled correctly
75 Given the scene split-road
77 | osm | class | type | name | geometry |
78 | R1 | waterway | river | Rhein | :w-1 + :w-2 + :w-3 |
80 | id | members | tags+type |
84 | object | linked_place_id |
87 Scenario: Waterways are not linked when the way type is not a river feature
88 Given the scene split-road
90 | osm | class | type | name | geometry |
91 | W1 | waterway | lock | Rhein | :w-2 |
92 | R1 | waterway | river | Rhein | :w-1 + :w-2 + :w-3 |
94 | id | members | tags+type |
95 | 1 | N23,N34,W1,R45 | multipolygon |
98 | object | linked_place_id |
101 When sending search query "rhein"
107 Scenario: Side streams are linked only when they have the same name
108 Given the scene split-road
110 | osm | class | type | name | geometry |
111 | W1 | waterway | river | Rhein2 | :w-2 |
112 | W2 | waterway | river | Rhein | :w-3 |
113 | R1 | waterway | river | Rhein | :w-1 + :w-2 + :w-3 |
115 | id | members | tags+type |
116 | 1 | W1:side_stream,W2:side_stream | waterway |
119 | object | linked_place_id |
122 When sending search query "rhein2"
128 Scenario: Boundaries should only be linked to places
129 Given the named places
130 | osm | class | type | extra+wikidata | admin | geometry |
131 | R1 | boundary | administrative | 34 | 8 | poly-area:0.1 |
133 | osm | class | type | geometry |
134 | N3 | natural | island | 0.00001 0 |
135 | N3 | place | city | 0.00001 0 |
141 | object | linked_place_id |
145 Scenario: Nodes with 'role' label are always linked
147 | osm | class | type | admin | name | geometry |
148 | R13 | boundary | administrative | 6 | Garbo | poly-area:0.1 |
149 | N2 | place | hamlet | 15 | Vario | 0.006 0.00001 |
151 | id | members | tags+type |
152 | 13 | N2:label | boundary |
155 | object | linked_place_id |
158 | object | centroid | name+name | extratags+linked_place |
159 | R13 | 0.006 0.00001 | Garbo | hamlet |
161 Scenario: Boundaries with place tags are linked against places with same type
163 | osm | class | type | admin | name | extra+place | geometry |
164 | R13 | boundary | administrative | 4 | Berlin | city |poly-area:0.1 |
166 | osm | class | type | name | geometry |
167 | N2 | place | city | Berlin | 0.006 0.00001 |
170 | object | linked_place_id |
173 | object | rank_address |
175 When sending search query ""
179 | ID | osm_type | osm_id |
181 When sending search query ""
185 | ID | osm_type | osm_id |
189 Scenario: Boundaries without place tags only link against same admin level
191 | osm | class | type | admin | name | geometry |
192 | R13 | boundary | administrative | 4 | Berlin |poly-area:0.1 |
194 | osm | class | type | name | geometry |
195 | N2 | place | city | Berlin | 0.006 0.00001 |
198 | object | linked_place_id |
201 | object | rank_address |
203 When sending search query ""
207 | ID | osm_type | osm_id |
209 When sending search query ""
213 | ID | osm_type | osm_id |
217 Scenario: Do not use linked centroid when it is outside the area
218 Given the named places
219 | osm | class | type | admin | geometry |
220 | R13 | boundary | administrative | 4 | poly-area:0.01 |
222 | osm | class | type | geometry |
223 | N2 | place | city | 0.1 0.1 |
225 | id | members | tags+type |
226 | 13 | N2:label | boundary |
229 | object | linked_place_id |
232 | object | centroid |
233 | R13 | in geometry |
235 Scenario: Place nodes can only be linked once
236 Given the named places
237 | osm | class | type | extra+wikidata | geometry |
238 | N2 | place | city | Q1234 | 0 0 |
240 | osm | class | type | extra+wikidata | admin | geometry |
241 | R1 | boundary | administrative | Q1234 | 8 | poly-area:0.1 |
242 | R2 | boundary | administrative | Q1234 | 9 | poly-area:0.01 |
245 | object | linked_place_id |
248 | object | extratags |
249 | R1 | 'linked_place' : 'city', 'wikidata': 'Q1234' |
250 | R2 | 'wikidata': 'Q1234' |