]> granicus.if.org Git - postgis/commitdiff
change to use some elements from parse_address
authorRegina Obe <lr@pcorp.us>
Fri, 5 Apr 2013 14:37:43 +0000 (14:37 +0000)
committerRegina Obe <lr@pcorp.us>
Fri, 5 Apr 2013 14:37:43 +0000 (14:37 +0000)
git-svn-id: http://svn.osgeo.org/postgis/trunk@11255 b70326c6-7e19-0410-871a-916f4a2858ee

extras/tiger_geocoder/tiger_2011/pagc_normalize/pagc_normalize_address.sql

index 541187b3fe4a5092b7f632a8999e96c4d75aa68a..b2ac33e419d90c2f91827195fe6b02e1fb41cc8f 100644 (file)
@@ -12,7 +12,8 @@ CREATE OR REPLACE FUNCTION pagc_normalize_address(in_rawinput character varying)
 $$\r
 DECLARE\r
   result norm_addy;\r
-  rec RECORD;\r
+  var_rec RECORD;\r
+  var_parse_rec RECORD;\r
   rawInput VARCHAR;\r
 \r
 BEGIN\r
@@ -20,25 +21,28 @@ BEGIN
   result.parsed := FALSE;\r
 \r
   rawInput := trim(in_rawinput);\r
+  var_parse_rec := parse_address(rawInput);\r
+  result.location := var_parse_rec.city;\r
+  result.stateAbbrev := trim(var_parse_rec.state);\r
+  result.zip := var_parse_rec.zip;\r
 \r
-  rec := (SELECT standardize_address( 'select seq, word::text, stdword::text, token from tiger.pagc_gaz union all select seq, word::text, stdword::text, token from tiger.pagc_lex '\r
+  var_rec := (SELECT standardize_address( 'select seq, word::text, stdword::text, token from tiger.pagc_gaz union all select seq, word::text, stdword::text, token from tiger.pagc_lex '\r
        , 'select seq, word::text, stdword::text, token from tiger.pagc_gaz order by id'\r
        , 'select * from tiger.pagc_rules order by id'\r
-, 'select 0::int4 as id, ' || quote_literal(COALESCE(address1,'')) || '::text As micro, \r
-   ' || quote_literal(COALESCE(city || ', ','') || COALESCE(state || ' ', '') || COALESCE(zip,'')) || '::text As macro') As pagc_addr\r
- FROM  (SELECT * FROM parse_address(rawInput) ) As a ) ;\r
+, 'select 0::int4 as id, ' || quote_literal(COALESCE(var_parse_rec.address1,'')) || '::text As micro, \r
+   ' || quote_literal(COALESCE(var_parse_rec.city || ', ','') || COALESCE(var_parse_rec.state || ' ', '') || COALESCE(var_parse_rec.zip,'')) || '::text As macro') As pagc_addr ) ;\r
  -- For address number only put numbers and stop if reach a non-number e.g. 123-456 will return 123\r
-  result.address := to_number(substring(rec.house_num, '[0-9]+'), '99999999999');\r
+  result.address := to_number(substring(var_rec.house_num, '[0-9]+'), '99999999999');\r
    --get rid of extraneous spaces before we return\r
-  result.zip := rec.postcode;\r
-  result.streetName := trim(rec.name);\r
-  result.location := trim(rec.city);\r
-  result.stateAbbrev := trim(rec.state);\r
+  --result.zip := var_rec.postcode;\r
+  result.streetName := trim(var_rec.name);\r
+  --result.location := trim(var_rec.city);\r
+  --result.stateAbbrev := trim(rec.state);\r
   --this should be broken out separately like pagc, but normalizer doesn't have a slot for it\r
-  result.streettypeAbbrev := trim(COALESCE(rec.suftype, rec.pretype)); \r
-  result.preDirAbbrev := trim(rec.predir);\r
-  result.postDirAbbrev := trim(rec.sufdir);\r
-  result.internal := trim(rec.unit);\r
+  result.streettypeAbbrev := trim(COALESCE(var_rec.suftype, var_rec.pretype)); \r
+  result.preDirAbbrev := trim(var_rec.predir);\r
+  result.postDirAbbrev := trim(var_rec.sufdir);\r
+  result.internal := trim(var_rec.unit);\r
   result.parsed := TRUE;\r
   RETURN result;\r
 END\r