mirror of
https://github.com/osm-search/Nominatim.git
synced 2026-03-07 18:44:07 +00:00
Merge pull request #4012 from lonvia/interpolation-separation
Move interpolations into a separate table
This commit is contained in:
@@ -241,8 +241,8 @@ Feature: Address computation
|
||||
Scenario: buildings with only addr:postcodes do not appear in the address of a way
|
||||
Given the grid with origin DE
|
||||
| 1 | | | | | 8 | | 6 | | 2 |
|
||||
| |10 |11 | | | | | | | |
|
||||
| |13 |12 | | | | | | | |
|
||||
| | | | | | | | | | |
|
||||
| |13 | | | | | | | | |
|
||||
| 20| | | 21| | | | | | |
|
||||
| | | | | | | | | | |
|
||||
| | | | | | 9 | | | | |
|
||||
@@ -255,9 +255,9 @@ Feature: Address computation
|
||||
And the named places
|
||||
| osm | class | type | geometry |
|
||||
| W93 | highway | residential | 20,21 |
|
||||
And the places
|
||||
| osm | class | type | addr+postcode | geometry |
|
||||
| W22 | place | postcode | 11234 | (10,11,12,13,10) |
|
||||
And the postcodes
|
||||
| osm | postcode | centroid |
|
||||
| W22 | 11234 | 13 |
|
||||
When importing
|
||||
Then place_addressline contains exactly
|
||||
| object | address |
|
||||
|
||||
@@ -8,12 +8,9 @@ Feature: Import of address interpolations
|
||||
| osm | class | type | housenr |
|
||||
| N1 | place | house | 2 |
|
||||
| N2 | place | house | 6 |
|
||||
And the places
|
||||
| osm | class | type | addr+interpolation | geometry |
|
||||
| W1 | place | houses | even | 1,2 |
|
||||
And the ways
|
||||
| id | nodes |
|
||||
| 1 | 1,2 |
|
||||
And the interpolations
|
||||
| osm | type | geometry | nodes |
|
||||
| W1 | even | 1,2 | 1,2 |
|
||||
When importing
|
||||
Then W1 expands to no interpolation
|
||||
|
||||
@@ -25,15 +22,12 @@ Feature: Import of address interpolations
|
||||
| osm | class | type | housenr |
|
||||
| N1 | place | house | 2 |
|
||||
| N2 | place | house | 6 |
|
||||
And the places
|
||||
| osm | class | type | addr+interpolation | geometry |
|
||||
| W1 | place | houses | even | 1,2 |
|
||||
And the interpolations
|
||||
| osm | type | geometry | nodes |
|
||||
| W1 | even | 1,2 | 1,2 |
|
||||
And the named places
|
||||
| osm | class | type | geometry |
|
||||
| W10 | highway | residential | 4,5 |
|
||||
And the ways
|
||||
| id | nodes |
|
||||
| 1 | 1,2 |
|
||||
When importing
|
||||
Then W1 expands to interpolation
|
||||
| start | end | geometry |
|
||||
@@ -47,15 +41,12 @@ Feature: Import of address interpolations
|
||||
| osm | class | type | housenr |
|
||||
| N1 | place | house | 2 |
|
||||
| N2 | place | house | 8 |
|
||||
And the places
|
||||
| osm | class | type | addr+interpolation | geometry |
|
||||
| W1 | place | houses | even | 2,1 |
|
||||
And the interpolations
|
||||
| osm | type | geometry | nodes |
|
||||
| W1 | even | 2,1 | 2,1 |
|
||||
And the named places
|
||||
| osm | class | type | geometry |
|
||||
| W10 | highway | residential | 4,5 |
|
||||
And the ways
|
||||
| id | nodes |
|
||||
| 1 | 2,1 |
|
||||
When importing
|
||||
Then W1 expands to interpolation
|
||||
| start | end | geometry |
|
||||
@@ -69,15 +60,12 @@ Feature: Import of address interpolations
|
||||
| osm | class | type | housenr |
|
||||
| N1 | place | house | 1 |
|
||||
| N2 | place | house | 11 |
|
||||
And the places
|
||||
| osm | class | type | addr+interpolation | geometry |
|
||||
| W1 | place | houses | odd | 1,2 |
|
||||
And the interpolations
|
||||
| osm | type | geometry | nodes |
|
||||
| W1 | odd | 1,2 | 1,2 |
|
||||
And the named places
|
||||
| osm | class | type | geometry |
|
||||
| W10 | highway | residential | 4,5 |
|
||||
And the ways
|
||||
| id | nodes |
|
||||
| 1 | 1,2 |
|
||||
When importing
|
||||
Then W1 expands to interpolation
|
||||
| start | end | geometry |
|
||||
@@ -91,15 +79,12 @@ Feature: Import of address interpolations
|
||||
| osm | class | type | housenr |
|
||||
| N1 | place | house | 1 |
|
||||
| N2 | place | house | 4 |
|
||||
And the places
|
||||
| osm | class | type | addr+interpolation | geometry |
|
||||
| W1 | place | houses | all | 1,2 |
|
||||
And the interpolations
|
||||
| osm | type | geometry | nodes |
|
||||
| W1 | all | 1,2 | 1,2 |
|
||||
And the named places
|
||||
| osm | class | type | geometry |
|
||||
| W10 | highway | residential | 4,5 |
|
||||
And the ways
|
||||
| id | nodes |
|
||||
| 1 | 1,2 |
|
||||
When importing
|
||||
Then W1 expands to interpolation
|
||||
| start | end | geometry |
|
||||
@@ -113,15 +98,12 @@ Feature: Import of address interpolations
|
||||
| osm | class | type | housenr |
|
||||
| N1 | place | house | 2 |
|
||||
| N2 | place | house | 12 |
|
||||
And the places
|
||||
| osm | class | type | addr+interpolation | geometry |
|
||||
| W1 | place | houses | even | 1,3,2 |
|
||||
And the interpolations
|
||||
| osm | type | geometry | nodes |
|
||||
| W1 | even | 1,3,2 | 1,3,2 |
|
||||
And the named places
|
||||
| osm | class | type | geometry |
|
||||
| W10 | highway | residential | 4,5 |
|
||||
And the ways
|
||||
| id | nodes |
|
||||
| 1 | 1,3,2 |
|
||||
When importing
|
||||
Then W1 expands to interpolation
|
||||
| start | end | geometry |
|
||||
@@ -135,15 +117,12 @@ Feature: Import of address interpolations
|
||||
| osm | class | type | housenr |
|
||||
| N1 | place | house | 2 |
|
||||
| N2 | place | house | 10 |
|
||||
And the places
|
||||
| osm | class | type | addr+interpolation | geometry |
|
||||
| W1 | place | houses | even | 1,3,2 |
|
||||
And the interpolations
|
||||
| osm | type | geometry | nodes |
|
||||
| W1 | even | 1,3,2 | 1,3,3,2 |
|
||||
And the named places
|
||||
| osm | class | type | geometry |
|
||||
| W10 | highway | residential | 4,5 |
|
||||
And the ways
|
||||
| id | nodes |
|
||||
| 1 | 1,3,3,2 |
|
||||
When importing
|
||||
Then W1 expands to interpolation
|
||||
| start | end | geometry |
|
||||
@@ -158,15 +137,12 @@ Feature: Import of address interpolations
|
||||
| N1 | place | house | 2 |
|
||||
| N2 | place | house | 14 |
|
||||
| N3 | place | house | 10 |
|
||||
And the places
|
||||
| osm | class | type | addr+interpolation | geometry |
|
||||
| W1 | place | houses | even | 1,3,2 |
|
||||
And the interpolations
|
||||
| osm | type | geometry | nodes |
|
||||
| W1 | even | 1,3,2 | 1,3,2 |
|
||||
And the named places
|
||||
| osm | class | type | geometry |
|
||||
| W10 | highway | residential | 4,5 |
|
||||
And the ways
|
||||
| id | nodes |
|
||||
| 1 | 1,3,2 |
|
||||
When importing
|
||||
Then W1 expands to interpolation
|
||||
| start | end | geometry |
|
||||
@@ -184,15 +160,12 @@ Feature: Import of address interpolations
|
||||
| N2 | place | house | 14 |
|
||||
| N3 | place | house | 10 |
|
||||
| N4 | place | house | 18 |
|
||||
And the places
|
||||
| osm | class | type | addr+interpolation | geometry |
|
||||
| W1 | place | houses | even | 1,3,2,4 |
|
||||
And the interpolations
|
||||
| osm | type | geometry | nodes |
|
||||
| W1 | even | 1,3,2,4 | 1,3,2,4 |
|
||||
And the named places
|
||||
| osm | class | type | geometry |
|
||||
| W10 | highway | residential | 1,3,2,4 |
|
||||
And the ways
|
||||
| id | nodes |
|
||||
| 1 | 1,3,2,4 |
|
||||
When importing
|
||||
Then W1 expands to interpolation
|
||||
| start | end | geometry |
|
||||
@@ -209,15 +182,12 @@ Feature: Import of address interpolations
|
||||
| N1 | place | house | 2 |
|
||||
| N2 | place | house | 14 |
|
||||
| N3 | place | house | 10 |
|
||||
And the places
|
||||
| osm | class | type | addr+interpolation | geometry |
|
||||
| W1 | place | houses | even | 2,3,1 |
|
||||
And the interpolations
|
||||
| osm | type | geometry | nodes |
|
||||
| W1 | even | 2,3,1 | 2,3,1 |
|
||||
And the named places
|
||||
| osm | class | type | geometry |
|
||||
| W10 | highway | residential | 4,5 |
|
||||
And the ways
|
||||
| id | nodes |
|
||||
| 1 | 2,3,1 |
|
||||
When importing
|
||||
Then W1 expands to interpolation
|
||||
| start | end | geometry |
|
||||
@@ -233,15 +203,12 @@ Feature: Import of address interpolations
|
||||
| N1 | place | house | 2 |
|
||||
| N2 | place | house | 8 |
|
||||
| N3 | place | house | 7 |
|
||||
And the places
|
||||
| osm | class | type | addr+interpolation | geometry |
|
||||
| W1 | place | houses | even | 1,3,2 |
|
||||
And the interpolations
|
||||
| osm | type | geometry | nodes |
|
||||
| W1 | even | 1,3,2 | 1,3,2 |
|
||||
And the named places
|
||||
| osm | class | type | geometry |
|
||||
| W10 | highway | residential | 4,5 |
|
||||
And the ways
|
||||
| id | nodes |
|
||||
| 1 | 1,3,2 |
|
||||
When importing
|
||||
Then W1 expands to interpolation
|
||||
| start | end | geometry |
|
||||
@@ -257,15 +224,12 @@ Feature: Import of address interpolations
|
||||
| N1 | place | house | 2 |
|
||||
| N2 | place | house | 6 |
|
||||
| N3 | place | house | 10 |
|
||||
And the places
|
||||
| osm | class | type | addr+interpolation | geometry |
|
||||
| W1 | place | houses | even | 1,2,3,2 |
|
||||
And the interpolations
|
||||
| osm | type | geometry | nodes |
|
||||
| W1 | even | 1,2,3,2 | 1,2,3,2 |
|
||||
And the named places
|
||||
| osm | class | type | geometry |
|
||||
| W10 | highway | residential | 1,2,3 |
|
||||
And the ways
|
||||
| id | nodes |
|
||||
| 1 | 1,2,3,2 |
|
||||
When importing
|
||||
Then W1 expands to interpolation
|
||||
| start | end | geometry |
|
||||
@@ -281,15 +245,12 @@ Feature: Import of address interpolations
|
||||
| osm | class | type | housenr |
|
||||
| N1 | place | house | 2 |
|
||||
| N2 | place | house | 6 |
|
||||
And the places
|
||||
| osm | class | type | addr+interpolation | geometry |
|
||||
| W1 | place | houses | even | 1,2,3,2 |
|
||||
And the interpolations
|
||||
| osm | type | geometry | nodes |
|
||||
| W1 | even | 1,2,3,2 | 1,2,3,2 |
|
||||
And the named places
|
||||
| osm | class | type | geometry |
|
||||
| W10 | highway | residential | 1,2,3 |
|
||||
And the ways
|
||||
| id | nodes |
|
||||
| 1 | 1,2,3,2 |
|
||||
When importing
|
||||
Then W1 expands to interpolation
|
||||
| start | end | geometry |
|
||||
@@ -306,18 +267,14 @@ Feature: Import of address interpolations
|
||||
| N2 | place | house | 6 | 2 |
|
||||
| N3 | place | house | 12 | 1 |
|
||||
| N4 | place | house | 16 | 2 |
|
||||
And the places
|
||||
| osm | class | type | addr+interpolation | street | geometry |
|
||||
| W10 | place | houses | even | | 1,2 |
|
||||
| W11 | place | houses | even | Cloud Street | 1,2 |
|
||||
And the interpolations
|
||||
| osm | type | street | nodes | geometry | nodes |
|
||||
| W10 | even | | 1,2 | 1,2 | 1,2 |
|
||||
| W11 | even | Cloud Street | 3,4 | 1,2 | 3,4 |
|
||||
And the places
|
||||
| osm | class | type | name | geometry |
|
||||
| W2 | highway | tertiary | Sun Way | 10,11 |
|
||||
| W3 | highway | tertiary | Cloud Street | 20,21 |
|
||||
And the ways
|
||||
| id | nodes |
|
||||
| 10 | 1,2 |
|
||||
| 11 | 3,4 |
|
||||
When importing
|
||||
Then placex contains
|
||||
| object | parent_place_id |
|
||||
@@ -351,18 +308,14 @@ Feature: Import of address interpolations
|
||||
| N2 | place | house | 6 | | 2 |
|
||||
| N3 | place | house | 12 | Cloud Street | 1 |
|
||||
| N4 | place | house | 16 | Cloud Street | 2 |
|
||||
And the places
|
||||
| osm | class | type | addr+interpolation | geometry |
|
||||
| W10 | place | houses | even | 1,2 |
|
||||
| W11 | place | houses | even | 1,2 |
|
||||
And the interpolations
|
||||
| osm | type | geometry | nodes |
|
||||
| W10 | even | 1,2 | 1,2 |
|
||||
| W11 | even | 1,2 | 3,4 |
|
||||
And the places
|
||||
| osm | class | type | name | geometry |
|
||||
| W2 | highway | tertiary | Sun Way | 10,11 |
|
||||
| W3 | highway | tertiary | Cloud Street | 20,21 |
|
||||
And the ways
|
||||
| id | nodes |
|
||||
| 10 | 1,2 |
|
||||
| 11 | 3,4 |
|
||||
When importing
|
||||
Then placex contains
|
||||
| object | parent_place_id |
|
||||
@@ -391,15 +344,12 @@ Feature: Import of address interpolations
|
||||
| N1 | place | house | 10 | 144.9632341 -37.76163 |
|
||||
| N2 | place | house | 6 | 144.9630541 -37.7628174 |
|
||||
| N3 | shop | supermarket | 2 | 144.9629794 -37.7630755 |
|
||||
And the places
|
||||
| osm | class | type | addr+interpolation | geometry |
|
||||
| W1 | place | houses | even | 144.9632341 -37.76163,144.9630541 -37.7628172,144.9629794 -37.7630755 |
|
||||
And the interpolations
|
||||
| osm | type | geometry | nodes |
|
||||
| W1 | even | 144.9632341 -37.76163,144.9630541 -37.7628172,144.9629794 -37.7630755 | 1,2,3 |
|
||||
And the named places
|
||||
| osm | class | type | geometry |
|
||||
| W10 | highway | residential | 144.9632341 -37.76163,144.9629794 -37.7630755 |
|
||||
And the ways
|
||||
| id | nodes |
|
||||
| 1 | 1,2,3 |
|
||||
When importing
|
||||
Then W1 expands to interpolation
|
||||
| start | end | geometry |
|
||||
@@ -415,24 +365,21 @@ Feature: Import of address interpolations
|
||||
| N1 | place | house | 23 |
|
||||
| N2 | amenity | school | |
|
||||
| N3 | place | house | 29 |
|
||||
And the places
|
||||
| osm | class | type | addr+interpolation | geometry |
|
||||
| W1 | place | houses | odd | 1,2,3 |
|
||||
And the interpolations
|
||||
| osm | type | geometry | nodes |
|
||||
| W1 | odd | 1,2,3 | 1,2,3 |
|
||||
And the named places
|
||||
| osm | class | type | geometry |
|
||||
| W10 | highway | residential | 4,5 |
|
||||
And the ways
|
||||
| id | nodes |
|
||||
| 1 | 1,2,3 |
|
||||
When importing
|
||||
Then W1 expands to interpolation
|
||||
| start | end | geometry |
|
||||
| 25 | 27 | 0.0000166 0,0.00002 0,0.0000333 0 |
|
||||
|
||||
Scenario: Ways without node entries are ignored
|
||||
Given the places
|
||||
| osm | class | type | housenr | geometry |
|
||||
| W1 | place | houses | even | 1 1, 1 1.001 |
|
||||
Given the interpolations
|
||||
| osm | type | geometry | nodes |
|
||||
| W1 | even | 1 1, 1 1.001 | 34,45 |
|
||||
And the named places
|
||||
| osm | class | type | geometry |
|
||||
| W10 | highway | residential | 1 1, 1 1.001 |
|
||||
@@ -447,9 +394,9 @@ Feature: Import of address interpolations
|
||||
| osm | class | type |
|
||||
| N1 | place | house |
|
||||
| N2 | place | house |
|
||||
Given the places
|
||||
| osm | class | type | housenr | geometry |
|
||||
| W1 | place | houses | even | 1,2 |
|
||||
Given the interpolations
|
||||
| osm | type | geometry | nodes |
|
||||
| W1 | even | 1,2 | 1,2 |
|
||||
And the named places
|
||||
| osm | class | type | geometry |
|
||||
| W10 | highway | residential | 4,5 |
|
||||
@@ -464,15 +411,12 @@ Feature: Import of address interpolations
|
||||
| osm | class | type | housenr |
|
||||
| N1 | place | house | 0 |
|
||||
| N2 | place | house | 10 |
|
||||
And the places
|
||||
| osm | class | type | addr+interpolation | geometry |
|
||||
| W1 | place | houses | even | 1,2 |
|
||||
And the interpolations
|
||||
| osm | type | geometry | nodes |
|
||||
| W1 | even | 1,2 | 1,2 |
|
||||
And the places
|
||||
| osm | class | type | name | geometry |
|
||||
| W10 | highway | residential | London Road |4,5 |
|
||||
And the ways
|
||||
| id | nodes |
|
||||
| 1 | 1,2 |
|
||||
When importing
|
||||
Then W1 expands to interpolation
|
||||
| start | end | geometry |
|
||||
@@ -497,12 +441,9 @@ Feature: Import of address interpolations
|
||||
| osm | class | type | name | geometry |
|
||||
| W1 | highway | residential | Vert St | 1,2 |
|
||||
| W2 | highway | residential | Horiz St | 2,3 |
|
||||
And the places
|
||||
| osm | class | type | addr+interpolation | addr+inclusion | geometry |
|
||||
| W10 | place | houses | even | actual | 8,9 |
|
||||
And the ways
|
||||
| id | nodes |
|
||||
| 10 | 8,9 |
|
||||
And the interpolations
|
||||
| osm | type | addr+inclusion | geometry | nodes |
|
||||
| W10 | even | actual | 8,9 | 8,9 |
|
||||
When importing
|
||||
Then placex contains
|
||||
| object | parent_place_id |
|
||||
@@ -521,15 +462,12 @@ Feature: Import of address interpolations
|
||||
| osm | class | type | housenr |
|
||||
| N1 | place | house | 2 |
|
||||
| N2 | place | house | 6 |
|
||||
And the places
|
||||
| osm | class | type | addr+interpolation | geometry |
|
||||
| W1 | place | houses | <value> | 1,2 |
|
||||
And the interpolations
|
||||
| osm | type | geometry | nodes |
|
||||
| W1 | <value> | 1,2 | 1,2 |
|
||||
And the named places
|
||||
| osm | class | type | geometry |
|
||||
| W10 | highway | residential | 4,5 |
|
||||
And the ways
|
||||
| id | nodes |
|
||||
| 1 | 1,2 |
|
||||
When importing
|
||||
Then W1 expands to no interpolation
|
||||
|
||||
@@ -549,15 +487,12 @@ Feature: Import of address interpolations
|
||||
| N2 | place | house | 18 | 3 |
|
||||
| N3 | place | house | 24 | 9 |
|
||||
| N4 | place | house | 42 | 4 |
|
||||
And the places
|
||||
| osm | class | type | addr+interpolation | geometry |
|
||||
| W1 | place | houses | even | 1,2,3,4 |
|
||||
And the interpolations
|
||||
| osm | type | geometry | nodes |
|
||||
| W1 | even | 1,2,3,4 | 1,2,3,4 |
|
||||
And the named places
|
||||
| osm | class | type | geometry |
|
||||
| W10 | highway | residential | 1,4 |
|
||||
And the ways
|
||||
| id | nodes |
|
||||
| 1 | 1,2,3,4 |
|
||||
When importing
|
||||
Then W1 expands to interpolation
|
||||
| start | end |
|
||||
@@ -576,15 +511,12 @@ Feature: Import of address interpolations
|
||||
| N2 | place | house | 6 | 8 |
|
||||
| N3 | place | house | 10 | 8 |
|
||||
| N4 | place | house | 14 | 9 |
|
||||
And the places
|
||||
| osm | class | type | addr+interpolation | geometry |
|
||||
| W1 | place | houses | even | 7,8,8,9 |
|
||||
And the interpolations
|
||||
| osm | type | geometry | nodes |
|
||||
| W1 | even | 7,8,8,9 | 1,2,3,4 |
|
||||
And the named places
|
||||
| osm | class | type | geometry |
|
||||
| W10 | highway | residential | 4,5 |
|
||||
And the ways
|
||||
| id | nodes |
|
||||
| 1 | 1,2,3,4 |
|
||||
When importing
|
||||
Then W1 expands to interpolation
|
||||
| start | end | geometry |
|
||||
@@ -601,15 +533,12 @@ Feature: Import of address interpolations
|
||||
| N2 | place | house | 8 |
|
||||
| N3 | place | house | 12 |
|
||||
| N4 | place | house | 14 |
|
||||
And the places
|
||||
| osm | class | type | addr+interpolation | geometry |
|
||||
| W1 | place | houses | even | 8,9 |
|
||||
And the interpolations
|
||||
| osm | type | geometry | nodes |
|
||||
| W1 | even | 8,9 | 1,8,9,2,3,4 |
|
||||
And the named places
|
||||
| osm | class | type | geometry |
|
||||
| W10 | highway | residential | 1,4 |
|
||||
And the ways
|
||||
| id | nodes |
|
||||
| 1 | 1,8,9,2,3,4 |
|
||||
When importing
|
||||
Then W1 expands to interpolation
|
||||
| start | end | geometry |
|
||||
|
||||
@@ -297,25 +297,21 @@ Feature: Linking of places
|
||||
| R1 | LabelPlace |
|
||||
|
||||
|
||||
@skip
|
||||
Scenario: Linked places expand default language names
|
||||
Given the grid with origin CO
|
||||
| 1 | | 2 | | 5 | | 6 |
|
||||
| | 9 | | | | 10 | |
|
||||
| 4 | | 3 | | 8 | | 7 |
|
||||
And the places
|
||||
Given the grid
|
||||
| 1 | | 2 |
|
||||
| | 9 | |
|
||||
| 4 | | 3 |
|
||||
Given the places
|
||||
| osm | class | type | name+name | geometry |
|
||||
| N9 | place | city | Popayán | 9 |
|
||||
And the places
|
||||
| osm | class | type | name+name:en | geometry |
|
||||
| N10 | place | city | Open | 10 |
|
||||
And the places
|
||||
Given the places
|
||||
| osm | class | type | name+name | geometry | admin |
|
||||
| R1 | boundary | administrative | Perímetro Urbano Popayán | (1,2,3,4,1) | 8 |
|
||||
| R2 | boundary | administrative | Abre | (5,6,7,8,5) | 8 |
|
||||
And the relations
|
||||
| id | members |
|
||||
| 1 | N9:label |
|
||||
| 2 | N10:label |
|
||||
| id | members |
|
||||
| 1 | N9:label |
|
||||
When importing
|
||||
Then placex contains
|
||||
| object | linked_place_id |
|
||||
|
||||
@@ -287,38 +287,6 @@ Feature: Searching of house numbers
|
||||
| N1 |
|
||||
|
||||
|
||||
Scenario: Interpolations are found according to their type
|
||||
Given the grid
|
||||
| 10 | | 11 |
|
||||
| 100 | | 101 |
|
||||
| 20 | | 21 |
|
||||
And the places
|
||||
| osm | class | type | name | geometry |
|
||||
| W100 | highway | residential | Ringstr | 100, 101 |
|
||||
And the places
|
||||
| osm | class | type | addr+interpolation | geometry |
|
||||
| W10 | place | houses | even | 10, 11 |
|
||||
| W20 | place | houses | odd | 20, 21 |
|
||||
And the places
|
||||
| osm | class | type | housenr | geometry |
|
||||
| N10 | place | house | 10 | 10 |
|
||||
| N11 | place | house | 20 | 11 |
|
||||
| N20 | place | house | 11 | 20 |
|
||||
| N21 | place | house | 21 | 21 |
|
||||
And the ways
|
||||
| id | nodes |
|
||||
| 10 | 10, 11 |
|
||||
| 20 | 20, 21 |
|
||||
When importing
|
||||
When geocoding "Ringstr 12"
|
||||
Then the result set contains
|
||||
| object |
|
||||
| W10 |
|
||||
When geocoding "Ringstr 13"
|
||||
Then the result set contains
|
||||
| object |
|
||||
| W20 |
|
||||
|
||||
Scenario: A housenumber with interpolation is found
|
||||
Given the places
|
||||
| osm | class | type | housenr | addr+interpolation | geometry |
|
||||
@@ -378,4 +346,3 @@ Feature: Searching of house numbers
|
||||
Then the result set contains
|
||||
| object |
|
||||
| W10 |
|
||||
|
||||
|
||||
@@ -11,16 +11,13 @@ Feature: Query of address interpolations
|
||||
Given the places
|
||||
| osm | class | type | name | geometry |
|
||||
| W10 | highway | primary | Nickway | 10,12,13 |
|
||||
And the places
|
||||
| osm | class | type | addr+interpolation | geometry |
|
||||
| W1 | place | houses | odd | 1,3 |
|
||||
And the interpolations
|
||||
| osm | type | geometry | nodes |
|
||||
| W1 | odd | 1,3 | 1,3 |
|
||||
And the places
|
||||
| osm | class | type | housenr | geometry |
|
||||
| N1 | place | house | 1 | 1 |
|
||||
| N3 | place | house | 5 | 3 |
|
||||
And the ways
|
||||
| id | nodes |
|
||||
| 1 | 1,3 |
|
||||
When importing
|
||||
When reverse geocoding at node 2
|
||||
Then the result contains
|
||||
@@ -36,16 +33,13 @@ Feature: Query of address interpolations
|
||||
Given the places
|
||||
| osm | class | type | name | geometry |
|
||||
| W10 | highway | primary | Nickway | 10,12,13 |
|
||||
And the places
|
||||
| osm | class | type | addr+interpolation | geometry |
|
||||
| W1 | place | houses | even | 1,3 |
|
||||
And the interpolations
|
||||
| osm | type | geometry | nodes |
|
||||
| W1 | even | 1,3 | 1,3 |
|
||||
And the places
|
||||
| osm | class | type | housenr | geometry |
|
||||
| N1 | place | house | 2 | 1 |
|
||||
| N3 | place | house | 18 | 3 |
|
||||
And the ways
|
||||
| id | nodes |
|
||||
| 1 | 1,3 |
|
||||
When importing
|
||||
When reverse geocoding at node 2
|
||||
Then the result contains
|
||||
@@ -55,3 +49,32 @@ Feature: Query of address interpolations
|
||||
Then all results contain
|
||||
| object | display_name | centroid!wkt |
|
||||
| W1 | 10, Nickway | 2 |
|
||||
|
||||
|
||||
Scenario: Interpolations are found according to their type
|
||||
Given the grid
|
||||
| 10 | | 11 |
|
||||
| 100 | | 101 |
|
||||
| 20 | | 21 |
|
||||
And the places
|
||||
| osm | class | type | name | geometry |
|
||||
| W100 | highway | residential | Ringstr | 100, 101 |
|
||||
And the interpolations
|
||||
| osm | type | geometry | nodes |
|
||||
| W10 | even | 10, 11 | 10, 11 |
|
||||
| W20 | odd | 20, 21 | 20, 21 |
|
||||
And the places
|
||||
| osm | class | type | housenr | geometry |
|
||||
| N10 | place | house | 10 | 10 |
|
||||
| N11 | place | house | 20 | 11 |
|
||||
| N20 | place | house | 11 | 20 |
|
||||
| N21 | place | house | 21 | 21 |
|
||||
When importing
|
||||
When geocoding "Ringstr 12"
|
||||
Then the result set contains
|
||||
| object |
|
||||
| W10 |
|
||||
When geocoding "Ringstr 13"
|
||||
Then the result set contains
|
||||
| object |
|
||||
| W20 |
|
||||
|
||||
@@ -11,18 +11,15 @@ Feature: Update of address interpolations
|
||||
| osm | class | type | name | geometry |
|
||||
| W2 | highway | unclassified | Sun Way | 10,11 |
|
||||
| W3 | highway | unclassified | Cloud Street | 20,21 |
|
||||
And the ways
|
||||
| id | nodes |
|
||||
| 10 | 1,2 |
|
||||
When importing
|
||||
Then W10 expands to no interpolation
|
||||
When updating places
|
||||
| osm | class | type | housenr |
|
||||
| N1 | place | house | 2 |
|
||||
| N2 | place | house | 6 |
|
||||
And updating places
|
||||
| osm | class | type | addr+interpolation | geometry |
|
||||
| W10 | place | houses | even | 1,2 |
|
||||
And updating interpolations
|
||||
| osm | type | geometry | nodes |
|
||||
| W10 | even | 1,2 | 1,2 |
|
||||
Then placex contains
|
||||
| object | parent_place_id |
|
||||
| N1 | W2 |
|
||||
@@ -41,16 +38,13 @@ Feature: Update of address interpolations
|
||||
| osm | class | type | housenr |
|
||||
| N1 | place | house | 2 |
|
||||
| N2 | place | house | 6 |
|
||||
And the places
|
||||
| osm | class | type | addr+interpolation | geometry |
|
||||
| W10 | place | houses | even | 1,2 |
|
||||
And the interpolations
|
||||
| osm | type | geometry | nodes |
|
||||
| W10 | even | 1,2 | 1,2 |
|
||||
And the places
|
||||
| osm | class | type | name | geometry |
|
||||
| W2 | highway | unclassified | Sun Way | 10,11 |
|
||||
| W3 | highway | unclassified | Cloud Street | 20,21 |
|
||||
And the ways
|
||||
| id | nodes |
|
||||
| 10 | 1,2 |
|
||||
When importing
|
||||
Then placex contains
|
||||
| object | parent_place_id |
|
||||
@@ -59,9 +53,9 @@ Feature: Update of address interpolations
|
||||
And W10 expands to interpolation
|
||||
| parent_place_id | start | end |
|
||||
| W2 | 4 | 4 |
|
||||
When updating places
|
||||
| osm | class | type | addr+interpolation | street | geometry |
|
||||
| W10 | place | houses | even | Cloud Street | 1,2 |
|
||||
When updating interpolations
|
||||
| osm | type | street | nodes | geometry |
|
||||
| W10 | even | Cloud Street | 1,2 | 1,2 |
|
||||
Then placex contains
|
||||
| object | parent_place_id |
|
||||
| N1 | W3 |
|
||||
@@ -80,16 +74,13 @@ Feature: Update of address interpolations
|
||||
| osm | class | type | housenr |
|
||||
| N1 | place | house | 2 |
|
||||
| N2 | place | house | 6 |
|
||||
And the places
|
||||
| osm | class | type | addr+interpolation | geometry |
|
||||
| W10 | place | houses | even | 1,2 |
|
||||
And the interpolations
|
||||
| osm | type | geometry | nodes |
|
||||
| W10 | even | 1,2 | 1,2 |
|
||||
And the places
|
||||
| osm | class | type | name | geometry |
|
||||
| W2 | highway | unclassified | Sun Way | 10,11 |
|
||||
| W3 | highway | unclassified | Cloud Street | 20,21 |
|
||||
And the ways
|
||||
| id | nodes |
|
||||
| 10 | 1,2 |
|
||||
When importing
|
||||
Then placex contains
|
||||
| object | parent_place_id |
|
||||
@@ -120,16 +111,13 @@ Feature: Update of address interpolations
|
||||
| osm | class | type | housenr |
|
||||
| N1 | place | house | 2 |
|
||||
| N2 | place | house | 6 |
|
||||
And the places
|
||||
| osm | class | type | addr+interpolation | geometry |
|
||||
| W10 | place | houses | even | 1,2 |
|
||||
And the interpolations
|
||||
| osm | type | geometry | nodes |
|
||||
| W10 | even | 1,2 | 1,2 |
|
||||
And the places
|
||||
| osm | class | type | name | geometry |
|
||||
| W2 | highway | unclassified | Sun Way | 10,11 |
|
||||
| W3 | highway | unclassified | Cloud Street | 20,21 |
|
||||
And the ways
|
||||
| id | nodes |
|
||||
| 10 | 1,2 |
|
||||
When importing
|
||||
Then placex contains
|
||||
| object | parent_place_id |
|
||||
@@ -155,15 +143,12 @@ Feature: Update of address interpolations
|
||||
| osm | class | type | housenr |
|
||||
| N1 | place | house | 2 |
|
||||
| N2 | place | house | 6 |
|
||||
And the places
|
||||
| osm | class | type | addr+interpolation | street | geometry |
|
||||
| W10 | place | houses | even | Cloud Street| 1,2 |
|
||||
And the interpolations
|
||||
| osm | type | street | geometry | nodes |
|
||||
| W10 | even | Cloud Street| 1,2 | 1,2 |
|
||||
And the places
|
||||
| osm | class | type | name | geometry |
|
||||
| W2 | highway | unclassified | Sun Way | 10,11 |
|
||||
And the ways
|
||||
| id | nodes |
|
||||
| 10 | 1,2 |
|
||||
When importing
|
||||
Then placex contains
|
||||
| object | parent_place_id |
|
||||
@@ -193,16 +178,13 @@ Feature: Update of address interpolations
|
||||
| osm | class | type | housenr |
|
||||
| N1 | place | house | 2 |
|
||||
| N2 | place | house | 6 |
|
||||
And the places
|
||||
| osm | class | type | addr+interpolation | street | geometry |
|
||||
| W10 | place | houses | even | Cloud Street| 1,2 |
|
||||
And the interpolations
|
||||
| osm | type | street | geometry | nodes |
|
||||
| W10 | even | Cloud Street| 1,2 | 1,2 |
|
||||
And the places
|
||||
| osm | class | type | name | geometry |
|
||||
| W2 | highway | unclassified | Sun Way | 10,11 |
|
||||
| W3 | highway | unclassified | Cloud Street | 20,21 |
|
||||
And the ways
|
||||
| id | nodes |
|
||||
| 10 | 1,2 |
|
||||
When importing
|
||||
Then placex contains
|
||||
| object | parent_place_id |
|
||||
@@ -220,67 +202,6 @@ Feature: Update of address interpolations
|
||||
| parent_place_id | start | end |
|
||||
| W2 | 4 | 4 |
|
||||
|
||||
Scenario: building becomes interpolation
|
||||
Given the grid
|
||||
| 10 | | | | 11 |
|
||||
| | 1 | | 2 | |
|
||||
| | 4 | | 3 | |
|
||||
And the places
|
||||
| osm | class | type | housenr | geometry |
|
||||
| W1 | place | house | 3 | (1,2,3,4,1) |
|
||||
And the places
|
||||
| osm | class | type | name | geometry |
|
||||
| W2 | highway | unclassified | Cloud Street | 10,11 |
|
||||
When importing
|
||||
Then placex contains
|
||||
| object | parent_place_id |
|
||||
| W1 | W2 |
|
||||
Given the ways
|
||||
| id | nodes |
|
||||
| 1 | 1,2 |
|
||||
When updating places
|
||||
| osm | class | type | housenr |
|
||||
| N1 | place | house | 2 |
|
||||
| N2 | place | house | 6 |
|
||||
And updating places
|
||||
| osm | class | type | addr+interpolation | street | geometry |
|
||||
| W1 | place | houses | even | Cloud Street| 1,2 |
|
||||
Then placex has no entry for W1
|
||||
And W1 expands to interpolation
|
||||
| parent_place_id | start | end |
|
||||
| W2 | 4 | 4 |
|
||||
|
||||
Scenario: interpolation becomes building
|
||||
Given the grid
|
||||
| 10 | | | | 11 |
|
||||
| | 1 | | 2 | |
|
||||
| | 4 | | 3 | |
|
||||
And the places
|
||||
| osm | class | type | housenr |
|
||||
| N1 | place | house | 2 |
|
||||
| N2 | place | house | 6 |
|
||||
And the places
|
||||
| osm | class | type | name | geometry |
|
||||
| W2 | highway | unclassified | Cloud Street | 10,11 |
|
||||
And the ways
|
||||
| id | nodes |
|
||||
| 1 | 1,2 |
|
||||
And the places
|
||||
| osm | class | type | addr+interpolation | street | geometry |
|
||||
| W1 | place | houses | even | Cloud Street| 1,2 |
|
||||
When importing
|
||||
Then placex has no entry for W1
|
||||
And W1 expands to interpolation
|
||||
| parent_place_id | start | end |
|
||||
| W2 | 4 | 4 |
|
||||
When updating places
|
||||
| osm | class | type | housenr | geometry |
|
||||
| W1 | place | house | 3 | (1,2,3,4,1) |
|
||||
Then placex contains
|
||||
| object | parent_place_id |
|
||||
| W1 | W2 |
|
||||
And W1 expands to no interpolation
|
||||
|
||||
Scenario: housenumbers added to interpolation
|
||||
Given the grid
|
||||
| 10 | | | | 11 |
|
||||
@@ -288,18 +209,18 @@ Feature: Update of address interpolations
|
||||
And the places
|
||||
| osm | class | type | name | geometry |
|
||||
| W2 | highway | unclassified | Cloud Street | 10,11 |
|
||||
And the ways
|
||||
| id | nodes |
|
||||
| 1 | 1,2 |
|
||||
And the places
|
||||
| osm | class | type | addr+interpolation | geometry |
|
||||
| W1 | place | houses | even | 1,2 |
|
||||
And the interpolations
|
||||
| osm | type | geometry | nodes |
|
||||
| W1 | even | 1,2 | 1,2 |
|
||||
When importing
|
||||
Then W1 expands to no interpolation
|
||||
When updating places
|
||||
| osm | class | type | housenr |
|
||||
| N1 | place | house | 2 |
|
||||
| N2 | place | house | 6 |
|
||||
And updating interpolations
|
||||
| osm | type | geometry | nodes |
|
||||
| W1 | even | 1,2 | 1,2 |
|
||||
Then W1 expands to interpolation
|
||||
| parent_place_id | start | end |
|
||||
| W2 | 4 | 4 |
|
||||
@@ -311,12 +232,9 @@ Feature: Update of address interpolations
|
||||
And the places
|
||||
| osm | class | type | name | geometry |
|
||||
| W1 | highway | unclassified | Cloud Street | 1, 2 |
|
||||
And the ways
|
||||
| id | nodes |
|
||||
| 2 | 3,4,5 |
|
||||
And the places
|
||||
| osm | class | type | addr+interpolation | geometry |
|
||||
| W2 | place | houses | even | 3,4,5 |
|
||||
And the interpolations
|
||||
| osm | type | geometry | nodes |
|
||||
| W2 | even | 3,4,5 | 3,4,5 |
|
||||
And the places
|
||||
| osm | class | type | housenr |
|
||||
| N3 | place | house | 2 |
|
||||
@@ -328,12 +246,14 @@ Feature: Update of address interpolations
|
||||
When updating places
|
||||
| osm | class | type | housenr |
|
||||
| N4 | place | house | 6 |
|
||||
And updating interpolations
|
||||
| osm | type | geometry | nodes |
|
||||
| W2 | even | 3,4,5 | 3,4,5 |
|
||||
Then W2 expands to interpolation
|
||||
| parent_place_id | start | end |
|
||||
| W1 | 4 | 4 |
|
||||
| W1 | 8 | 8 |
|
||||
|
||||
@skip
|
||||
Scenario: housenumber removed in middle of interpolation
|
||||
Given the grid
|
||||
| 1 | | | | | 2 |
|
||||
@@ -341,12 +261,9 @@ Feature: Update of address interpolations
|
||||
And the places
|
||||
| osm | class | type | name | geometry |
|
||||
| W1 | highway | unclassified | Cloud Street | 1, 2 |
|
||||
And the ways
|
||||
| id | nodes |
|
||||
| 2 | 3,4,5 |
|
||||
And the places
|
||||
| osm | class | type | addr+interpolation | geometry |
|
||||
| W2 | place | houses | even | 3,4,5 |
|
||||
And the interpolations
|
||||
| osm | type | geometry | nodes |
|
||||
| W2 | even | 3,4,5 | 3,4,5 |
|
||||
And the places
|
||||
| osm | class | type | housenr |
|
||||
| N3 | place | house | 2 |
|
||||
@@ -358,6 +275,9 @@ Feature: Update of address interpolations
|
||||
| W1 | 4 | 4 |
|
||||
| W1 | 8 | 8 |
|
||||
When marking for delete N4
|
||||
And updating interpolations
|
||||
| osm | type | geometry | nodes |
|
||||
| W2 | even | 3,4,5 | 3,4,5 |
|
||||
Then W2 expands to interpolation
|
||||
| parent_place_id | start | end |
|
||||
| W1 | 4 | 8 |
|
||||
@@ -369,12 +289,9 @@ Feature: Update of address interpolations
|
||||
And the places
|
||||
| osm | class | type | name | geometry |
|
||||
| W1 | highway | unclassified | Cloud Street | 1, 2 |
|
||||
And the ways
|
||||
| id | nodes |
|
||||
| 2 | 3,4 |
|
||||
And the places
|
||||
| osm | class | type | addr+interpolation | geometry |
|
||||
| W2 | place | houses | even | 3,4 |
|
||||
And the interpolations
|
||||
| osm | type | geometry | nodes |
|
||||
| W2 | even | 3,4 | 3,4 |
|
||||
And the places
|
||||
| osm | class | type | housenr |
|
||||
| N3 | place | house | 2 |
|
||||
@@ -386,33 +303,9 @@ Feature: Update of address interpolations
|
||||
When updating places
|
||||
| osm | class | type | housenr |
|
||||
| N4 | place | house | 8 |
|
||||
And updating interpolations
|
||||
| osm | type | geometry | nodes |
|
||||
| W2 | even | 3,4 | 3,4 |
|
||||
Then W2 expands to interpolation
|
||||
| parent_place_id | start | end |
|
||||
| W1 | 4 | 6 |
|
||||
|
||||
Scenario: Legal interpolation type changed to illegal one
|
||||
Given the grid
|
||||
| 1 | | 2 |
|
||||
| 3 | | 4 |
|
||||
And the places
|
||||
| osm | class | type | name | geometry |
|
||||
| W1 | highway | unclassified | Cloud Street | 1, 2 |
|
||||
And the ways
|
||||
| id | nodes |
|
||||
| 2 | 3,4 |
|
||||
And the places
|
||||
| osm | class | type | addr+interpolation | geometry |
|
||||
| W2 | place | houses | even | 3,4 |
|
||||
And the places
|
||||
| osm | class | type | housenr |
|
||||
| N3 | place | house | 2 |
|
||||
| N4 | place | house | 6 |
|
||||
When importing
|
||||
Then W2 expands to interpolation
|
||||
| parent_place_id | start | end |
|
||||
| W1 | 4 | 4 |
|
||||
When updating places
|
||||
| osm | class | type | addr+interpolation | geometry |
|
||||
| W2 | place | houses | 12-2 | 3,4 |
|
||||
Then W2 expands to no interpolation
|
||||
|
||||
|
||||
@@ -68,19 +68,6 @@ Feature: Update of simple objects
|
||||
| object | class | type | centroid!wkt |
|
||||
| N3 | shop | grocery | 1 -1 |
|
||||
|
||||
Scenario: remove postcode place when house number is added
|
||||
Given the places
|
||||
| osm | class | type | postcode | geometry |
|
||||
| N3 | place | postcode | 12345 | country:de |
|
||||
When importing
|
||||
Then placex has no entry for N3
|
||||
When updating places
|
||||
| osm | class | type | postcode | housenr | geometry |
|
||||
| N3 | place | house | 12345 | 13 | country:de |
|
||||
Then placex contains
|
||||
| object | class | type |
|
||||
| N3 | place | house |
|
||||
|
||||
Scenario: remove boundary when changing from polygon to way
|
||||
Given the grid
|
||||
| 1 | 2 |
|
||||
|
||||
42
test/bdd/features/osm2pgsql/import/interpolation.feature
Normal file
42
test/bdd/features/osm2pgsql/import/interpolation.feature
Normal file
@@ -0,0 +1,42 @@
|
||||
Feature: Import of interpolations
|
||||
Test if interpolation objects are correctly imported into the
|
||||
place_interpolation table
|
||||
|
||||
Background:
|
||||
Given the grid
|
||||
| 1 | 2 |
|
||||
| 4 | 3 |
|
||||
|
||||
Scenario: Simple address interpolations
|
||||
When loading osm data
|
||||
"""
|
||||
n1
|
||||
n2
|
||||
w13001 Taddr:interpolation=odd,addr:street=Blumenstrasse Nn1,n2
|
||||
w13002 Taddr:interpolation=even,place=city Nn1,n2
|
||||
w13003 Taddr:interpolation=odd Nn1,n1
|
||||
"""
|
||||
Then place contains exactly
|
||||
| object | class | type |
|
||||
| W13002 | place | city |
|
||||
And place_interpolation contains exactly
|
||||
| osm_id | type | address!dict | nodes!ints | geometry!wkt |
|
||||
| 13001 | odd | "street": "Blumenstrasse" | 1,2 | 1,2 |
|
||||
| 13002 | even | - | 1,2 | 1,2 |
|
||||
|
||||
Scenario: Address interpolation with housenumber
|
||||
When loading osm data
|
||||
"""
|
||||
n1
|
||||
n2
|
||||
n3
|
||||
n4
|
||||
w34 Taddr:interpolation=all,addr:housenumber=2-4,building=yes Nn1,n2,n3,n4,n1
|
||||
w35 Taddr:interpolation=all,addr:housenumber=5,building=yes Nn1,n2,n3,n4,n1
|
||||
w36 Taddr:interpolation=all,addr:housenumber=2a-c Nn1,n2,n3,n4,n1
|
||||
"""
|
||||
Then place contains exactly
|
||||
| object | class | type | address!dict |
|
||||
| W35 | building | yes | "housenumber": "5", "interpolation": "all" |
|
||||
| W34 | building | yes | "housenumber": "2-4", "interpolation": "all" |
|
||||
| W36 | place | house | "housenumber": "2a-c", "interpolation": "all" |
|
||||
@@ -205,18 +205,6 @@ Feature: Tag evaluation
|
||||
| N12005 | 12345 | - |
|
||||
|
||||
|
||||
Scenario: Address interpolations
|
||||
When loading osm data
|
||||
"""
|
||||
n13001 Taddr:interpolation=odd
|
||||
n13002 Taddr:interpolation=even,place=city
|
||||
"""
|
||||
Then place contains exactly
|
||||
| object | class | type | address!dict |
|
||||
| N13001 | place | houses | 'interpolation': 'odd' |
|
||||
| N13002 | place | houses | 'interpolation': 'even' |
|
||||
|
||||
|
||||
Scenario: Footways
|
||||
When loading osm data
|
||||
"""
|
||||
|
||||
@@ -14,20 +14,24 @@ Feature: Updates of address interpolation objects
|
||||
n2 Taddr:housenumber=17
|
||||
w33 Thighway=residential,name=Tao Nn1,n2
|
||||
"""
|
||||
Then place contains
|
||||
Then place contains exactly
|
||||
| object | class | type |
|
||||
| N1 | place | house |
|
||||
| N2 | place | house |
|
||||
| W33 | highway | residential |
|
||||
|
||||
When updating osm data
|
||||
"""
|
||||
w99 Taddr:interpolation=odd Nn1,n2
|
||||
"""
|
||||
Then place contains
|
||||
Then place contains exactly
|
||||
| object | class | type |
|
||||
| N1 | place | house |
|
||||
| N2 | place | house |
|
||||
| W99 | place | houses |
|
||||
| W33 | highway | residential |
|
||||
And place_interpolation contains exactly
|
||||
| osm_id | type |
|
||||
| 99 | odd |
|
||||
When indexing
|
||||
Then placex contains exactly
|
||||
| object | class | type |
|
||||
@@ -46,11 +50,13 @@ Feature: Updates of address interpolation objects
|
||||
n2 Taddr:housenumber=7
|
||||
w99 Taddr:interpolation=odd Nn1,n2
|
||||
"""
|
||||
Then place contains
|
||||
Then place contains exactly
|
||||
| object | class | type |
|
||||
| N1 | place | house |
|
||||
| N2 | place | house |
|
||||
| W99 | place | houses |
|
||||
And place_interpolation contains exactly
|
||||
| osm_id | type |
|
||||
| 99 | odd |
|
||||
|
||||
When updating osm data
|
||||
"""
|
||||
@@ -60,6 +66,8 @@ Feature: Updates of address interpolation objects
|
||||
| object | class | type |
|
||||
| N1 | place | house |
|
||||
| N2 | place | house |
|
||||
And place_interpolation contains exactly
|
||||
| osm_id |
|
||||
When indexing
|
||||
Then placex contains exactly
|
||||
| object | class | type |
|
||||
@@ -77,21 +85,27 @@ Feature: Updates of address interpolation objects
|
||||
w33 Thighway=residential Nn1,n2
|
||||
w99 Thighway=residential Nn1,n2
|
||||
"""
|
||||
Then place contains
|
||||
Then place contains exactly
|
||||
| object | class | type |
|
||||
| N1 | place | house |
|
||||
| N2 | place | house |
|
||||
| W33 | highway | residential |
|
||||
| W99 | highway | residential |
|
||||
And place_interpolation contains exactly
|
||||
| osm_id |
|
||||
|
||||
When updating osm data
|
||||
"""
|
||||
w99 Taddr:interpolation=odd Nn1,n2
|
||||
"""
|
||||
Then place contains
|
||||
Then place contains exactly
|
||||
| object | class | type |
|
||||
| N1 | place | house |
|
||||
| N2 | place | house |
|
||||
| W99 | place | houses |
|
||||
| W33 | highway | residential |
|
||||
And place_interpolation contains exactly
|
||||
| osm_id | type |
|
||||
| 99 | odd |
|
||||
When indexing
|
||||
Then placex contains exactly
|
||||
| object | class | type |
|
||||
@@ -110,11 +124,13 @@ Feature: Updates of address interpolation objects
|
||||
n2 Taddr:housenumber=17
|
||||
w99 Taddr:interpolation=odd Nn1,n2
|
||||
"""
|
||||
Then place contains
|
||||
Then place contains exactly
|
||||
| object | class | type |
|
||||
| N1 | place | house |
|
||||
| N2 | place | house |
|
||||
| W99 | place | houses |
|
||||
And place_interpolation contains exactly
|
||||
| osm_id | type |
|
||||
| 99 | odd |
|
||||
|
||||
When updating osm data
|
||||
"""
|
||||
@@ -125,6 +141,8 @@ Feature: Updates of address interpolation objects
|
||||
| N1 | place | house |
|
||||
| N2 | place | house |
|
||||
| W99 | highway | residential |
|
||||
And place_interpolation contains exactly
|
||||
| osm_id |
|
||||
When indexing
|
||||
Then placex contains exactly
|
||||
| object | class | type |
|
||||
|
||||
@@ -112,7 +112,9 @@ Feature: Update of postcode only objects
|
||||
| object | class | type |
|
||||
| N1 | place | house |
|
||||
| N2 | place | house |
|
||||
| W34 | place | houses |
|
||||
And place_interpolation contains exactly
|
||||
| osm_id | type |
|
||||
| 34 | odd |
|
||||
|
||||
When updating osm data
|
||||
"""
|
||||
@@ -122,9 +124,11 @@ Feature: Update of postcode only objects
|
||||
| object | class | type |
|
||||
| N1 | place | house |
|
||||
| N2 | place | house |
|
||||
Then place_postcode contains exactly
|
||||
And place_postcode contains exactly
|
||||
| object | postcode |
|
||||
| W34 | 4456 |
|
||||
And place_interpolation contains exactly
|
||||
| osm_id |
|
||||
When indexing
|
||||
Then location_property_osmline contains exactly
|
||||
| osm_id |
|
||||
@@ -158,7 +162,9 @@ Feature: Update of postcode only objects
|
||||
| N1 | place | house |
|
||||
| N2 | place | house |
|
||||
| W33 | highway | residential |
|
||||
| W34 | place | houses |
|
||||
And place_interpolation contains exactly
|
||||
| osm_id | type |
|
||||
| 34 | odd |
|
||||
And place_postcode contains exactly
|
||||
| object |
|
||||
When indexing
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
#
|
||||
# This file is part of Nominatim. (https://nominatim.org)
|
||||
#
|
||||
# Copyright (C) 2025 by the Nominatim developer community.
|
||||
# Copyright (C) 2026 by the Nominatim developer community.
|
||||
# For a full list of authors see the git log.
|
||||
"""
|
||||
Collector for BDD import acceptance tests.
|
||||
@@ -14,6 +14,7 @@ import re
|
||||
from collections import defaultdict
|
||||
|
||||
import psycopg
|
||||
import psycopg.sql as pysql
|
||||
|
||||
import pytest
|
||||
from pytest_bdd import when, then, given
|
||||
@@ -50,6 +51,34 @@ def _collect_place_ids(conn):
|
||||
return pids
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def row_factory(db_conn):
|
||||
def _insert_row(table, **data):
|
||||
columns = []
|
||||
placeholders = []
|
||||
values = []
|
||||
for k, v in data.items():
|
||||
columns.append(pysql.Identifier(k))
|
||||
if isinstance(v, tuple):
|
||||
placeholders.append(pysql.SQL(v[0]))
|
||||
values.append(v[1])
|
||||
elif isinstance(v, (pysql.Literal, pysql.SQL)):
|
||||
placeholders.append(v)
|
||||
else:
|
||||
placeholders.append(pysql.Placeholder())
|
||||
values.append(v)
|
||||
|
||||
sql = pysql.SQL("INSERT INTO {table} ({columns}) VALUES({values})")\
|
||||
.format(table=pysql.Identifier(table),
|
||||
columns=pysql.SQL(',').join(columns),
|
||||
values=pysql.SQL(',').join(placeholders))
|
||||
|
||||
db_conn.execute(sql, values)
|
||||
db_conn.commit()
|
||||
|
||||
return _insert_row
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def test_config_env(pytestconfig):
|
||||
dbname = pytestconfig.getini('nominatim_test_db')
|
||||
@@ -85,18 +114,36 @@ def import_places(db_conn, named, datatable, node_grid):
|
||||
|
||||
|
||||
@given(step_parse('the entrances'), target_fixture=None)
|
||||
def import_place_entrances(db_conn, datatable, node_grid):
|
||||
def import_place_entrances(row_factory, datatable, node_grid):
|
||||
""" Insert todo rows into the place_entrance table.
|
||||
"""
|
||||
with db_conn.cursor() as cur:
|
||||
for row in datatable[1:]:
|
||||
data = PlaceColumn(node_grid).add_row(datatable[0], row, False)
|
||||
assert data.columns['osm_type'] == 'N'
|
||||
for row in datatable[1:]:
|
||||
data = PlaceColumn(node_grid).add_row(datatable[0], row, False)
|
||||
assert data.columns['osm_type'] == 'N'
|
||||
|
||||
cur.execute("""INSERT INTO place_entrance (osm_id, type, extratags, geometry)
|
||||
VALUES (%s, %s, %s, {})""".format(data.get_wkt()),
|
||||
(data.columns['osm_id'], data.columns['type'],
|
||||
data.columns.get('extratags')))
|
||||
params = {'osm_id': data.columns['osm_id'],
|
||||
'type': data.columns['type'],
|
||||
'extratags': data.columns.get('extratags'),
|
||||
'geometry': pysql.SQL(data.get_wkt())}
|
||||
|
||||
row_factory('place_entrance', **params)
|
||||
|
||||
|
||||
@given(step_parse('the interpolations'), target_fixture=None)
|
||||
def import_place_interpolations(row_factory, datatable, node_grid):
|
||||
""" Insert todo rows into the place_entrance table.
|
||||
"""
|
||||
for row in datatable[1:]:
|
||||
data = PlaceColumn(node_grid).add_row(datatable[0], row, False)
|
||||
assert data.columns['osm_type'] == 'W'
|
||||
|
||||
params = {'osm_id': data.columns['osm_id'],
|
||||
'type': data.columns['type'],
|
||||
'address': data.columns.get('address'),
|
||||
'nodes': [int(x) for x in data.columns['nodes'].split(',')],
|
||||
'geometry': pysql.SQL(data.get_wkt())}
|
||||
|
||||
row_factory('place_interpolation', **params)
|
||||
|
||||
|
||||
@given(step_parse('the postcodes'), target_fixture=None)
|
||||
@@ -135,43 +182,41 @@ def import_place_postcode(db_conn, datatable, node_grid):
|
||||
|
||||
|
||||
@given('the ways', target_fixture=None)
|
||||
def import_ways(db_conn, datatable):
|
||||
def import_ways(row_factory, datatable):
|
||||
""" Import raw ways into the osm2pgsql way middle table.
|
||||
"""
|
||||
with db_conn.cursor() as cur:
|
||||
id_idx = datatable[0].index('id')
|
||||
node_idx = datatable[0].index('nodes')
|
||||
for line in datatable[1:]:
|
||||
tags = psycopg.types.json.Json(
|
||||
{k[5:]: v for k, v in zip(datatable[0], line)
|
||||
if k.startswith("tags+")})
|
||||
nodes = [int(x) for x in line[node_idx].split(',')]
|
||||
|
||||
cur.execute("INSERT INTO planet_osm_ways (id, nodes, tags) VALUES (%s, %s, %s)",
|
||||
(line[id_idx], nodes, tags))
|
||||
id_idx = datatable[0].index('id')
|
||||
node_idx = datatable[0].index('nodes')
|
||||
for line in datatable[1:]:
|
||||
row_factory('planet_osm_ways',
|
||||
id=line[id_idx],
|
||||
nodes=[int(x) for x in line[node_idx].split(',')],
|
||||
tags=psycopg.types.json.Json(
|
||||
{k[5:]: v for k, v in zip(datatable[0], line)
|
||||
if k.startswith("tags+")}))
|
||||
|
||||
|
||||
@given('the relations', target_fixture=None)
|
||||
def import_rels(db_conn, datatable):
|
||||
def import_rels(row_factory, datatable):
|
||||
""" Import raw relations into the osm2pgsql relation middle table.
|
||||
"""
|
||||
with db_conn.cursor() as cur:
|
||||
id_idx = datatable[0].index('id')
|
||||
memb_idx = datatable[0].index('members')
|
||||
for line in datatable[1:]:
|
||||
tags = psycopg.types.json.Json(
|
||||
{k[5:]: v for k, v in zip(datatable[0], line)
|
||||
if k.startswith("tags+")})
|
||||
members = []
|
||||
if line[memb_idx]:
|
||||
for member in line[memb_idx].split(','):
|
||||
m = re.fullmatch(r'\s*([RWN])(\d+)(?::(\S+))?\s*', member)
|
||||
if not m:
|
||||
raise ValueError(f'Illegal member {member}.')
|
||||
members.append({'ref': int(m[2]), 'role': m[3] or '', 'type': m[1]})
|
||||
id_idx = datatable[0].index('id')
|
||||
memb_idx = datatable[0].index('members')
|
||||
for line in datatable[1:]:
|
||||
tags = psycopg.types.json.Json(
|
||||
{k[5:]: v for k, v in zip(datatable[0], line)
|
||||
if k.startswith("tags+")})
|
||||
members = []
|
||||
if line[memb_idx]:
|
||||
for member in line[memb_idx].split(','):
|
||||
m = re.fullmatch(r'\s*([RWN])(\d+)(?::(\S+))?\s*', member)
|
||||
if not m:
|
||||
raise ValueError(f'Illegal member {member}.')
|
||||
members.append({'ref': int(m[2]), 'role': m[3] or '', 'type': m[1]})
|
||||
|
||||
cur.execute('INSERT INTO planet_osm_rels (id, tags, members) VALUES (%s, %s, %s)',
|
||||
(int(line[id_idx]), tags, psycopg.types.json.Json(members)))
|
||||
row_factory('planet_osm_rels',
|
||||
id=int(line[id_idx]), tags=tags,
|
||||
members=psycopg.types.json.Json(members))
|
||||
|
||||
|
||||
@when('importing', target_fixture='place_ids')
|
||||
@@ -221,6 +266,28 @@ def update_place_entrances(db_conn, datatable, node_grid):
|
||||
db_conn.commit()
|
||||
|
||||
|
||||
@when('updating interpolations', target_fixture=None)
|
||||
def update_place_interpolations(db_conn, row_factory, update_config, datatable, node_grid):
|
||||
""" Update rows in the place_entrance table.
|
||||
"""
|
||||
for row in datatable[1:]:
|
||||
data = PlaceColumn(node_grid).add_row(datatable[0], row, False)
|
||||
assert data.columns['osm_type'] == 'W'
|
||||
|
||||
params = {'osm_id': data.columns['osm_id'],
|
||||
'type': data.columns['type'],
|
||||
'address': data.columns.get('address'),
|
||||
'nodes': [int(x) for x in data.columns['nodes'].split(',')],
|
||||
'geometry': pysql.SQL(data.get_wkt())}
|
||||
|
||||
row_factory('place_interpolation', **params)
|
||||
|
||||
db_conn.execute('SELECT flush_deleted_places()')
|
||||
db_conn.commit()
|
||||
|
||||
cli.nominatim(['index', '-q', '--minrank', '30'], update_config.environ)
|
||||
|
||||
|
||||
@when('refreshing postcodes')
|
||||
def do_postcode_update(update_config):
|
||||
""" Recompute the postcode centroids.
|
||||
@@ -237,6 +304,8 @@ def do_delete_place(db_conn, update_config, node_grid, otype, oid):
|
||||
cur.execute('TRUNCATE place_to_be_deleted')
|
||||
cur.execute('DELETE FROM place WHERE osm_type = %s and osm_id = %s',
|
||||
(otype, oid))
|
||||
cur.execute('DELETE FROM place_interpolation WHERE osm_id = %s',
|
||||
(oid, ))
|
||||
cur.execute('SELECT flush_deleted_places()')
|
||||
if otype == 'N':
|
||||
cur.execute('DELETE FROM place_entrance WHERE osm_id = %s',
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
#
|
||||
# This file is part of Nominatim. (https://nominatim.org)
|
||||
#
|
||||
# Copyright (C) 2025 by the Nominatim developer community.
|
||||
# Copyright (C) 2026 by the Nominatim developer community.
|
||||
# For a full list of authors see the git log.
|
||||
"""
|
||||
Helper functions to compare expected values.
|
||||
@@ -61,6 +61,8 @@ COMPARISON_FUNCS = {
|
||||
'fm': lambda val, exp: re.fullmatch(exp, val) is not None,
|
||||
'dict': lambda val, exp: (val is None if exp == '-'
|
||||
else (val == ast.literal_eval('{' + exp + '}'))),
|
||||
'ints': lambda val, exp: (val is None if exp == '-'
|
||||
else (val == [int(i) for i in exp.split(',')])),
|
||||
'in_box': within_box
|
||||
}
|
||||
|
||||
@@ -84,6 +86,8 @@ class ResultAttr:
|
||||
!fm - consider comparison string a regular expression and match full value
|
||||
!wkt - convert the expected value to a WKT string before comparing
|
||||
!in_box - the expected value is a comma-separated bbox description
|
||||
!dict - compare as a dictitionary, member order does not matter
|
||||
!ints - compare as integer array
|
||||
"""
|
||||
|
||||
def __init__(self, obj, key, grid=None):
|
||||
|
||||
@@ -54,7 +54,6 @@ class PlaceColumn:
|
||||
elif key in ('name', 'address', 'extratags'):
|
||||
self.columns[key] = ast.literal_eval('{' + value + '}')
|
||||
else:
|
||||
assert key in ('class', 'type'), "Unknown column '{}'.".format(key)
|
||||
self.columns[key] = None if value == '' else value
|
||||
|
||||
def _set_key_name(self, value):
|
||||
|
||||
@@ -192,9 +192,9 @@ def place_table(temp_db_with_extensions, table_factory):
|
||||
type text NOT NULL,
|
||||
name hstore,
|
||||
admin_level smallint,
|
||||
address hstore,
|
||||
extratags hstore,
|
||||
geometry Geometry(Geometry,4326) NOT NULL""")
|
||||
address HSTORE,
|
||||
extratags HSTORE,
|
||||
geometry GEOMETRY(Geometry,4326) NOT NULL""")
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
@@ -223,9 +223,9 @@ def place_postcode_table(temp_db_with_extensions, table_factory):
|
||||
"""osm_type char(1) NOT NULL,
|
||||
osm_id bigint NOT NULL,
|
||||
postcode text NOT NULL,
|
||||
country_code text,
|
||||
centroid Geometry(Point, 4326) NOT NULL,
|
||||
geometry Geometry(Geometry, 4326)""")
|
||||
country_code TEXT,
|
||||
centroid GEOMETRY(Point, 4326) NOT NULL,
|
||||
geometry GEOMETRY(Geometry, 4326)""")
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
@@ -246,6 +246,35 @@ def place_postcode_row(place_postcode_table, temp_db_cursor):
|
||||
return _insert
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def place_interpolation_table(temp_db_with_extensions, table_factory):
|
||||
""" Create an empty version of the place_interpolation table.
|
||||
"""
|
||||
table_factory('place_interpolation',
|
||||
"""osm_id bigint NOT NULL,
|
||||
type TEXT,
|
||||
address HSTORE,
|
||||
nodes BIGINT[],
|
||||
geometry GEOMETRY(Geometry, 4326)""")
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def place_interpolation_row(place_interpolation_table, temp_db_cursor):
|
||||
""" A factory for rows in the place_interpolation table. The table is created as a
|
||||
prerequisite to the fixture.
|
||||
"""
|
||||
idseq = itertools.count(30001)
|
||||
|
||||
def _insert(osm_id=None, typ='odd', address=None,
|
||||
nodes=None, geom='LINESTRING(0.1 0.21, 0.1 0.2)'):
|
||||
params = {'osm_id': osm_id or next(idseq),
|
||||
'type': typ, 'address': address, 'nodes': nodes,
|
||||
'geometry': _with_srid(geom)}
|
||||
temp_db_cursor.insert_row('place_interpolation', **params)
|
||||
|
||||
return _insert
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def placex_table(temp_db_with_extensions, temp_db_conn, load_sql, place_table):
|
||||
""" Create an empty version of the placex table.
|
||||
|
||||
@@ -76,8 +76,8 @@ def test_analyse_indexing_with_osm_id(project_env, placex_row):
|
||||
class TestAdminCleanDeleted:
|
||||
|
||||
@pytest.fixture(autouse=True)
|
||||
def setup_polygon_delete(self, project_env, table_factory, place_table, placex_row,
|
||||
osmline_table, temp_db_cursor, load_sql):
|
||||
def setup_polygon_delete(self, project_env, table_factory, place_interpolation_table,
|
||||
placex_row, osmline_table, temp_db_cursor, load_sql):
|
||||
""" Set up place_force_delete function and related tables
|
||||
"""
|
||||
self.project_env = project_env
|
||||
@@ -106,16 +106,24 @@ class TestAdminCleanDeleted:
|
||||
class TEXT NOT NULL,
|
||||
type TEXT NOT NULL,
|
||||
deferred BOOLEAN""")
|
||||
table_factory('place_interpolation_to_be_deleted',
|
||||
"""osm_id BIGINT,
|
||||
osm_type CHAR(1)""")
|
||||
table_factory('import_polygon_error', """osm_id BIGINT,
|
||||
osm_type CHAR(1),
|
||||
class TEXT NOT NULL,
|
||||
type TEXT NOT NULL""")
|
||||
temp_db_cursor.execute("""CREATE OR REPLACE FUNCTION place_delete()
|
||||
RETURNS TRIGGER AS $$
|
||||
BEGIN RETURN NULL; END;
|
||||
$$ LANGUAGE plpgsql;""")
|
||||
temp_db_cursor.execute("""CREATE TRIGGER place_before_delete BEFORE DELETE ON place
|
||||
FOR EACH ROW EXECUTE PROCEDURE place_delete();""")
|
||||
temp_db_cursor.execute("""
|
||||
CREATE OR REPLACE FUNCTION place_delete() RETURNS TRIGGER AS $$
|
||||
BEGIN RETURN NULL; END;
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
CREATE TRIGGER place_before_delete BEFORE DELETE ON place
|
||||
FOR EACH ROW EXECUTE PROCEDURE place_delete();
|
||||
|
||||
CREATE TRIGGER place_interpolation_before_delete BEFORE DELETE ON place_interpolation
|
||||
FOR EACH ROW EXECUTE PROCEDURE place_delete();
|
||||
""")
|
||||
load_sql('functions/utils.sql')
|
||||
|
||||
def test_admin_clean_deleted_no_records(self):
|
||||
|
||||
@@ -165,12 +165,11 @@ def test_truncate_database_tables(temp_db_conn, temp_db_cursor, table_factory, w
|
||||
|
||||
@pytest.mark.parametrize("threads", (1, 5))
|
||||
@pytest.mark.asyncio
|
||||
async def test_load_data(dsn, place_row, placex_table, osmline_table,
|
||||
async def test_load_data(dsn, place_row, place_interpolation_row, placex_table, osmline_table,
|
||||
temp_db_cursor, threads):
|
||||
for oid in range(100, 130):
|
||||
place_row(osm_id=oid)
|
||||
place_row(osm_type='W', osm_id=342, cls='place', typ='houses',
|
||||
geom='LINESTRING(0 0, 10 10)')
|
||||
place_interpolation_row(osm_id=342, typ='odd', geom='LINESTRING(0 0, 10 10)')
|
||||
|
||||
temp_db_cursor.execute("""
|
||||
CREATE OR REPLACE FUNCTION placex_insert() RETURNS TRIGGER AS $$
|
||||
@@ -238,7 +237,7 @@ class TestSetupSQL:
|
||||
assert not reverse == temp_db_cursor.table_exists('search_name')
|
||||
|
||||
def test_create_table_triggers(self, temp_db_conn, placex_table, osmline_table,
|
||||
postcode_table, load_sql):
|
||||
place_interpolation_table, postcode_table, load_sql):
|
||||
load_sql('functions.sql')
|
||||
|
||||
database_import.create_table_triggers(temp_db_conn, self.config)
|
||||
|
||||
Reference in New Issue
Block a user