[postgis-commits] svn - r3860 - in trunk/extras/tiger_geocoder: geocode normalize tables

postgis-commits at postgis.refractions.net postgis-commits at postgis.refractions.net
Thu Mar 12 16:20:27 PDT 2009


Author: robe
Date: 2009-03-12 16:20:26 -0700 (Thu, 12 Mar 2009)
New Revision: 3860

Modified:
   trunk/extras/tiger_geocoder/geocode/geocode_address_countysub_exact.sql
   trunk/extras/tiger_geocoder/geocode/geocode_address_countysub_fuzzy.sql
   trunk/extras/tiger_geocoder/geocode/geocode_address_place_exact.sql
   trunk/extras/tiger_geocoder/geocode/geocode_address_place_fuzzy.sql
   trunk/extras/tiger_geocoder/geocode/geocode_address_state.sql
   trunk/extras/tiger_geocoder/geocode/geocode_address_zip.sql
   trunk/extras/tiger_geocoder/geocode/geocode_location.sql
   trunk/extras/tiger_geocoder/geocode/geocode_zip.sql
   trunk/extras/tiger_geocoder/normalize/pprint_addy.sql
   trunk/extras/tiger_geocoder/tables/lookup_tables.sql
Log:
#HISTORY #GBT 121: update tiger_geocoder to run in PostgreSQL 8.3 - apply patch from cdwinslow

Modified: trunk/extras/tiger_geocoder/geocode/geocode_address_countysub_exact.sql
===================================================================
--- trunk/extras/tiger_geocoder/geocode/geocode_address_countysub_exact.sql	2009-03-12 19:03:49 UTC (rev 3859)
+++ trunk/extras/tiger_geocoder/geocode/geocode_address_countysub_exact.sql	2009-03-12 23:20:26 UTC (rev 3860)
@@ -6,7 +6,7 @@
 DECLARE
   result REFCURSOR;
   tempString VARCHAR;
-  tempInt VARCHAR;
+  tempInt INTEGER;
 BEGIN
   IF parsed.location IS NULL THEN
     -- location is manditory.  This is the location geocoder after all.

Modified: trunk/extras/tiger_geocoder/geocode/geocode_address_countysub_fuzzy.sql
===================================================================
--- trunk/extras/tiger_geocoder/geocode/geocode_address_countysub_fuzzy.sql	2009-03-12 19:03:49 UTC (rev 3859)
+++ trunk/extras/tiger_geocoder/geocode/geocode_address_countysub_fuzzy.sql	2009-03-12 23:20:26 UTC (rev 3860)
@@ -6,7 +6,7 @@
 DECLARE
   result REFCURSOR;
   tempString VARCHAR;
-  tempInt VARCHAR;
+  tempInt INTEGER;
 BEGIN
   -- The first step is to determine what weve been given, and if its enough.
   IF parsed.location IS NULL THEN

Modified: trunk/extras/tiger_geocoder/geocode/geocode_address_place_exact.sql
===================================================================
--- trunk/extras/tiger_geocoder/geocode/geocode_address_place_exact.sql	2009-03-12 19:03:49 UTC (rev 3859)
+++ trunk/extras/tiger_geocoder/geocode/geocode_address_place_exact.sql	2009-03-12 23:20:26 UTC (rev 3860)
@@ -6,7 +6,7 @@
 DECLARE
   result REFCURSOR;
   tempString VARCHAR;
-  tempInt VARCHAR;
+  tempInt INTEGER;
 BEGIN
   -- Check to see if the road name can be matched.
   IF parsed.stateAbbrev IS NOT NULL THEN

Modified: trunk/extras/tiger_geocoder/geocode/geocode_address_place_fuzzy.sql
===================================================================
--- trunk/extras/tiger_geocoder/geocode/geocode_address_place_fuzzy.sql	2009-03-12 19:03:49 UTC (rev 3859)
+++ trunk/extras/tiger_geocoder/geocode/geocode_address_place_fuzzy.sql	2009-03-12 23:20:26 UTC (rev 3860)
@@ -5,7 +5,7 @@
 AS $_$
 DECLARE
   tempString VARCHAR;
