mirror of
https://github.com/osm-search/Nominatim.git
synced 2026-02-16 05:18:00 +00:00
319 lines
14 KiB
Gherkin
319 lines
14 KiB
Gherkin
@DB
|
|
Feature: Import into placex
|
|
Tests that data in placex is completed correctly.
|
|
|
|
Scenario: No country code tag is available
|
|
Given the place nodes
|
|
| osm_id | class | type | name | geometry
|
|
| 1 | highway | primary | 'name' : 'A1' | country:us
|
|
When importing
|
|
Then table placex contains
|
|
| object | country_code | calculated_country_code |
|
|
| N1 | None | us |
|
|
|
|
Scenario: Location overwrites country code tag
|
|
Given the scene country
|
|
And the place nodes
|
|
| osm_id | class | type | name | country_code | geometry
|
|
| 1 | highway | primary | 'name' : 'A1' | de | :us
|
|
When importing
|
|
Then table placex contains
|
|
| object | country_code | calculated_country_code |
|
|
| N1 | de | us |
|
|
|
|
Scenario: Country code tag overwrites location for countries
|
|
Given the place areas
|
|
| osm_type | osm_id | class | type | admin_level | name | country_code | geometry
|
|
| R | 1 | boundary | administrative | 2 | 'name' : 'foo' | de | (-100 40, -101 40, -101 41, -100 41, -100 40)
|
|
When importing
|
|
Then table placex contains
|
|
| object | country_code | calculated_country_code |
|
|
| R1 | de | de |
|
|
|
|
Scenario: Illegal country code tag for countries is ignored
|
|
And the place areas
|
|
| osm_type | osm_id | class | type | admin_level | name | country_code | geometry
|
|
| R | 1 | boundary | administrative | 2 | 'name' : 'foo' | xx | (-100 40, -101 40, -101 41, -100 41, -100 40)
|
|
When importing
|
|
Then table placex contains
|
|
| object | country_code | calculated_country_code |
|
|
| R1 | xx | us |
|
|
|
|
Scenario: admin level is copied over
|
|
Given the place nodes
|
|
| osm_id | class | type | admin_level | name
|
|
| 1 | place | state | 3 | 'name' : 'foo'
|
|
When importing
|
|
Then table placex contains
|
|
| object | admin_level |
|
|
| N1 | 3 |
|
|
|
|
Scenario: admin level is default 15
|
|
Given the place nodes
|
|
| osm_id | class | type | name
|
|
| 1 | amenity | prison | 'name' : 'foo'
|
|
When importing
|
|
Then table placex contains
|
|
| object | admin_level |
|
|
| N1 | 15 |
|
|
|
|
Scenario: admin level is never larger than 15
|
|
Given the place nodes
|
|
| osm_id | class | type | name | admin_level
|
|
| 1 | amenity | prison | 'name' : 'foo' | 16
|
|
When importing
|
|
Then table placex contains
|
|
| object | admin_level |
|
|
| N1 | 15 |
|
|
|
|
|
|
Scenario: postcode node without postcode is dropped
|
|
Given the place nodes
|
|
| osm_id | class | type
|
|
| 1 | place | postcode
|
|
When importing
|
|
Then table placex has no entry for N1
|
|
|
|
Scenario: postcode boundary without postcode is dropped
|
|
Given the place areas
|
|
| osm_type | osm_id | class | type | geometry
|
|
| R | 1 | boundary | postal_code | poly-area:0.1
|
|
When importing
|
|
Then table placex has no entry for R1
|
|
|
|
Scenario: search and address ranks for GB post codes correctly assigned
|
|
Given the place nodes
|
|
| osm_id | class | type | postcode | geometry
|
|
| 1 | place | postcode | E45 2CD | country:gb
|
|
| 2 | place | postcode | E45 2 | country:gb
|
|
| 3 | place | postcode | Y45 | country:gb
|
|
When importing
|
|
Then table placex contains
|
|
| object | postcode | calculated_country_code | rank_search | rank_address
|
|
| N1 | E45 2CD | gb | 25 | 5
|
|
| N2 | E45 2 | gb | 23 | 5
|
|
| N3 | Y45 | gb | 21 | 5
|
|
|
|
Scenario: wrongly formatted GB postcodes are down-ranked
|
|
Given the place nodes
|
|
| osm_id | class | type | postcode | geometry
|
|
| 1 | place | postcode | EA452CD | country:gb
|
|
| 2 | place | postcode | E45 23 | country:gb
|
|
| 3 | place | postcode | y45 | country:gb
|
|
When importing
|
|
Then table placex contains
|
|
| object | calculated_country_code | rank_search | rank_address
|
|
| N1 | gb | 30 | 30
|
|
| N2 | gb | 30 | 30
|
|
| N3 | gb | 30 | 30
|
|
|
|
Scenario: search and address rank for DE postcodes correctly assigned
|
|
Given the place nodes
|
|
| osm_id | class | type | postcode | geometry
|
|
| 1 | place | postcode | 56427 | country:de
|
|
| 2 | place | postcode | 5642 | country:de
|
|
| 3 | place | postcode | 5642A | country:de
|
|
| 4 | place | postcode | 564276 | country:de
|
|
When importing
|
|
Then table placex contains
|
|
| object | calculated_country_code | rank_search | rank_address
|
|
| N1 | de | 21 | 11
|
|
| N2 | de | 30 | 30
|
|
| N3 | de | 30 | 30
|
|
| N4 | de | 30 | 30
|
|
|
|
Scenario: search and address rank for other postcodes are correctly assigned
|
|
Given the place nodes
|
|
| osm_id | class | type | postcode | geometry
|
|
| 1 | place | postcode | 1 | country:ca
|
|
| 2 | place | postcode | X3 | country:ca
|
|
| 3 | place | postcode | 543 | country:ca
|
|
| 4 | place | postcode | 54dc | country:ca
|
|
| 5 | place | postcode | 12345 | country:ca
|
|
| 6 | place | postcode | 55TT667 | country:ca
|
|
| 7 | place | postcode | 123-65 | country:ca
|
|
| 8 | place | postcode | 12 445 4 | country:ca
|
|
| 9 | place | postcode | A1:bc10 | country:ca
|
|
When importing
|
|
Then table placex contains
|
|
| object | calculated_country_code | rank_search | rank_address
|
|
| N1 | ca | 21 | 11
|
|
| N2 | ca | 21 | 11
|
|
| N3 | ca | 21 | 11
|
|
| N4 | ca | 21 | 11
|
|
| N5 | ca | 21 | 11
|
|
| N6 | ca | 21 | 11
|
|
| N7 | ca | 25 | 11
|
|
| N8 | ca | 25 | 11
|
|
| N9 | ca | 25 | 11
|
|
|
|
|
|
Scenario: search and address ranks for places are correctly assigned
|
|
Given the named place nodes
|
|
| osm_id | class | type |
|
|
| 1 | foo | bar |
|
|
| 11 | place | Continent |
|
|
| 12 | place | continent |
|
|
| 13 | place | sea |
|
|
| 14 | place | country |
|
|
| 15 | place | state |
|
|
| 16 | place | region |
|
|
| 17 | place | county |
|
|
| 18 | place | city |
|
|
| 19 | place | island |
|
|
| 20 | place | town |
|
|
| 21 | place | village |
|
|
| 22 | place | hamlet |
|
|
| 23 | place | municipality |
|
|
| 24 | place | district |
|
|
| 25 | place | unincorporated_area |
|
|
| 26 | place | borough |
|
|
| 27 | place | suburb |
|
|
| 28 | place | croft |
|
|
| 29 | place | subdivision |
|
|
| 30 | place | isolated_dwelling |
|
|
| 31 | place | farm |
|
|
| 32 | place | locality |
|
|
| 33 | place | islet |
|
|
| 34 | place | mountain_pass |
|
|
| 35 | place | neighbourhood |
|
|
| 36 | place | house |
|
|
| 37 | place | building |
|
|
| 38 | place | houses |
|
|
And the named place nodes
|
|
| osm_id | class | type | extratags
|
|
| 100 | place | locality | 'locality' : 'townland'
|
|
| 101 | place | city | 'capital' : 'yes'
|
|
When importing
|
|
Then table placex contains
|
|
| object | rank_search | rank_address |
|
|
| N1 | 30 | 30 |
|
|
| N11 | 30 | 30 |
|
|
| N12 | 2 | 2 |
|
|
| N13 | 2 | 0 |
|
|
| N14 | 4 | 4 |
|
|
| N15 | 8 | 8 |
|
|
| N16 | 18 | 0 |
|
|
| N17 | 12 | 12 |
|
|
| N18 | 16 | 16 |
|
|
| N19 | 17 | 0 |
|
|
| N20 | 18 | 16 |
|
|
| N21 | 19 | 16 |
|
|
| N22 | 19 | 16 |
|
|
| N23 | 19 | 16 |
|
|
| N24 | 19 | 16 |
|
|
| N25 | 19 | 16 |
|
|
| N26 | 19 | 16 |
|
|
| N27 | 20 | 20 |
|
|
| N28 | 20 | 20 |
|
|
| N29 | 20 | 20 |
|
|
| N30 | 20 | 20 |
|
|
| N31 | 20 | 0 |
|
|
| N32 | 20 | 0 |
|
|
| N33 | 20 | 0 |
|
|
| N34 | 20 | 0 |
|
|
| N100 | 20 | 20 |
|
|
| N101 | 15 | 16 |
|
|
| N35 | 22 | 22 |
|
|
| N36 | 30 | 30 |
|
|
| N37 | 30 | 30 |
|
|
| N38 | 28 | 0 |
|
|
|
|
Scenario: search and address ranks for boundaries are correctly assigned
|
|
Given the named place nodes
|
|
| osm_id | class | type
|
|
| 1 | boundary | administrative
|
|
And the named place ways
|
|
| osm_id | class | type | geometry
|
|
| 10 | boundary | administrative | 10 10, 11 11
|
|
And the named place areas
|
|
| osm_type | osm_id | class | type | admin_level | geometry
|
|
| R | 20 | boundary | administrative | 2 | (1 1, 2 2, 1 2, 1 1)
|
|
| R | 21 | boundary | administrative | 32 | (3 3, 4 4, 3 4, 3 3)
|
|
| R | 22 | boundary | nature_park | 6 | (0 0, 1 0, 0 1, 0 0)
|
|
| R | 23 | boundary | natural_reserve| 10 | (0 0, 1 1, 1 0, 0 0)
|
|
When importing
|
|
Then table placex has no entry for N1
|
|
And table placex has no entry for W10
|
|
And table placex contains
|
|
| object | rank_search | rank_address
|
|
| R20 | 4 | 4
|
|
| R21 | 30 | 30
|
|
| R22 | 12 | 0
|
|
| R23 | 20 | 0
|
|
|
|
Scenario: search and address ranks for highways correctly assigned
|
|
Given the scene roads-with-pois
|
|
And the place nodes
|
|
| osm_id | class | type
|
|
| 1 | highway | bus_stop
|
|
And the place ways
|
|
| osm_id | class | type | geometry
|
|
| 1 | highway | primary | :w-south
|
|
| 2 | highway | secondary | :w-south
|
|
| 3 | highway | tertiary | :w-south
|
|
| 4 | highway | residential | :w-north
|
|
| 5 | highway | unclassified | :w-north
|
|
| 6 | highway | something | :w-north
|
|
When importing
|
|
Then table placex contains
|
|
| object | rank_search | rank_address
|
|
| N1 | 30 | 30
|
|
| W1 | 26 | 26
|
|
| W2 | 26 | 26
|
|
| W3 | 26 | 26
|
|
| W4 | 26 | 26
|
|
| W5 | 26 | 26
|
|
| W6 | 26 | 26
|
|
|
|
Scenario: rank and inclusion of landuses
|
|
And the named place nodes
|
|
| osm_id | class | type
|
|
| 2 | landuse | residential
|
|
And the named place ways
|
|
| osm_id | class | type | geometry
|
|
| 2 | landuse | residential | 1 1, 1 1.1
|
|
And the named place areas
|
|
| osm_type | osm_id | class | type | geometry
|
|
| W | 4 | landuse | residential | poly-area:0.1
|
|
| R | 2 | landuse | residential | poly-area:0.05
|
|
| R | 3 | landuse | forrest | poly-area:0.5
|
|
When importing
|
|
And table placex contains
|
|
| object | rank_search | rank_address
|
|
| N2 | 30 | 30
|
|
| W2 | 30 | 30
|
|
| W4 | 22 | 22
|
|
| R2 | 22 | 22
|
|
| R3 | 22 | 0
|
|
|
|
Scenario: rank and inclusion of naturals
|
|
And the named place nodes
|
|
| osm_id | class | type
|
|
| 2 | natural | peak
|
|
| 4 | natural | volcano
|
|
| 5 | natural | foobar
|
|
And the named place ways
|
|
| osm_id | class | type | geometry
|
|
| 2 | natural | mountain_range | 12 12,11 11
|
|
| 3 | natural | foobar | 13 13,13.1 13
|
|
And the named place areas
|
|
| osm_type | osm_id | class | type | geometry
|
|
| R | 3 | natural | volcano | poly-area:0.1
|
|
| R | 4 | natural | foobar | poly-area:0.5
|
|
| R | 5 | natural | sea | poly-area:5.0
|
|
| R | 6 | natural | sea | poly-area:0.01
|
|
When importing
|
|
And table placex contains
|
|
| object | rank_search | rank_address
|
|
| N2 | 18 | 0
|
|
| N4 | 18 | 0
|
|
| N5 | 30 | 30
|
|
| W2 | 18 | 0
|
|
| R3 | 18 | 0
|
|
| R4 | 22 | 0
|
|
| R5 | 4 | 4
|
|
| R6 | 4 | 4
|
|
| W3 | 30 | 30
|
|
|