Adds geocode_namedplace_country from db

This commit is contained in:
Carla
2015-06-24 17:29:17 +02:00
parent c8bec1eee0
commit b6fd348c5b

View File

@@ -294,3 +294,31 @@ AS $function$
RETURN;
END
$function$
-- geocode_namedplace_country --
CREATE OR REPLACE FUNCTION public.geocode_namedplace_country(places text[], country text[])
RETURNS SETOF geocode_namedplace_country_v1
LANGUAGE plpgsql
IMMUTABLE SECURITY DEFINER
AS $function$
DECLARE
ret geocode_namedplace_country_v1%rowtype;
iso TEXT[];
i INT;
fails INT[];
BEGIN
SELECT array_agg((SELECT iso2 FROM country_decoder WHERE lower(r.c) = ANY (synonyms))) i FROM (SELECT unnest(country)::text AS c) r INTO iso;
FOR i IN 1 .. array_upper(places, 1) LOOP
SELECT q, c, (SELECT gp.the_geom AS geom FROM global_cities_points gp WHERE gp.lowername = lower(x.q) AND gp.iso2 = x.i ORDER BY population DESC LIMIT 1), TRUE as success FROM (SELECT unnest(places) q, unnest(iso) i, unnest(country) c) x INTO ret;
IF ret.geom IS NOT NULL THEN
RETURN NEXT ret;
ELSE
fails := array_append(fails, i);
END IF;
END LOOP;
RETURN;
END
$function$