-  tempInt VARCHAR;
+  tempInt INTEGER;
 BEGIN
   -- Check to see if the road name can be matched.
   IF parsed.stateAbbrev IS NOT NULL THEN

Modified: trunk/extras/tiger_geocoder/geocode/geocode_address_state.sql
===================================================================
--- trunk/extras/tiger_geocoder/geocode/geocode_address_state.sql	2009-03-12 19:03:49 UTC (rev 3859)
+++ trunk/extras/tiger_geocoder/geocode/geocode_address_state.sql	2009-03-12 23:20:26 UTC (rev 3860)
@@ -4,7 +4,7 @@
 ) RETURNS REFCURSOR
 AS $_$
 DECLARE
-  tempInt VARCHAR;
+  tempInt INTEGER;
 BEGIN
   -- Check to see if the road name can be matched.
   SELECT INTO tempInt count(*) FROM tiger_geocode_roads

Modified: trunk/extras/tiger_geocoder/geocode/geocode_address_zip.sql
===================================================================
--- trunk/extras/tiger_geocoder/geocode/geocode_address_zip.sql	2009-03-12 19:03:49 UTC (rev 3859)
+++ trunk/extras/tiger_geocoder/geocode/geocode_address_zip.sql	2009-03-12 23:20:26 UTC (rev 3860)
@@ -1,81 +1,81 @@
 CREATE OR REPLACE FUNCTION geocode_address_zip(
-    result REFCURSOR,
-    parsed NORM_ADDY
+	result REFCURSOR,
+	parsed NORM_ADDY
 ) RETURNS REFCURSOR
 AS $_$
 DECLARE
   tempString VARCHAR;
-  tempInt VARCHAR;
+  tempInt INTEGER;
 BEGIN
   -- Check to see if the road name can be matched.
   SELECT INTO tempInt count(*) FROM tiger_geocode_roads
-      WHERE parsed.zip = tiger_geocode_roads.zip
-      AND soundex(parsed.streetName) = soundex(tiger_geocode_roads.fename);
+	  WHERE parsed.zip = tiger_geocode_roads.zip
+	  AND soundex(parsed.streetName) = soundex(tiger_geocode_roads.fename);
 
   IF tempInt = 0 THEN
-    RETURN NULL;
+	RETURN NULL;
   END IF;
 
   -- The road name matches, now we check to see if the addresses match
   SELECT INTO tempInt count(*)
   FROM (
-    SELECT *, rate_attributes(parsed.preDirAbbrev, tiger_geocode_roads.fedirp,
-      parsed.streetName, tiger_geocode_roads.fename, parsed.streetTypeAbbrev,
-      tiger_geocode_roads.fetype, parsed.postDirAbbrev,
-      tiger_geocode_roads.fedirs) as rating
-    FROM tiger_geocode_roads
-    WHERE parsed.zip = tiger_geocode_roads.zip
-      AND soundex(parsed.streetName) = soundex(tiger_geocode_roads.fename)
-      ) AS subquery, roads_local
+	SELECT *, rate_attributes(parsed.preDirAbbrev, tiger_geocode_roads.fedirp,
+	  parsed.streetName, tiger_geocode_roads.fename, parsed.streetTypeAbbrev,
+	  tiger_geocode_roads.fetype, parsed.postDirAbbrev,
+	  tiger_geocode_roads.fedirs) as rating
+	FROM tiger_geocode_roads
+	WHERE parsed.zip = tiger_geocode_roads.zip
+	  AND soundex(parsed.streetName) = soundex(tiger_geocode_roads.fename)
+	  ) AS subquery, roads_local
   WHERE includes_address(parsed.address, roads_local.fraddl, roads_local.toaddl,
-      roads_local.fraddr, roads_local.toaddr)
-    AND subquery.tlid = roads_local.tlid;
+	  roads_local.fraddr, roads_local.toaddr)
+	AND subquery.tlid = roads_local.tlid;
 
   IF tempInt = 0 THEN
