Tweak place ranks

This commit is contained in:
lukasmartinelli
2016-10-29 14:29:41 +02:00
parent 3f9f59dfe1
commit 52e133e126
7 changed files with 18 additions and 21 deletions

View File

@@ -6,22 +6,21 @@ WITH important_country_point AS (
WHERE
-- We only match whether the point is within the Natural Earth polygon
-- because name matching is to difficult since OSM does not contain good
-- enough coverage of ISO codes
-- enough coverage of ISO codesy
ST_Within(osm.geometry, ne.geom)
-- We leave out tiny countries
AND ne.scalerank <= 1
)
UPDATE osm_country_point AS osm
-- Normalize both scalerank and labelrank into a ranking system from 1 to 6
-- Scaleranks for NE countries range from 0 to 6 and labelranks range from 2 to 10.
-- This means a max combined rank of 16 divided by 3 to get us uniform ranking from 1 to 6
SET "rank" = CEILING((scalerank + labelrank)/3.0)
-- where the ranks are still distributed uniform enough across all countries
SET "rank" = LEAST(6, CEILING((scalerank + labelrank)/2.0))
FROM important_country_point AS ne
WHERE osm.osm_id = ne.osm_id;
UPDATE osm_country_point AS osm
SET "rank" = 6
WHERE "rank" < 0 OR "rank" > 6 OR "rank" IS NULL;
WHERE "rank" IS NULL;
ALTER TABLE osm_country_point ADD CONSTRAINT osm_country_point_rank_constraint CHECK("rank" BETWEEN 1 AND 6);
CREATE INDEX IF NOT EXISTS osm_country_point_rank_idx ON osm_country_point("rank");