+
+ -- 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
+ -- because they may go through several administrative entities. Otherwise use
+ -- the centroid for performance reasons.
+ IF ST_GeometryType(NEW.geometry) in ('ST_LineString', 'ST_MultiLineString') THEN
+ geom := NEW.geometry;
+ ELSE
+ geom := NEW.centroid;
+ END IF;
+
+ IF NEW.rank_address = 0 THEN
+ max_rank := geometry_to_rank(NEW.rank_search, NEW.geometry, NEW.country_code);
+ -- Rank 0 features may also span multiple administrative areas (e.g. lakes)
+ -- so use the geometry here too. Just make sure the areas don't become too
+ -- large.
+ IF NEW.class = 'natural' or max_rank > 10 THEN
+ geom := NEW.geometry;
+ END IF;
+ ELSEIF NEW.rank_address > 25 THEN
+ max_rank := 25;
+ ELSE
+ max_rank = NEW.rank_address;