-    RETURN NULL;
+	RETURN NULL;
   END IF;
 
   OPEN result FOR
   SELECT
-      roads_local.fedirp as fedirp,
-      roads_local.fename as fename,
-      roads_local.fetype as fetype,
-      roads_local.fedirs as fedirs,
-      CASE WHEN (parsed.address % 2) = roads_local.fraddl
-        OR (parsed.address % 2) = roads_local.toaddl
-        THEN coalesce(pl.name,zipl.city,csl.name,col.name) ELSE coalesce(pr.name,zipr.city,csr.name,cor.name) END as place,
-      CASE WHEN (parsed.address % 2) = roads_local.fraddl
-        OR (parsed.address % 2) = roads_local.toaddl
-        THEN sl.abbrev ELSE sr.abbrev END as state,
-      CASE WHEN (parsed.address % 2) = roads_local.fraddl
-        OR (parsed.address % 2) = roads_local.toaddl
-        THEN zipl ELSE zipr END as zip,
-      interpolate_from_address(parsed.address, roads_local.fraddl,
-          roads_local.toaddl, roads_local.fraddr, roads_local.toaddr,
-          roads_local.geom) as address_geom,
-      subquery.rating as rating
+	  roads_local.fedirp as fedirp,
+	  roads_local.fename as fename,
+	  roads_local.fetype as fetype,
+	  roads_local.fedirs as fedirs,
+	  CASE WHEN (parsed.address % 2) = roads_local.fraddl
+		OR (parsed.address % 2) = roads_local.toaddl
+		THEN coalesce(pl.name,zipl.city,csl.name,col.name) ELSE coalesce(pr.name,zipr.city,csr.name,cor.name) END as place,
+	  CASE WHEN (parsed.address % 2) = roads_local.fraddl
+		OR (parsed.address % 2) = roads_local.toaddl
+		THEN sl.abbrev ELSE sr.abbrev END as state,
+	  CASE WHEN (parsed.address % 2) = roads_local.fraddl
+		OR (parsed.address % 2) = roads_local.toaddl
+		THEN zipl ELSE zipr END as zip,
+	  interpolate_from_address(parsed.address, roads_local.fraddl,
+		  roads_local.toaddl, roads_local.fraddr, roads_local.toaddr,
+		  roads_local.geom) as address_geom,
+	  subquery.rating as rating
   FROM (
-    SELECT *, rate_attributes(parsed.preDirAbbrev, tiger_geocode_roads.fedirp,
-      parsed.streetName, tiger_geocode_roads.fename, parsed.streetTypeAbbrev,
-      tiger_geocode_roads.fetype, parsed.postDirAbbrev,
-      tiger_geocode_roads.fedirs) as rating
-    FROM tiger_geocode_roads
-    WHERE parsed.zip = tiger_geocode_roads.zip
-      AND soundex(parsed.streetName) = soundex(tiger_geocode_roads.fename)
-      ) AS subquery
-    JOIN roads_local ON (subquery.tlid = roads_local.tlid)
-    JOIN state_lookup sl ON (roads_local.statel = sl.st_code)
-    JOIN state_lookup sr ON (roads_local.stater = sr.st_code)
-    LEFT JOIN place_lookup pl ON (roads_local.statel = pl.st_code AND roads_local.placel = pl.pl_code)
-    LEFT JOIN place_lookup pr ON (roads_local.stater = pr.st_code AND roads_local.placer = pr.pl_code)
-    LEFT JOIN county_lookup col ON (roads_local.statel = col.st_code AND roads_local.countyl = col.co_code)
-    LEFT JOIN county_lookup cor ON (roads_local.stater = cor.st_code AND roads_local.countyr = cor.co_code)
-    LEFT JOIN countysub_lookup csl ON (roads_local.statel = csl.st_code AND roads_local.countyl = csl.co_code AND roads_local.cousubl = csl.cs_code)
-    LEFT JOIN countysub_lookup csr ON (roads_local.stater = csr.st_code AND roads_local.countyr = csr.co_code AND roads_local.cousubr = csr.cs_code)
-    LEFT JOIN zip_lookup_base zipl ON (roads_local.zipl = zipl.zip)
-    LEFT JOIN zip_lookup_base zipr ON (roads_local.zipr = zipr.zip)
+	SELECT *, rate_attributes(parsed.preDirAbbrev, tiger_geocode_roads.fedirp,
+	  parsed.streetName, tiger_geocode_roads.fename, parsed.streetTypeAbbrev,
+	  tiger_geocode_roads.fetype, parsed.postDirAbbrev,
+	  tiger_geocode_roads.fedirs) as rating
+	FROM tiger_geocode_roads
+	WHERE parsed.zip = tiger_geocode_roads.zip
+	  AND soundex(parsed.streetName) = soundex(tiger_geocode_roads.fename)
+	  ) AS subquery
+	JOIN roads_local ON (subquery.tlid = roads_local.tlid)
+	JOIN state_lookup sl ON (roads_local.statel = sl.st_code)
+	JOIN state_lookup sr ON (roads_local.stater = sr.st_code)
+	LEFT JOIN place_lookup pl ON (roads_local.statel = pl.st_code AND roads_local.placel = pl.pl_code)
+	LEFT JOIN place_lookup pr ON (roads_local.stater = pr.st_code AND roads_local.placer = pr.pl_code)
+	LEFT JOIN county_lookup col ON (roads_local.statel = col.st_code AND roads_local.countyl = col.co_code)
+	LEFT JOIN county_lookup cor ON (roads_local.stater = cor.st_code AND roads_local.countyr = cor.co_code)
+	LEFT JOIN countysub_lookup csl ON (roads_local.statel = csl.st_code AND roads_local.countyl = csl.co_code AND roads_local.cousubl = csl.cs_code)
+	LEFT JOIN countysub_lookup csr ON (roads_local.stater = csr.st_code AND roads_local.countyr = csr.co_code AND roads_local.cousubr = csr.cs_code)
+	LEFT JOIN zip_lookup_base zipl ON (roads_local.zipl = zipl.zip)
+	LEFT JOIN zip_lookup_base zipr ON (roads_local.zipr = zipr.zip)
   WHERE includes_address(parsed.address, roads_local.fraddl, roads_local.toaddl,
-      roads_local.fraddr, roads_local.toaddr)
+	  roads_local.fraddr, roads_local.toaddr)
   ORDER BY subquery.rating;
 
   RETURN result;

