From: Sarah Hoffmann Date: Wed, 26 Jan 2022 14:24:06 +0000 (+0100) Subject: adapt BDD tests for new interpolation style X-Git-Tag: v4.1.0~88^2~6 X-Git-Url: https://git.openstreetmap.org./nominatim.git/commitdiff_plain/4b28b4fed469ef5826e61633f82b93a29e1c9b3f?hp=fea4dbba50d5a53ef982b1eb273e0bb81a2cd036 adapt BDD tests for new interpolation style --- diff --git a/lib-sql/functions/interpolation.sql b/lib-sql/functions/interpolation.sql index c0181556..64775678 100644 --- a/lib-sql/functions/interpolation.sql +++ b/lib-sql/functions/interpolation.sql @@ -53,9 +53,13 @@ BEGIN IF parent_place_id is null THEN FOR location IN SELECT place_id FROM placex WHERE ST_DWithin(geom, placex.geometry, 0.001) and placex.rank_search = 26 - ORDER BY (ST_distance(placex.geometry, ST_LineInterpolatePoint(geom,0))+ + ORDER BY CASE WHEN ST_GeometryType(geom) = 'ST_Line' THEN + (ST_distance(placex.geometry, ST_LineInterpolatePoint(geom,0))+ ST_distance(placex.geometry, ST_LineInterpolatePoint(geom,0.5))+ - ST_distance(placex.geometry, ST_LineInterpolatePoint(geom,1))) ASC limit 1 + ST_distance(placex.geometry, ST_LineInterpolatePoint(geom,1))) + ELSE ST_distance(placex.geometry, geom) END + ASC + LIMIT 1 LOOP parent_place_id := location.place_id; END LOOP; diff --git a/test/bdd/db/import/interpolation.feature b/test/bdd/db/import/interpolation.feature index 181e87ee..4624705e 100644 --- a/test/bdd/db/import/interpolation.feature +++ b/test/bdd/db/import/interpolation.feature @@ -16,23 +16,23 @@ Feature: Import of address interpolations When importing Then W1 expands to interpolation | start | end | geometry | - | 2 | 6 | 1 1, 1 1.001 | + | 4 | 4 | 1 1.0005 | Scenario: Backwards even two point interpolation line Given the places | osm | class | type | housenr | geometry | | N1 | place | house | 2 | 1 1 | - | N2 | place | house | 6 | 1 1.001 | + | N2 | place | house | 8 | 1 1.003 | And the places | osm | class | type | addr+interpolation | geometry | - | W1 | place | houses | even | 1 1.001, 1 1 | + | W1 | place | houses | even | 1 1.003, 1 1 | And the ways | id | nodes | | 1 | 2,1 | When importing Then W1 expands to interpolation | start | end | geometry | - | 2 | 6 | 1 1, 1 1.001 | + | 4 | 6 | 1 1.001, 1 1.002 | Scenario: Simple odd two point interpolation Given the places @@ -48,23 +48,23 @@ Feature: Import of address interpolations When importing Then W1 expands to interpolation | start | end | geometry | - | 1 | 11 | 1 1, 1 1.001 | + | 3 | 9 | 1 1.0002, 1 1.0008 | Scenario: Simple all two point interpolation Given the places | osm | class | type | housenr | geometry | | N1 | place | house | 1 | 1 1 | - | N2 | place | house | 3 | 1 1.001 | + | N2 | place | house | 4 | 1 1.003 | And the places | osm | class | type | addr+interpolation | geometry | - | W1 | place | houses | all | 1 1, 1 1.001 | + | W1 | place | houses | all | 1 1, 1 1.003 | And the ways | id | nodes | | 1 | 1,2 | When importing Then W1 expands to interpolation | start | end | geometry | - | 1 | 3 | 1 1, 1 1.001 | + | 2 | 3 | 1 1.001, 1 1.002 | Scenario: Even two point interpolation line with intermediate empty node Given the places @@ -80,7 +80,7 @@ Feature: Import of address interpolations When importing Then W1 expands to interpolation | start | end | geometry | - | 2 | 10 | 1 1, 1 1.001, 1.001 1.001 | + | 4 | 8 | 1 1.0005, 1 1.001, 1.0005 1.001 | Scenario: Even two point interpolation line with intermediate duplicated empty node Given the places @@ -96,7 +96,7 @@ Feature: Import of address interpolations When importing Then W1 expands to interpolation | start | end | geometry | - | 2 | 10 | 1 1, 1 1.001, 1.001 1.001 | + | 4 | 8 | 1 1.0005, 1 1.001, 1.0005 1.001 | Scenario: Simple even three point interpolation line Given the places @@ -113,8 +113,8 @@ Feature: Import of address interpolations When importing Then W1 expands to interpolation | start | end | geometry | - | 2 | 10 | 1 1, 1 1.001 | - | 10 | 14 | 1 1.001, 1.001 1.001 | + | 4 | 8 | 1 1.00025, 1 1.00075 | + | 12 | 12 | 1.0005 1.001 | Scenario: Simple even four point interpolation line Given the places @@ -132,9 +132,9 @@ Feature: Import of address interpolations When importing Then W1 expands to interpolation | start | end | geometry | - | 2 | 10 | 1 1, 1 1.001 | - | 10 | 14 | 1 1.001, 1.001 1.001 | - | 14 | 18 | 1.001 1.001, 1.001 1.002 | + | 4 | 8 | 1 1.00025, 1 1.00075 | + | 12 | 12 | 1.0005 1.001 | + | 16 | 16 | 1.001 1.0015 | Scenario: Reverse simple even three point interpolation line Given the places @@ -151,8 +151,8 @@ Feature: Import of address interpolations When importing Then W1 expands to interpolation | start | end | geometry | - | 2 | 10 | 1 1, 1 1.001 | - | 10 | 14 | 1 1.001, 1.001 1.001 | + | 4 | 8 | 1 1.00025, 1 1.00075 | + | 12 | 12 | 1.0005 1.001 | Scenario: Even three point interpolation line with odd center point Given the places @@ -169,8 +169,7 @@ Feature: Import of address interpolations When importing Then W1 expands to interpolation | start | end | geometry | - | 2 | 7 | 1 1, 1 1.001 | - | 7 | 8 | 1 1.001, 1.001 1.001 | + | 4 | 6 | 1 1.0004, 1 1.0008 | Scenario: Interpolation line with self-intersecting way Given the places @@ -187,9 +186,9 @@ Feature: Import of address interpolations When importing Then W1 expands to interpolation | start | end | geometry | - | 2 | 6 | 0 0, 0 0.001 | - | 6 | 10 | 0 0.001, 0 0.002 | - | 6 | 10 | 0 0.001, 0 0.002 | + | 4 | 4 | 0 0.0005 | + | 8 | 8 | 0 0.0015 | + | 8 | 8 | 0 0.0015 | Scenario: Interpolation line with self-intersecting way II Given the places @@ -205,7 +204,7 @@ Feature: Import of address interpolations When importing Then W1 expands to interpolation | start | end | geometry | - | 2 | 6 | 0 0, 0 0.001 | + | 4 | 4 | 0 0.0005 | Scenario: addr:street on interpolation way Given the scene parallel-road @@ -236,10 +235,10 @@ Feature: Import of address interpolations | N4 | W3 | Then W10 expands to interpolation | parent_place_id | start | end | - | W2 | 2 | 6 | + | W2 | 4 | 4 | Then W11 expands to interpolation | parent_place_id | start | end | - | W3 | 12 | 16 | + | W3 | 14 | 14 | When sending search query "16 Cloud Street" Then results contain | ID | osm_type | osm_id | @@ -278,10 +277,10 @@ Feature: Import of address interpolations | N4 | W3 | Then W10 expands to interpolation | parent_place_id | start | end | - | W2 | 2 | 6 | + | W2 | 4 | 4 | Then W11 expands to interpolation | parent_place_id | start | end | - | W3 | 12 | 16 | + | W3 | 14 | 14 | When sending search query "16 Cloud Street" Then results contain | ID | osm_type | osm_id | @@ -306,8 +305,8 @@ Feature: Import of address interpolations When importing Then W1 expands to interpolation | start | end | geometry | - | 2 | 6 | 144.9629794 -37.7630755, 144.9630541 -37.7628174 | - | 6 | 10 | 144.9630541 -37.7628174, 144.9632341 -37.76163 | + | 4 | 4 | 144.963016 -37.762946 | + | 8 | 8 | 144.963144 -37.7622237 | Scenario: Place with missing address information Given the grid @@ -326,7 +325,7 @@ Feature: Import of address interpolations When importing Then W1 expands to interpolation | start | end | geometry | - | 23 | 29 | 1,2,3 | + | 25 | 27 | 0.000016 0,0.00002 0,0.000033 0 | Scenario: Ways without node entries are ignored Given the places @@ -348,7 +347,7 @@ Feature: Import of address interpolations Given the places | osm | class | type | housenr | geometry | | N1 | place | house | 0 | 1 1 | - | N2 | place | house | 2 | 1 1.001 | + | N2 | place | house | 8 | 1 1.001 | And the places | osm | class | type | addr+interpolation | geometry | | W1 | place | houses | even | 1 1, 1 1.001 | @@ -358,9 +357,8 @@ Feature: Import of address interpolations When importing Then W1 expands to interpolation | start | end | geometry | - | 0 | 2 | 1 1, 1 1.001 | + | 2 | 6 | 1 0002, 1 1.0008 | When sending jsonv2 reverse coordinates 1,1 Then results contain | ID | osm_type | osm_id | type | display_name | | 0 | way | 1 | house | 0 | - diff --git a/test/bdd/db/update/interpolation.feature b/test/bdd/db/update/interpolation.feature index 27ac552e..5c07f434 100644 --- a/test/bdd/db/update/interpolation.feature +++ b/test/bdd/db/update/interpolation.feature @@ -26,7 +26,7 @@ Feature: Update of address interpolations | N2 | W2 | And W10 expands to interpolation | parent_place_id | start | end | - | W2 | 2 | 6 | + | W2 | 4 | 4 | Scenario: addr:street added to interpolation Given the scene parallel-road @@ -51,7 +51,7 @@ Feature: Update of address interpolations | N2 | W2 | And W10 expands to interpolation | parent_place_id | start | end | - | W2 | 2 | 6 | + | W2 | 4 | 4 | When updating places | osm | class | type | addr+interpolation | street | geometry | | W10 | place | houses | even | Cloud Street | :w-middle | @@ -61,7 +61,7 @@ Feature: Update of address interpolations | N2 | W3 | And W10 expands to interpolation | parent_place_id | start | end | - | W3 | 2 | 6 | + | W3 | 4 | 4 | Scenario: addr:street added to housenumbers Given the scene parallel-road @@ -86,7 +86,7 @@ Feature: Update of address interpolations | N2 | W2 | And W10 expands to interpolation | parent_place_id | start | end | - | W2 | 2 | 6 | + | W2 | 4 | 4 | When updating places | osm | class | type | street | housenr | geometry | | N1 | place | house | Cloud Street| 2 | :n-middle-w | @@ -97,7 +97,7 @@ Feature: Update of address interpolations | N2 | W3 | And W10 expands to interpolation | parent_place_id | start | end | - | W3 | 2 | 6 | + | W3 | 4 | 4 | Scenario: interpolation tag removed Given the scene parallel-road @@ -122,7 +122,7 @@ Feature: Update of address interpolations | N2 | W2 | And W10 expands to interpolation | parent_place_id | start | end | - | W2 | 2 | 6 | + | W2 | 4 | 4 | When marking for delete W10 Then W10 expands to no interpolation And placex contains @@ -152,7 +152,7 @@ Feature: Update of address interpolations | N2 | W2 | And W10 expands to interpolation | parent_place_id | start | end | - | W2 | 2 | 6 | + | W2 | 4 | 4 | When updating places | osm | class | type | name | geometry | | W3 | highway | unclassified | Cloud Street | :w-south | @@ -162,7 +162,7 @@ Feature: Update of address interpolations | N2 | W3 | And W10 expands to interpolation | parent_place_id | start | end | - | W3 | 2 | 6 | + | W3 | 4 | 4 | Scenario: referenced road deleted Given the scene parallel-road @@ -187,7 +187,7 @@ Feature: Update of address interpolations | N2 | W3 | And W10 expands to interpolation | parent_place_id | start | end | - | W3 | 2 | 6 | + | W3 | 4 | 4 | When marking for delete W3 Then placex contains | object | parent_place_id | @@ -195,7 +195,7 @@ Feature: Update of address interpolations | N2 | W2 | And W10 expands to interpolation | parent_place_id | start | end | - | W2 | 2 | 6 | + | W2 | 4 | 4 | Scenario: building becomes interpolation Given the scene building-with-parallel-streets @@ -222,7 +222,7 @@ Feature: Update of address interpolations Then placex has no entry for W1 And W1 expands to interpolation | parent_place_id | start | end | - | W2 | 2 | 6 | + | W2 | 4 | 4 | Scenario: interpolation becomes building Given the scene building-with-parallel-streets @@ -243,7 +243,7 @@ Feature: Update of address interpolations Then placex has no entry for W1 And W1 expands to interpolation | parent_place_id | start | end | - | W2 | 2 | 6 | + | W2 | 4 | 4 | When updating places | osm | class | type | housenr | geometry | | W1 | place | house | 3 | :w-building | @@ -273,7 +273,7 @@ Feature: Update of address interpolations | W1 | place | houses | even | Cloud Street| :w-north | Then W1 expands to interpolation | parent_place_id | start | end | - | W2 | 2 | 6 | + | W2 | 4 | 4 | Scenario: housenumber added in middle of interpolation Given the grid @@ -294,15 +294,15 @@ Feature: Update of address interpolations | N5 | place | house | 10 | When importing Then W2 expands to interpolation - | parent_place_id | start | end | geometry | - | W1 | 2 | 10 | 3,4,5 | + | parent_place_id | start | end | + | W1 | 4 | 8 | When updating places | osm | class | type | housenr | | N4 | place | house | 6 | Then W2 expands to interpolation - | parent_place_id | start | end | geometry | - | W1 | 2 | 6 | 3,4 | - | W1 | 6 | 10 | 4,5 | + | parent_place_id | start | end | + | W1 | 4 | 4 | + | W1 | 8 | 8 | @Fail Scenario: housenumber removed in middle of interpolation @@ -325,13 +325,13 @@ Feature: Update of address interpolations | N5 | place | house | 10 | When importing Then W2 expands to interpolation - | parent_place_id | start | end | geometry | - | W1 | 2 | 6 | 3,4 | - | W1 | 6 | 10 | 4,5 | + | parent_place_id | start | end | + | W1 | 4 | 4 | + | W1 | 8 | 8 | When marking for delete N4 Then W2 expands to interpolation - | parent_place_id | start | end | geometry | - | W1 | 2 | 10 | 3,4,5 | + | parent_place_id | start | end | + | W1 | 4 | 8 | Scenario: Change the start housenumber Given the grid @@ -352,12 +352,12 @@ Feature: Update of address interpolations | N4 | place | house | 6 | When importing Then W2 expands to interpolation - | parent_place_id | start | end | geometry | - | W1 | 2 | 6 | 3,4 | + | parent_place_id | start | end | + | W1 | 4 | 4 | When updating places | osm | class | type | housenr | | N4 | place | house | 8 | Then W2 expands to interpolation - | parent_place_id | start | end | geometry | - | W1 | 2 | 8 | 3,4 | + | parent_place_id | start | end | + | W1 | 4 | 6 |