Merge pull request #2685 from lonvia/show-inherited-housenumber

Keep address parts inherited from surrounding buildings after indexing
This commit is contained in:
Sarah Hoffmann
2022-04-29 12:15:33 +02:00
committed by GitHub
2 changed files with 34 additions and 36 deletions

View File

@@ -28,11 +28,14 @@ DECLARE
result prepare_update_info; result prepare_update_info;
extra_names HSTORE; extra_names HSTORE;
BEGIN BEGIN
IF not p.address ? '_inherited' THEN
result.address := p.address;
END IF;
-- For POI nodes, check if the address should be derived from a surrounding -- For POI nodes, check if the address should be derived from a surrounding
-- building. -- building.
IF p.rank_search < 30 OR p.osm_type != 'N' THEN IF p.rank_search = 30 AND p.osm_type = 'N' THEN
result.address := p.address; IF p.address is null THEN
ELSEIF p.address is null THEN
-- The additional && condition works around the misguided query -- The additional && condition works around the misguided query
-- planner of postgis 3.0. -- planner of postgis 3.0.
SELECT placex.address || hstore('_inherited', '') INTO result.address SELECT placex.address || hstore('_inherited', '') INTO result.address
@@ -44,7 +47,6 @@ BEGIN
and rank_search = 30 AND ST_GeometryType(geometry) in ('ST_Polygon','ST_MultiPolygon') and rank_search = 30 AND ST_GeometryType(geometry) in ('ST_Polygon','ST_MultiPolygon')
LIMIT 1; LIMIT 1;
ELSE ELSE
result.address := p.address;
-- See if we can inherit addtional address tags from an interpolation. -- See if we can inherit addtional address tags from an interpolation.
-- These will become permanent. -- These will become permanent.
FOR location IN FOR location IN
@@ -58,6 +60,7 @@ BEGIN
result.address := location.address || result.address; result.address := location.address || result.address;
END LOOP; END LOOP;
END IF; END IF;
END IF;
-- remove internal and derived names -- remove internal and derived names
result.address := result.address - '_unlisted_place'::TEXT; result.address := result.address - '_unlisted_place'::TEXT;
@@ -984,15 +987,6 @@ BEGIN
{% endif %} {% endif %}
NEW.token_info := token_strip_info(NEW.token_info); NEW.token_info := token_strip_info(NEW.token_info);
-- If the address was inherited from a surrounding building,
-- do not add it permanently to the table.
IF NEW.address ? '_inherited' THEN
IF NEW.address ? '_unlisted_place' THEN
NEW.address := hstore('_unlisted_place', NEW.address->'_unlisted_place');
ELSE
NEW.address := null;
END IF;
END IF;
RETURN NEW; RETURN NEW;
END IF; END IF;

View File

@@ -376,6 +376,10 @@ Feature: Parenting of objects
| N1 | W3 | 3 | | N1 | W3 | 3 |
| N2 | W3 | 3 | | N2 | W3 | 3 |
| N3 | W3 | 3 | | N3 | W3 | 3 |
When sending geocodejson search query "3, foo" with address
Then results contain
| housenumber |
| 3 |
Scenario: POIs don't inherit from streets Scenario: POIs don't inherit from streets
Given the scene building-on-street-corner Given the scene building-on-street-corner