Modified: trunk/extras/tiger_geocoder/geocode/geocode_location.sql
===================================================================
--- trunk/extras/tiger_geocoder/geocode/geocode_location.sql	2009-03-12 19:03:49 UTC (rev 3859)
+++ trunk/extras/tiger_geocoder/geocode/geocode_location.sql	2009-03-12 23:20:26 UTC (rev 3860)
@@ -5,13 +5,13 @@
 DECLARE
   result REFCURSOR;
   tempString VARCHAR;
-  tempInt VARCHAR;
+  tempInt INTEGER;
 BEGIN
   -- Try to match the city/state to a zipcode first
   SELECT INTO tempInt count(*)
     FROM zip_lookup_base zip
     JOIN state_lookup sl ON (zip.state = sl.name)
-    JOIN zt99_d00 zl ON (lpad(zip.zip,5,'0') = zl.zcta)
+    JOIN zt99_d00 zl ON (zip.zip = zl.zcta::integer)
     WHERE soundex(zip.city) = soundex(parsed.location) and sl.abbrev = parsed.stateAbbrev;
 
   -- If that worked, just use the zipcode lookup
@@ -30,7 +30,7 @@
     FROM
       zip_lookup_base zip
       JOIN state_lookup sl on (zip.state = sl.name)
-      JOIN zt99_d00 zl ON (lpad(zip.zip,5,'0') = zl.zcta)
+      JOIN zt99_d00 zl ON (zip.zip = zl.zcta::integer)
     WHERE
       soundex(zip.city) = soundex(parsed.location) and sl.abbrev = parsed.stateAbbrev;
 
