-- 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
-- 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
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