Skip to content

Commit

Permalink
drop interpolations when no parent can be found
Browse files Browse the repository at this point in the history
A housenumber without the place it refers to is of only limited use.
  • Loading branch information
lonvia committed May 14, 2024
1 parent 7f0d969 commit 01f0f45
Show file tree
Hide file tree
Showing 4 changed files with 110 additions and 6 deletions.
11 changes: 7 additions & 4 deletions lib-sql/functions/interpolation.sql
Original file line number Diff line number Diff line change
Expand Up @@ -67,10 +67,6 @@ BEGIN
END LOOP;
END IF;

IF parent_place_id is null THEN
RETURN 0;
END IF;

RETURN parent_place_id;
END;
$$
Expand Down Expand Up @@ -183,6 +179,13 @@ BEGIN
ST_PointOnSurface(NEW.linegeo),
NEW.linegeo);

-- Cannot find a parent street. We will not be able to display a reliable
-- address, so drop entire interpolation.
IF NEW.parent_place_id is NULL THEN
DELETE FROM location_property_osmline where place_id = OLD.place_id;
RETURN NULL;
END IF;

NEW.token_info := token_strip_info(NEW.token_info);
IF NEW.address ? '_inherited' THEN
NEW.address := hstore('interpolation', NEW.address->'interpolation');
Expand Down
97 changes: 95 additions & 2 deletions test/bdd/db/import/interpolation.feature
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,36 @@
Feature: Import of address interpolations
Tests that interpolated addresses are added correctly

Scenario: Simple even interpolation line with two points and no street nearby
Given the grid with origin 1,1
| 1 | | 9 | | 2 |
Given the places
| 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 |
When importing
Then W1 expands to no interpolation

Scenario: Simple even interpolation line with two points
Given the grid with origin 1,1
| 1 | | 9 | | 2 |
| 4 | | | | 5 |
Given the places
| 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 named places
| osm | class | type | geometry |
| W10 | highway | residential | 4,5 |
And the ways
| id | nodes |
| 1 | 1,2 |
Expand All @@ -23,13 +43,17 @@ Feature: Import of address interpolations
Scenario: Backwards even two point interpolation line
Given the grid with origin 1,1
| 1 | 8 | 9 | 2 |
| 4 | | | 5 |
Given the places
| 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 named places
| osm | class | type | geometry |
| W10 | highway | residential | 4,5 |
And the ways
| id | nodes |
| 1 | 2,1 |
Expand All @@ -41,13 +65,17 @@ Feature: Import of address interpolations
Scenario: Simple odd two point interpolation
Given the grid with origin 1,1
| 1 | 8 | | | 9 | 2 |
| 4 | | | | 5 | |
Given the places
| 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 named places
| osm | class | type | geometry |
| W10 | highway | residential | 4,5 |
And the ways
| id | nodes |
| 1 | 1,2 |
Expand All @@ -59,13 +87,17 @@ Feature: Import of address interpolations
Scenario: Simple all two point interpolation
Given the grid with origin 1,1
| 1 | 8 | 9 | 2 |
| 4 | | | 5 |
Given the places
| 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 named places
| osm | class | type | geometry |
| W10 | highway | residential | 4,5 |
And the ways
| id | nodes |
| 1 | 1,2 |
Expand All @@ -77,13 +109,17 @@ Feature: Import of address interpolations
Scenario: Even two point interpolation line with intermediate empty node
Given the grid
| 1 | 8 | | 3 | 9 | 2 |
| 4 | | | | 5 | |
Given the places
| 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 named places
| osm | class | type | geometry |
| W10 | highway | residential | 4,5 |
And the ways
| id | nodes |
| 1 | 1,3,2 |
Expand All @@ -94,6 +130,7 @@ Feature: Import of address interpolations

Scenario: Even two point interpolation line with intermediate duplicated empty node
Given the grid
| 4 | | | | 5 |
| 1 | 8 | 3 | 9 | 2 |
Given the places
| osm | class | type | housenr |
Expand All @@ -102,6 +139,9 @@ Feature: Import of address interpolations
And the places
| osm | class | type | addr+interpolation | geometry |
| W1 | place | houses | even | 1,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 |
Expand All @@ -112,6 +152,7 @@ Feature: Import of address interpolations