@@ -40,7 +40,7 @@
   -- Try to match the city/state to a place next
   SELECT INTO tempInt count(*)
     FROM pl99_d00 pl
-    JOIN state_lookup sl ON (pl.state = lpad(sl.st_code,2,'0'))
+    JOIN state_lookup sl ON (pl.state::integer = sl.st_code)
     WHERE soundex(pl.name) = soundex(parsed.location) and sl.abbrev = parsed.stateAbbrev;
 
   -- If that worked then use it
@@ -57,7 +57,7 @@
         centroid(wkb_geometry) as address_geom,
         100::integer + levenshtein_ignore_case(coalesce(zip.city), parsed.location) as rating
     FROM pl99_d00 pl
-    JOIN state_lookup sl ON (pl.state = lpad(sl.st_code,2,'0'))
+    JOIN state_lookup sl ON (pl.state::integer = sl.st_code)
     WHERE soundex(pl.name) = soundex(parsed.location) and sl.abbrev = parsed.stateAbbrev;
 
     RETURN result;

Modified: trunk/extras/tiger_geocoder/geocode/geocode_zip.sql
===================================================================
--- trunk/extras/tiger_geocoder/geocode/geocode_zip.sql	2009-03-12 19:03:49 UTC (rev 3859)
+++ trunk/extras/tiger_geocoder/geocode/geocode_zip.sql	2009-03-12 23:20:26 UTC (rev 3860)
@@ -5,13 +5,13 @@
 DECLARE
   result REFCURSOR;
   tempString VARCHAR;
-  tempInt VARCHAR;
+  tempInt INTEGER;
 BEGIN
   -- Check to see if the road name can be matched.
   SELECT INTO tempInt count(*)
     FROM zip_lookup_base zip
     JOIN state_lookup sl on (zip.state = sl.name)
-    JOIN zt99_d00 zl ON (lpad(zip.zip,5,'0') = zl.zcta)
+    JOIN zt99_d00 zl ON (zip.zip = zl.zcta::integer)
     WHERE zip = parsed.zip;
 
   IF tempInt = 0 THEN
@@ -32,7 +32,7 @@
   FROM
     zip_lookup_base zip
     JOIN state_lookup sl on (zip.state = sl.name)
-    JOIN zt99_d00 zl ON (lpad(zip.zip,5,'0') = zl.zcta)
+    JOIN zt99_d00 zl ON (zip.zip = zl.zcta::integer)
   WHERE
     zip.zip = parsed.zip;
 

Modified: trunk/extras/tiger_geocoder/normalize/pprint_addy.sql
===================================================================
--- trunk/extras/tiger_geocoder/normalize/pprint_addy.sql	2009-03-12 19:03:49 UTC (rev 3859)
+++ trunk/extras/tiger_geocoder/normalize/pprint_addy.sql	2009-03-12 23:20:26 UTC (rev 3860)
@@ -28,7 +28,7 @@
          || CASE WHEN input.location IS NOT NULL THEN ', ' ELSE '' END
          || cull_null(input.stateAbbrev)
          || CASE WHEN input.stateAbbrev IS NOT NULL THEN ' ' ELSE '' END
-         || cull_null(lpad(input.zip,5,'0'));
+         || cull_null(lpad(input.zip::text,5,'0'));
 
   RETURN result;
 

Modified: trunk/extras/tiger_geocoder/tables/lookup_tables.sql
===================================================================
--- trunk/extras/tiger_geocoder/tables/lookup_tables.sql	2009-03-12 19:03:49 UTC (rev 3859)
+++ trunk/extras/tiger_geocoder/tables/lookup_tables.sql	2009-03-12 23:20:26 UTC (rev 3860)
@@ -727,7 +727,7 @@
     pl.name             as name
   FROM
     pl99_d00 pl
-    JOIN state_lookup sl ON (pl.state = lpad(sl.st_code,2,'0'))
+    JOIN state_lookup sl ON (pl.state::integer = sl.st_code)
   GROUP BY pl.state, sl.abbrev, pl.placefp, pl.name;
 
 CREATE INDEX place_lookup_name_idx ON place_lookup (soundex(name));
