mirror of
https://github.com/osm-search/Nominatim.git
synced 2024-12-25 22:12:45 +03:00
use closest containing place for unlisted addr:place
We can't use getNearFeatures() to determine the parent of a place with an unlisted addr:place because this function returns place nodes that are potentially outside the area of interest. Doing the complete address computation is too expensive, so simply use the area with the largest rank that contains the feature instead.
This commit is contained in:
parent
cf23e10382
commit
e552f6bce5
@ -93,13 +93,15 @@ BEGIN
|
|||||||
|
|
||||||
IF fallback THEN
|
IF fallback THEN
|
||||||
IF addr_street is null and addr_place is not null 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
|
-- The address is attached to a place we don't know.
|
||||||
-- nearest place instead.
|
-- Instead simply use the containing area with the largest rank.
|
||||||
FOR location IN
|
FOR location IN
|
||||||
SELECT place_id FROM getNearFeatures(poi_partition, bbox, 26, '{}'::INTEGER[])
|
SELECT place_id FROM placex
|
||||||
ORDER BY rank_address DESC, isguess asc, distance LIMIT 1
|
WHERE bbox @ geometry AND _ST_Covers(geometry, ST_Centroid(bbox))
|
||||||
|
AND rank_address between 5 and 25
|
||||||
|
ORDER BY rank_address desc
|
||||||
LOOP
|
LOOP
|
||||||
parent_place_id := location.place_id;
|
RETURN location.place_id;
|
||||||
END LOOP;
|
END LOOP;
|
||||||
ELSEIF ST_Area(bbox) < 0.005 THEN
|
ELSEIF ST_Area(bbox) < 0.005 THEN
|
||||||
-- for smaller features get the nearest road
|
-- for smaller features get the nearest road
|
||||||
|
Loading…
Reference in New Issue
Block a user