From: Sarah Hoffmann Date: Thu, 3 Sep 2020 19:42:00 +0000 (+0200) Subject: always bind addr:place to place instead of street X-Git-Tag: v3.6.0~70^2 X-Git-Url: https://git.openstreetmap.org./nominatim.git/commitdiff_plain/a8dfbcef44e8cfe844e396572a997b9cef07c522?ds=inline;hp=--cc always bind addr:place to place instead of street If an addr:place is given but no addr:street tag, then bind the rank 30 object always to a <=25 object, even when there is none found with the same name. --- a8dfbcef44e8cfe844e396572a997b9cef07c522 diff --git a/sql/functions/placex_triggers.sql b/sql/functions/placex_triggers.sql index 9c2777a9..d6a8f762 100644 --- a/sql/functions/placex_triggers.sql +++ b/sql/functions/placex_triggers.sql @@ -92,7 +92,16 @@ BEGIN END IF; IF fallback THEN - IF ST_Area(bbox) < 0.005 THEN + IF addr_street is null and addr_place is not null THEN + -- The address is attached to a place we don't know. Find the + -- nearest place instead. + FOR location IN + SELECT place_id FROM getNearFeatures(poi_partition, bbox, 26, '{}'::INTEGER[]) + ORDER BY rank_address DESC, isguess asc, distance LIMIT 1 + LOOP + parent_place_id := location.place_id; + END LOOP; + ELSEIF ST_Area(bbox) < 0.005 THEN -- for smaller features get the nearest road SELECT getNearestRoadPlaceId(poi_partition, bbox) INTO parent_place_id; --DEBUG: RAISE WARNING 'Checked for nearest way (%)', parent_place_id; diff --git a/test/bdd/db/import/parenting.feature b/test/bdd/db/import/parenting.feature index 7974fe52..62d65cef 100644 --- a/test/bdd/db/import/parenting.feature +++ b/test/bdd/db/import/parenting.feature @@ -374,7 +374,7 @@ Feature: Parenting of objects | W1 | N4 | 3 | | N1 | W2 | None | | N2 | W3 | 4 | - | N3 | W2 | None | + | N3 | N4 | None | Scenario: POIs parent a road if they are attached to it Given the scene points-on-roads diff --git a/test/bdd/db/import/search_name.feature b/test/bdd/db/import/search_name.feature index 5514e7de..14cf3769 100644 --- a/test/bdd/db/import/search_name.feature +++ b/test/bdd/db/import/search_name.feature @@ -62,24 +62,32 @@ Feature: Creation of search terms | osm | class | type | housenr | addr+place | geometry | | N1 | place | house | 23 | Walltown | :p-N1 | And the places - | osm | class | type | name+name | geometry | - | W1 | highway | residential | Rose Street | :w-north | + | osm | class | type | name+name | geometry | + | W1 | highway | residential | Rose Street | :w-north | + | N2 | place | city | Strange Town | :p-N1 | When importing Then search_name contains | object | name_vector | nameaddress_vector | | N1 | #23 | Walltown | - When searching for "23 Rose Street, Walltown" - Then exactly 0 results are returned + When searching for "23 Rose Street" + Then exactly 1 results are returned + And results contain + | osm_type | osm_id | + | W | 1 | + When searching for "23 Walltown" + Then results contain + | osm_type | osm_id | + | N | 1 | - # XXX Need to change parenting of POis without addr:street and with addr:place Scenario: Unnamed POIs doesn't inherit parent name when addr:place is present only in parent address Given the scene roads-with-pois And the places | osm | class | type | housenr | addr+place | geometry | | N1 | place | house | 23 | Walltown | :p-N1 | And the places - | osm | class | type | name+name | addr+city | geometry | - | W1 | highway | residential | Rose Street | Walltown | :w-north | + | osm | class | type | name+name | addr+city | geometry | + | W1 | highway | residential | Rose Street | Walltown | :w-north | + | N2 | place | suburb | Strange Town | Walltown | :p-N1 | When importing Then search_name contains | object | name_vector | nameaddress_vector | @@ -89,6 +97,11 @@ Feature: Creation of search terms And results contain | osm_type | osm_id | | W | 1 | + When searching for "23 Walltown" + Then exactly 1 result is returned + And results contain + | osm_type | osm_id | + | N | 1 | Scenario: Unnamed POIs does inherit parent name when unknown addr:place and addr:street is present Given the scene roads-with-pois @@ -147,17 +160,19 @@ Feature: Creation of search terms | osm | class | type | name+name | addr+place | geometry | | N1 | place | house | Green Moss | Walltown | :p-N1 | And the places - | osm | class | type | name+name | geometry | - | W1 | highway | residential | Rose Street | :w-north | + | osm | class | type | name+name | geometry | + | W1 | highway | residential | Rose Street | :w-north | + | N2 | place | suburb | Strange Town | :p-N1 | When importing Then search_name contains | object | name_vector | nameaddress_vector | | N1 | #Green Moss | Walltown | When searching for "Green Moss, Rose Street, Walltown" - Then exactly 1 result is returned - And results contain + Then exactly 0 result is returned + When searching for "Green Moss, Walltown" + Then results contain | osm_type | osm_id | - | W | 1 | + | N | 1 | Scenario: Named POIs inherit address from parent Given the scene roads-with-pois diff --git a/test/bdd/db/update/parenting.feature b/test/bdd/db/update/parenting.feature index 50a647ad..99199de4 100644 --- a/test/bdd/db/update/parenting.feature +++ b/test/bdd/db/update/parenting.feature @@ -9,8 +9,8 @@ Scenario: POI inside building inherits addr:street change | N2 | shop | bakery | :n-edge-NS | | N3 | shop | supermarket| :n-edge-WE | And the places - | osm | class | type | addr_place | housenr | geometry | - | W1 | building | yes | nowhere | 3 | :w-building | + | osm | class | type | street | housenr | geometry | + | W1 | building | yes | nowhere | 3 | :w-building | And the places | osm | class | type | name | geometry | | W2 | highway | primary | bar | :w-WE | @@ -34,5 +34,3 @@ Scenario: POI inside building inherits addr:street change | N1 | W3 | 3 | | N2 | W3 | 3 | | N3 | W3 | 3 | - -