forked from hans/Nominatim
Merge pull request #2685 from lonvia/show-inherited-housenumber
Keep address parts inherited from surrounding buildings after indexing
This commit is contained in:
@@ -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;
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user