Scenario: Simple even three point interpolation line
Given the grid
| 4 | | | | | | 5 |
| 1 | 8 | | 9 | 3 | 7 | 2 |
Given the places
| osm | class | type | housenr |
Expand All @@ -121,6 +162,9 @@ Feature: Import of address interpolations
And the places
| osm | class | type | addr+interpolation | geometry |
| W1 | place | houses | even | 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 |
Expand All @@ -144,6 +188,9 @@ Feature: Import of address interpolations
And the places
| osm | class | type | addr+interpolation | geometry |
| W1 | place | houses | even | 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 |
Expand All @@ -157,6 +204,7 @@ Feature: Import of address interpolations
Scenario: Reverse simple even three point interpolation line
Given the grid
| 1 | 8 | | 9 | 3 | 7 | 2 |
| 4 | | | | | | 5 |
Given the places
| osm | class | type | housenr |
| N1 | place | house | 2 |
Expand All @@ -165,6 +213,9 @@ Feature: Import of address interpolations
And the places
| osm | class | type | addr+interpolation | geometry |
| W1 | place | houses | even | 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 |
Expand All @@ -177,6 +228,7 @@ Feature: Import of address interpolations
Scenario: Even three point interpolation line with odd center point
Given the grid
| 1 | | 10 | | | 11 | 3 | 2 |
| 4 | | | | | | | 5 |
Given the places
| osm | class | type | housenr |
| N1 | place | house | 2 |
Expand All @@ -185,6 +237,9 @@ Feature: Import of address interpolations
And the places
| osm | class | type | addr+interpolation | geometry |
| W1 | place | houses | even | 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 |
Expand All @@ -206,6 +261,9 @@ Feature: Import of address interpolations
And the places
| osm | class | type | addr+interpolation | geometry |
| W1 | place | houses | even | 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 |
Expand All @@ -227,6 +285,9 @@ Feature: Import of address interpolations
And the places
| osm | class | type | addr+interpolation | geometry |
| W1 | place | houses | even | 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 |
Expand Down Expand Up @@ -334,6 +395,9 @@ Feature: Import of address interpolations
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 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 |
Expand All @@ -346,6 +410,7 @@ Feature: Import of address interpolations
Scenario: Place with missing address information
Given the grid
| 1 | | 2 | | | 3 |
| 4 | | | | | 5 |
And the places
| osm | class | type | housenr |
| N1 | place | house | 23 |
Expand All @@ -354,6 +419,9 @@ Feature: Import of address interpolations
And the places
| osm | class | type | addr+interpolation | geometry |
| W1 | place | houses | odd | 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 |
Expand All @@ -366,32 +434,43 @@ Feature: Import of address interpolations
Given the places
| osm | class | type | housenr | geometry |
| W1 | place | houses | even | 1 1, 1 1.001 |
And the named places
| osm | class | type | geometry |
| W10 | highway | residential | 1 1, 1 1.001 |
When importing
Then W1 expands to no interpolation

Scenario: Ways with nodes without housenumbers are ignored
Given the grid
| 1 | | 2 |
| 1 | | 2 |
| 4 | | 5 |
Given the places
| osm | class | type |
| N1 | place | house |
| N2 | place | house |
Given the places
| osm | class | type | housenr | geometry |
| W1 | place | houses | even | 1,2 |
And the named places
| osm | class | type | geometry |
| W10 | highway | residential | 4,5 |
When importing
Then W1 expands to no interpolation

Scenario: Two point interpolation starting at 0
Given the grid with origin 1,1
| 1 | 10 | | | 11 | 2 |
| 4 | | | | | 5 |
Given the places
| 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 places
| osm | class | type | name | geometry |
| W10 | highway | residential | London Road |4,5 |
And the ways
| id | nodes |
| 1 | 1,2 |
Expand All @@ -402,7 +481,7 @@ Feature: Import of address interpolations
When sending v1/reverse at 1,1
Then results contain
| ID | osm | type | display_name |
| 0 | N1 | house | 0 |
| 0 | N1 | house | 0, London Road |

Scenario: Parenting of interpolation with additional tags
Given the grid
Expand Down Expand Up @@ -438,13 +517,17 @@ Feature: Import of address interpolations
Scenario Outline: Bad interpolation values are ignored
Given the grid with origin 1,1
| 1 | | 9 | | 2 |
| 4 | | | | 5 |
Given the places
| 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 named places
| osm | class | type | geometry |
| W10 | highway | residential | 4,5 |
And the ways
| id | nodes |
| 1 | 1,2 |
Expand All @@ -470,6 +553,9 @@ Feature: Import of address interpolations
And the places
| osm | class | type | addr+interpolation | geometry |
| W1 | place | houses | even | 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 |
Expand All @@ -484,6 +570,7 @@ Feature: Import of address interpolations
Scenario: Interpolation line with duplicated points
Given the grid
| 7 | 10 | 8 | 11 | 9 |
| 4 | | | | 5 |
Given the places
| osm | class | type | housenr | geometry |
| N1 | place | house | 2 | 7 |
Expand All @@ -493,6 +580,9 @@ Feature: Import of address interpolations
And the places
| osm | class | type | addr+interpolation | geometry |
| W1 | place | houses | even | 7,8,8,9 |
And the named places
| osm | class | type | geometry |
| W10 | highway | residential | 4,5 |
And the ways
| id | nodes |
| 1 | 1,2,3,4 |
Expand All @@ -515,6 +605,9 @@ Feature: Import of address interpolations
And the places
| osm | class | type | addr+interpolation | geometry |
| W1 | place | houses | even | 8,9 |
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 |
Expand Down
Loading

0 comments on commit 01f0f45

Please sign in to comment.