@@ -750,7 +750,7 @@
     co.name              as name
   FROM
     co99_d00 co
-    JOIN state_lookup sl ON (co.state = lpad(sl.st_code,2,'0'))
+    JOIN state_lookup sl ON (co.state::integer = sl.st_code)
   GROUP BY co.state, sl.abbrev, co.county, co.name;
 
 CREATE INDEX county_lookup_name_idx ON county_lookup (soundex(name));
@@ -777,8 +777,8 @@
     cs.name              as name
   FROM
     cs99_d00 cs
-    JOIN state_lookup sl ON (cs.state = lpad(sl.st_code,2,'0'))
-    JOIN county_lookup cl ON (cs.state = lpad(cl.st_code,2,'0') AND cs.county = cl.co_code)
+    JOIN state_lookup sl ON (cs.state::integer = sl.st_code)
+    JOIN county_lookup cl ON (cs.state::integer = cl.st_code AND cs.county::integer = cl.co_code)
   GROUP BY cs.state, sl.abbrev, cs.county, cl.name, cs.cousubfp, cs.name;
 
 CREATE INDEX countysub_lookup_name_idx ON countysub_lookup (soundex(name));
@@ -814,10 +814,10 @@
     pl.name              as place
   FROM
     roads_local rl
-    JOIN state_lookup sl ON (rl.statel = lpad(sl.st_code,2,'0'))
-    LEFT JOIN county_lookup cl ON (rl.statel = lpad(cl.st_code,2,'0') AND rl.countyl = cl.co_code)
-    LEFT JOIN countysub_lookup cs ON (rl.statel = lpad(cs.st_code,2,'0') AND rl.countyl = cs.co_code AND rl.cousubl = cs.cs_code)
-    LEFT JOIN place_lookup pl ON (rl.statel = lpad(pl.st_code,2,'0') AND rl.placel = pl.pl_code)
+    JOIN state_lookup sl ON (rl.statel::integer = sl.st_code)
+    LEFT JOIN county_lookup cl ON (rl.statel::integer = cl.st_code AND rl.countyl::integer = cl.co_code)
+    LEFT JOIN countysub_lookup cs ON (rl.statel::integer = cs.st_code AND rl.countyl::integer = cs.co_code AND rl.cousubl = cs.cs_code)
+    LEFT JOIN place_lookup pl ON (rl.statel::integer = pl.st_code AND rl.placel::integer = pl.pl_code)
   WHERE zipl IS NOT NULL
   UNION ALL
   SELECT
@@ -832,10 +832,10 @@
     pl.name              as place
   FROM
     roads_local rl
-    JOIN state_lookup sl ON (rl.stater = lpad(sl.st_code,2,'0'))
-    LEFT JOIN county_lookup cl ON (rl.stater = lpad(cl.st_code,2,'0') AND rl.countyr = cl.co_code)
-    LEFT JOIN countysub_lookup cs ON (rl.stater = lpad(cs.st_code,2,'0') AND rl.countyr = cs.co_code AND rl.cousubr = cs.cs_code)
-    LEFT JOIN place_lookup pl ON (rl.stater = lpad(pl.st_code,2,'0') AND rl.placer = pl.pl_code)
+    JOIN state_lookup sl ON (rl.stater = sl.st_code)
+    LEFT JOIN county_lookup cl ON (rl.stater = cl.st_code AND rl.countyr = cl.co_code)
+    LEFT JOIN countysub_lookup cs ON (rl.stater = cs.st_code AND rl.countyr = cs.co_code AND rl.cousubr = cs.cs_code)
+    LEFT JOIN place_lookup pl ON (rl.stater = pl.st_code AND rl.placer = pl.pl_code)
   WHERE zipr IS NOT NULL
   ) as subquery
   GROUP BY zip, st_code, state, co_code, county, cs_code, countysub, pl_code, place;



More information about the postgis-commits mailing list