added CAN filter to postal code poly geocoder

This commit is contained in:
andrewxhill
2014-09-04 10:23:29 -04:00
parent 005fecee19
commit 2eefa8cfd5
2 changed files with 8 additions and 6 deletions

View File

@@ -4,7 +4,11 @@ CREATE OR REPLACE FUNCTION geocode_postalcode_polygons(code text[], inputcountri
RETURNS SETOF geocode_namedplace_country_v1 AS $$
DECLARE
ret geocode_namedplace_country_v1%rowtype;
adm text[];
BEGIN
SELECT INTO adm array_agg((SELECT adm0_a3 FROM admin0_synonyms WHERE name_ = lower(regexp_replace(b.c, '[^a-zA-Z\u00C0-\u00ff]+', '', 'g'))::text LIMIT 1)) FROM (SELECT UNNEST(inputcountries) c) b;
FOR ret IN
SELECT
q, c, geom, CASE WHEN geom IS NULL THEN FALSE ELSE TRUE END AS success
@@ -13,12 +17,10 @@ CREATE OR REPLACE FUNCTION geocode_postalcode_polygons(code text[], inputcountri
q, c, (
SELECT the_geom
FROM postal_code_polygons
WHERE postal_code = upper(d.q)
AND adm0_a3 = (
SELECT adm0_a3 FROM admin0_synonyms WHERE name_ = lower(regexp_replace(d.c, '[^a-zA-Z\u00C0-\u00ff]+', '', 'g'))::text LIMIT 1
)
WHERE postal_code = CASE WHEN a = 'CAN' THEN substring(upper(d.q) from 1 for 3) ELSE upper(d.q) END
AND adm0_a3 = a
) geom
FROM (SELECT unnest(code) q, unnest(inputcountries) c) d
FROM (SELECT unnest(code) q, unnest(inputcountries) c, unnest(adm) a) d
) v
LOOP
RETURN NEXT ret;