]> git.openstreetmap.org Git - nominatim.git/blob - tests/features/osm2pgsql/import/tags.feature
759c6b964e295665058d0c8e72d1e12f9e13dfe2
[nominatim.git] / tests / features / osm2pgsql / import / tags.feature
1 @DB
2 Feature: Tag evaluation
3     Tests if tags are correctly imported into the place table
4
5     Scenario Outline: Name tags
6         Given the osm nodes:
7          | id | tags
8          | 1  | 'highway' : 'yes', '<nametag>' : 'Foo'
9         When loading osm data
10         Then table place contains
11          | object | name
12          | N1     | '<nametag>' : 'Foo'
13
14     Examples:
15      | nametag
16      | ref
17      | int_ref
18      | nat_ref
19      | reg_ref
20      | loc_ref
21      | old_ref
22      | iata
23      | icao
24      | pcode:1
25      | pcode:2
26      | pcode:3
27      | name
28      | name:de
29      | name:bt-BR
30      | int_name
31      | int_name:xxx
32      | nat_name
33      | nat_name:fr
34      | reg_name
35      | reg_name:1
36      | loc_name
37      | loc_name:DE
38      | old_name
39      | old_name:v1
40      | alt_name
41      | alt_name:dfe
42      | alt_name_1
43      | official_name
44      | short_name
45      | short_name:CH
46      | addr:housename
47      | brand
48
49     Scenario Outline: operator only for shops and amenities
50         Given the osm nodes:
51          | id | tags
52          | 1  | 'highway' : 'yes', 'operator' : 'Foo', 'name' : 'null'
53          | 2  | 'shop' : 'grocery', 'operator' : 'Foo'
54          | 3  | 'amenity' : 'hospital', 'operator' : 'Foo'
55          | 4  | 'tourism' : 'hotel', 'operator' : 'Foo'
56         When loading osm data
57         Then table place contains
58          | object | name
59          | N1     | 'name' : 'null'
60          | N2     | 'operator' : 'Foo'
61          | N3     | 'operator' : 'Foo'
62          | N4     | 'operator' : 'Foo'
63
64     Scenario Outline: Ignored name tags
65         Given the osm nodes:
66          | id | tags
67          | 1  | 'highway' : 'yes', '<nametag>' : 'Foo', 'name' : 'real'
68         When loading osm data
69         Then table place contains
70          | object | name
71          | N1     | 'name' : 'real'
72
73     Examples:
74      | nametag
75      | name_de
76      | Name
77      | ref:de
78      | ref_de
79      | my:ref
80      | br:name
81      | name:prefix
82
83     Scenario: Special character in name tag
84         Given the osm nodes:
85          | id | tags
86          | 1  | 'highway' : 'yes', 'name: de' : 'Foo', 'name' : 'real'
87          | 2  | 'highway' : 'yes', 'name:\nde' : 'Foo', 'name' : 'real'
88          | 3  | 'highway' : 'yes', 'name:\tde' : 'Foo', 'name:\\' : 'real'
89         When loading osm data
90         Then table place contains
91          | object | name
92          | N1     | 'name:_de' : 'Foo', 'name' : 'real'
93          | N2     | 'name:_de' : 'Foo', 'name' : 'real'
94          | N3     | 'name:_de' : 'Foo', 'name:\\\\' : 'real'
95
96     Scenario Outline: Included places
97         Given the osm nodes:
98          | id | tags
99          | 1  | '<key>' : '<value>', 'name' : 'real'
100         When loading osm data
101         Then table place contains
102          | object | name
103          | N1     | 'name' : 'real'
104
105     Examples:
106      | key       | value
107      | emergency | phone
108      | tourism   | information
109      | historic  | castle
110      | military  | barracks
111      | natural   | water
112      | highway   | residential
113      | aerialway | station
114      | aeroway   | way
115      | boundary  | administrative
116      | craft     | butcher
117      | leisure   | playground
118      | office    | bookmaker
119      | railway   | rail
120      | shop      | bookshop
121      | waterway  | stream
122      | landuse   | cemetry
123      | man_made  | tower
124      | mountain_pass | yes
125
126     Scenario Outline: Bridges and Tunnels take special name tags
127         Given the osm nodes:
128           | id | tags
129           | 1  | 'highway' : 'road', '<key>' : 'yes', 'name' : 'Rd', '<key>:name' : 'My'
130           | 2  | 'highway' : 'road', '<key>' : 'yes', 'name' : 'Rd'
131         When loading osm data
132         Then table place contains
133           | object     | class   | type | name
134           | N1:highway | highway | road | 'name' : 'Rd'
135           | N1:<key>   | <key>   | yes  | 'name' : 'My'
136           | N2:highway | highway | road | 'name' : 'Rd'
137         And table place has no entry for N2:<key>
138
139     Examples:
140       | key
141       | bridge
142       | tunnel
143
144     Scenario Outline: Excluded places
145         Given the osm nodes:
146          | id | tags
147          | 1  | '<key>' : '<value>', 'name' : 'real'
148          | 2  | 'highway' : 'motorway', 'name' : 'To Hell'
149         When loading osm data
150         Then table place has no entry for N1
151
152     Examples:
153      | key       | value
154      | emergency | yes
155      | emergency | no
156      | tourism   | yes
157      | tourism   | no
158      | historic  | yes
159      | historic  | no
160      | military  | yes
161      | military  | no
162      | natural   | yes
163      | natural   | no
164      | highway   | no
165      | highway   | turning_circle
166      | highway   | mini_roundabout
167      | highway   | noexit
168      | highway   | crossing
169      | aerialway | no
170      | aerialway | pylon
171      | man_made  | survey_point
172      | man_made  | cutline
173      | aeroway   | no
174      | amenity   | no
175      | bridge    | no
176      | craft     | no
177      | leisure   | no
178      | office    | no
179      | railway   | no
180      | railway   | level_crossing
181      | shop      | no
182      | tunnel    | no
183      | waterway  | riverbank
184
185     Scenario: Some tags only are included when named
186         Given the osm nodes:
187          | id | tags
188          | 1  | '<key>' : '<value>'
189          | 2  | '<key>' : '<value>', 'name' : 'To Hell'
190          | 3  | '<key>' : '<value>', 'ref' : '123'
191         When loading osm data
192         Then table place has no entry for N1
193         And table place has no entry for N3
194         And table place contains
195          | object | class | type
196          | N2     | <key> | <value>
197
198     Examples:
199       | key      | value
200       | landuse  | residential
201       | natural  | meadow
202       | highway  | traffic_signals
203       | highway  | service
204       | highway  | cycleway
205       | highway  | path
206       | highway  | footway
207       | highway  | steps
208       | highway  | bridleway
209       | highway  | track
210       | highway  | byway
211       | highway  | motorway_link
212       | highway  | primary_link
213       | highway  | trunk_link
214       | highway  | secondary_link
215       | highway  | tertiary_link
216       | railway  | rail
217       | boundary | administrative
218       | waterway | stream
219
220     Scenario: named junctions are included if there is no other tag
221         Given the osm nodes:
222          | id | tags
223          | 1  | 'junction' : 'yes'
224          | 2  | 'highway' : 'secondary', 'junction' : 'roundabout', 'name' : 'To Hell'
225          | 3  | 'junction' : 'yes', 'name' : 'Le Croix'
226         When loading osm data
227         Then table place has no entry for N1
228         And table place has no entry for N2:junction
229         And table place contains
230          | object | class    | type
231          | N3     | junction | yes
232
233     Scenario: Boundary with place tag
234         Given the osm nodes:
235           | id  | geometry
236           | 200 | 0 0
237           | 201 | 0 1
238           | 202 | 1 1
239           | 203 | 1 0
240         And the osm ways:
241           | id | tags                                                              | nodes
242           | 2  | 'boundary' : 'administrative', 'place' : 'city', 'name' : 'Foo'   | 200 201 202 203 200
243           | 4  | 'boundary' : 'administrative', 'place' : 'island','name' : 'Foo'  | 200 201 202 203 200
244           | 20 | 'place' : 'city', 'name' : 'ngng'                                 | 200 201 202 203 200
245           | 40 | 'place' : 'city', 'boundary' : 'statistical', 'name' : 'BB'       | 200 201 202 203 200
246         When loading osm data
247         Then table place contains
248           | object       | class    | extratags        | type
249           | W2           | boundary | 'place' : 'city' | administrative
250           | W4:boundary  | boundary | None             | administrative
251           | W4:place     | place    | None             | island
252           | W20          | place    | None             | city
253           | W40:boundary | boundary | None             | statistical
254           | W40:place    | place    | None             | city
255         And table place has no entry for W2:place
256
257     Scenario Outline: Tags that describe a house
258         Given the osm nodes:
259           | id  | tags
260           | 100 | '<key>' : '<value>'
261           | 999 | 'amenity' : 'prison', '<key>' : '<value>'
262         When loading osm data
263         Then table place contains
264           | object | class   | type
265           | N100   | place   | house
266           | N999   | amenity | prison
267         And table place has no entry for N100:<key>
268         And table place has no entry for N999:<key>
269         And table place has no entry for N999:place
270
271     Examples:
272       | key                     | value
273       | addr:housename          | My Mansion
274       | addr:housenumber        | 456
275       | addr:conscriptionnumber | 4
276       | addr:streetnumber       | 4568765
277
278     Scenario: Only named with no other interesting tag
279         Given the osm nodes:
280           | id  | tags
281           | 1   | 'landuse' : 'meadow'
282           | 2   | 'landuse' : 'residential', 'name' : 'important'
283           | 3   | 'landuse' : 'residential', 'name' : 'important', 'place' : 'hamlet'
284         When loading osm data
285         Then table place contains
286           | object | class   | type
287           | N2     | landuse | residential
288           | N3     | place   | hamlet
289         And table place has no entry for N1
290         And table place has no entry for N3:landuse
291
292     Scenario Outline: Import of postal codes
293         Given the osm nodes:
294           | id  | tags
295           | 10  | 'highway' : 'secondary', '<key>' : '<value>'
296           | 11  | '<key>' : '<value>'
297         When loading osm data
298         Then table place contains
299           | object | class   | type      | postcode
300           | N10    | highway | secondary | <value>
301           | N11    | place   | postcode  | <value>
302         And table place has no entry for N10:place
303
304     Examples:
305       | key              | value
306       | postal_code      | 45736
307       | postcode         | xxx
308       | addr:postcode    | 564
309       | tiger:zip_left   | 00011
310       | tiger:zip_right  | 09123
311
312     Scenario: Import of street and place
313         Given the osm nodes:
314           | id  | tags
315           | 10  | 'amenity' : 'hospital', 'addr:street' : 'Foo St'
316           | 20  | 'amenity' : 'hospital', 'addr:place' : 'Foo Town'
317         When loading osm data
318         Then table place contains
319           | object | class   | type     | street  | addr_place
320           | N10    | amenity | hospital | Foo St  | None
321           | N20    | amenity | hospital | None    | Foo Town
322
323
324     Scenario Outline: Import of country
325         Given the osm nodes:
326           | id  | tags
327           | 10  | 'place' : 'village', '<key>' : '<value>'
328         When loading osm data
329         Then table place contains
330           | object | class   | type    | country_code
331           | N10    | place   | village | <value>
332
333     Examples:
334         | key                            | value
335         | country_code                   | us
336         | ISO3166-1                      | XX
337         | is_in:country_code             | __
338         | addr:country                   | ..
339         | addr:country_code              | cv
340
341     Scenario Outline: Ignore country codes with wrong length
342         Given the osm nodes:
343           | id  | tags
344           | 10  | 'place' : 'village', 'country_code' : '<value>'
345         When loading osm data
346         Then table place contains
347           | object | class   | type    | country_code
348           | N10    | place   | village | None
349
350     Examples:
351         | value
352         | X
353         | x
354         | ger
355         | dkeufr
356         | d e
357
358     Scenario: Import of house numbers
359         Given the osm nodes:
360           | id  | tags
361           | 10  | 'building' : 'yes', 'addr:housenumber' : '4b'
362           | 11  | 'building' : 'yes', 'addr:conscriptionnumber' : '003'
363           | 12  | 'building' : 'yes', 'addr:streetnumber' : '2345'
364           | 13  | 'building' : 'yes', 'addr:conscriptionnumber' : '3', 'addr:streetnumber' : '111'
365         When loading osm data
366         Then table place contains
367           | object | class | type   | housenumber
368           | N10    | building | yes  | 4b
369           | N11    | building | yes  | 003
370           | N12    | building | yes  | 2345
371           | N13    | building | yes  | 3/111
372
373     Scenario: Import of address interpolations
374         Given the osm nodes:
375           | id  | tags
376           | 10  | 'addr:interpolation' : 'odd'
377           | 11  | 'addr:housenumber' : '10', 'addr:interpolation' : 'odd'
378           | 12  | 'addr:interpolation' : 'odd', 'addr:housenumber' : '23'
379         When loading osm data
380         Then table place contains
381           | object | class   | type    | housenumber
382           | N10    | place   | houses  | odd
383           | N11    | place   | houses  | odd
384           | N12    | place   | houses  | odd
385
386     Scenario: Shorten tiger:county tags
387         Given the osm nodes:
388           | id  | tags
389           | 10  | 'place' : 'village', 'tiger:county' : 'Feebourgh, AL'
390           | 11  | 'place' : 'village', 'addr:state' : 'Alabama', 'tiger:county' : 'Feebourgh, AL'
391           | 12  | 'place' : 'village', 'tiger:county' : 'Feebourgh'
392         When loading osm data
393         Then table place contains
394           | object | class   | type    | isin
395           | N10    | place   | village | Feebourgh county
396           | N11    | place   | village | Alabama,Feebourgh county
397           | N12    | place   | village | Feebourgh county
398
399     Scenario Outline: Import of address tags
400         Given the osm nodes:
401           | id  | tags
402           | 10  | 'place' : 'village', '<key>' : '<value>'
403         When loading osm data
404         Then table place contains
405           | object | class   | type    | isin
406           | N10    | place   | village | <value>
407
408     Examples:
409       | key             | value
410       | is_in           | Stockholm, Sweden
411       | is_in:country   | Xanadu
412       | addr:suburb     | hinein
413       | addr:county     | le havre
414       | addr:city       | Sydney
415       | addr:state      | Jura
416
417     Scenario: Import of admin level
418         Given the osm nodes:
419           | id  | tags
420           | 10  | 'amenity' : 'hospital', 'admin_level' : '3'
421           | 11  | 'amenity' : 'hospital', 'admin_level' : 'b'
422           | 12  | 'amenity' : 'hospital'
423           | 13  | 'amenity' : 'hospital', 'admin_level' : '3.0'
424         When loading osm data
425         Then table place contains
426           | object | class   | type     | admin_level
427           | N10    | amenity | hospital | 3
428           | N11    | amenity | hospital | 100
429           | N12    | amenity | hospital | 100
430           | N13    | amenity | hospital | 3
431
432     Scenario: Import of extra tags
433         Given the osm nodes:
434           | id  | tags
435           | 10  | 'tourism' : 'hotel', '<key>' : 'foo'
436         When loading osm data
437         Then table place contains
438           | object | class   | type  | extratags
439           | N10    | tourism | hotel | '<key>' : 'foo'
440
441      Examples:
442        | key
443        | tracktype
444        | traffic_calming
445        | service
446        | cuisine
447        | capital
448        | dispensing
449        | religion
450        | denomination
451        | sport
452        | internet_access
453        | lanes
454        | surface
455        | smoothness
456        | width
457        | est_width
458        | incline
459        | opening_hours
460        | collection_times
461        | service_times
462        | disused
463        | wheelchair
464        | sac_scale
465        | trail_visibility
466        | mtb:scale
467        | mtb:description
468        | wood
469        | drive_in
470        | access
471        | vehicle
472        | bicyle
473        | foot
474        | goods
475        | hgv
476        | motor_vehicle
477        | motor_car
478        | access:foot
479        | contact:phone
480        | drink:mate
481        | oneway
482        | date_on
483        | date_off
484        | day_on
485        | day_off
486        | hour_on
487        | hour_off
488        | maxweight
489        | maxheight
490        | maxspeed
491        | disused
492        | toll
493        | charge
494        | population
495        | description
496        | image
497        | attribution
498        | fax
499        | email
500        | url
501        | website
502        | phone
503        | real_ale
504        | smoking
505        | food
506        | camera
507        | brewery
508        | locality
509        | wikipedia
510        | wikipedia:de
511
512     Scenario: buildings
513         Given the osm nodes:
514           | id  | tags
515           | 10  | 'tourism' : 'hotel', 'building' : 'yes'
516           | 11  | 'building' : 'house'
517           | 12  | 'building' : 'shed', 'addr:housenumber' : '1'
518           | 13  | 'building' : 'yes', 'name' : 'Das Haus'
519           | 14  | 'building' : 'yes', 'addr:postcode' : '12345'
520         When loading osm data
521         Then table place contains
522           | object | class   | type
523           | N10    | tourism | hotel
524           | N12    | building| yes
525           | N13    | building| yes
526           | N14    | building| yes
527         And table place has no entry for N10:building
528         And table place has no entry for N11
529
530    Scenario: complete node entry
531        Given the osm nodes:
532          | id        | tags
533          | 290393920 | 'addr:city':'Perpignan','addr:country':'FR','addr:housenumber':'43\\','addr:postcode':'66000','addr:street':'Rue Pierre Constant d`Ivry','source':'cadastre-dgi-fr source : Direction Générale des Impôts - Cadastre ; mise à jour :2008'
534         When loading osm data
535         Then table place contains
536          | object     | class   | type | housenumber
537          | N290393920 | place   | house| 43\