X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/987d60ccdaa750defcd09ce64f19e3e049222802..36447c488a78017dc533f7ed42bc8cf20c72556d:/sql/functions/placex_triggers.sql diff --git a/sql/functions/placex_triggers.sql b/sql/functions/placex_triggers.sql index ea9474e4..6965fe14 100644 --- a/sql/functions/placex_triggers.sql +++ b/sql/functions/placex_triggers.sql @@ -97,7 +97,7 @@ BEGIN -- Instead simply use the containing area with the largest rank. FOR location IN SELECT place_id FROM placex - WHERE bbox @ geometry AND _ST_Covers(geometry, ST_Centroid(bbox)) + WHERE bbox && geometry AND _ST_Covers(geometry, ST_Centroid(bbox)) AND rank_address between 5 and 25 ORDER BY rank_address desc LOOP @@ -112,7 +112,7 @@ BEGIN -- contains the bbox, only use addressable features FOR location IN SELECT place_id FROM placex - WHERE bbox @ geometry AND _ST_Covers(geometry, ST_Centroid(bbox)) + WHERE bbox && geometry AND _ST_Covers(geometry, ST_Centroid(bbox)) AND rank_address between 5 and 25 ORDER BY rank_address desc LOOP @@ -919,6 +919,18 @@ BEGIN THEN PERFORM create_country(NEW.name, lower(NEW.country_code)); --DEBUG: RAISE WARNING 'Country names updated'; + + -- Also update the list of country names. Adding an additional sanity + -- check here: make sure the country does overlap with the area where + -- we expect it to be as per static country grid. + FOR location IN + SELECT country_code FROM country_osm_grid + WHERE ST_Covers(geometry, NEW.centroid) and country_code = NEW.country_code + LIMIT 1 + LOOP + --DEBUG: RAISE WARNING 'Updating names for country '%' with: %', NEW.country_code, NEW.name; + UPDATE country_name SET name = name || NEW.name WHERE country_code = NEW.country_code; + END LOOP; END IF; -- For linear features we need the full geometry for determining the address