]> granicus.if.org Git - postgis/commitdiff
#1843 - logic to add the new settings table, a get and set function, and changed...
authorRegina Obe <lr@pcorp.us>
Sun, 27 May 2012 18:28:48 +0000 (18:28 +0000)
committerRegina Obe <lr@pcorp.us>
Sun, 27 May 2012 18:28:48 +0000 (18:28 +0000)
git-svn-id: http://svn.osgeo.org/postgis/trunk@9823 b70326c6-7e19-0410-871a-916f4a2858ee

extras/tiger_geocoder/tiger_2011/create_geocode.sql
extras/tiger_geocoder/tiger_2011/geocode/geocode_address.sql
extras/tiger_geocoder/tiger_2011/geocode/geocode_intersection.sql
extras/tiger_geocoder/tiger_2011/geocode/reverse_geocode.sql
extras/tiger_geocoder/tiger_2011/geocode_settings.sql [new file with mode: 0644]
extras/tiger_geocoder/tiger_2011/normalize/normalize_address.sql
extras/tiger_geocoder/tiger_2011/upgrade_geocode.sql

index b3b5c67c2ba27e37d187f40bca294a7999a750ae..68f13f91cecc9280530c1fc04fbb46dfd21a88c2 100644 (file)
@@ -18,6 +18,7 @@
 \i utility/set_search_path.sql;
 SELECT tiger.SetSearchPathForInstall('tiger');
 \i tables/lookup_tables_2011.sql
+\i geocode_settings.sql
 --SET search_path TO tiger,public;
 BEGIN;
 -- Type used to pass around a normalized address between functions
index e6e86f28b27a42ed5881c45bf9fa8c59db335ec0..6f98f3a85de7b2d4f27fd0419b00c7ccd34561b3 100644 (file)
@@ -9,7 +9,7 @@ DECLARE
   stmt VARCHAR;
   in_statefp VARCHAR;
   exact_street boolean := false;
-  var_debug boolean := false;
+  var_debug boolean := get_geocode_setting('debug_geocode_address')::boolean;
   var_sql text := '';
   var_n integer := 0;
   var_restrict_geom geometry := NULL;
index b740f9610f24136f13ea907712beb15a45332dc5..838c76e61bee975ba5a8bcee7219ee9ee4b561e4 100644 (file)
@@ -20,7 +20,7 @@ DECLARE
     var_sql text := '';
     var_zip varchar(5)[];
     in_statefp varchar(2) ; 
-    var_debug boolean := false;
+    var_debug boolean := get_geocode_setting('debug_geocode_intersection')::boolean;
     results record;
 BEGIN
     IF COALESCE(roadway1,'') = '' OR COALESCE(roadway2,'') = '' THEN
index 482a82703e6a613313b38ce582c5fc472ce85a42..5a8454a850079c7e12ec162303eff5d0359b599a 100644 (file)
@@ -25,7 +25,7 @@ DECLARE
   var_place varchar;
   var_county varchar;
   var_stmt text;
-  var_debug boolean = false;
+  var_debug boolean =  get_geocode_setting('debug_reverse_geocode')::boolean;
   var_zip varchar := NULL;
   var_primary_fullname varchar := '';
 BEGIN
diff --git a/extras/tiger_geocoder/tiger_2011/geocode_settings.sql b/extras/tiger_geocoder/tiger_2011/geocode_settings.sql
new file mode 100644 (file)
index 0000000..3d888f6
--- /dev/null
@@ -0,0 +1,55 @@
+--$Id$
+--
+-- PostGIS - Spatial Types for PostgreSQL
+-- http://www.postgis.org
+--
+-- Copyright (C) 2010, 2011 Regina Obe and Leo Hsu
+--
+-- This is free software; you can redistribute and/or modify it under
+-- the terms of the GNU General Public Licence. See the COPYING file.
+--
+-- Author: Regina Obe and Leo Hsu <lr@pcorp.us>
+--  
+-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+--
+SELECT tiger.SetSearchPathForInstall('tiger');
+
+CREATE OR REPLACE FUNCTION install_geocode_settings() 
+       RETURNS void AS
+$$
+DECLARE var_temp text;
+BEGIN
+       var_temp := tiger.SetSearchPathForInstall('tiger'); /** set setach path to have tiger in front **/
+       IF NOT EXISTS(SELECT table_name FROM information_schema.columns WHERE table_schema = 'tiger' AND table_name = 'geocode_settings')  THEN
+               CREATE TABLE geocode_settings(name text primary key, setting text, unit text, category text, short_desc text);
+       END IF;
+       --add missing settings
+       INSERT INTO geocode_settings(name,setting,unit,category,short_desc)
+               SELECT f.*
+               FROM 
+               (VALUES ('debug_geocode_address', 'false', 'boolean','debug', 'outputs debug information in notice log such as queries when geocode_addresss is called if true')
+                       , ('debug_geocode_intersection', 'false', 'boolean','debug', 'outputs debug information in notice log such as queries when geocode_intersection is called if true')
+                       , ('debug_normalize_address', 'false', 'boolean','debug', 'outputs debug information in notice log such as queries and intermediate expressions when normalize_address is called if true')
+                       , ('debug_reverse_geocode', 'false', 'boolean','debug', 'if true, outputs debug information in notice log such as queries and intermediate expressions when reverse_geocode')
+               ) f(name,setting,unit,category,short_desc)
+               WHERE f.name NOT IN(SELECT name FROM geocode_settings);
+END;
+$$
+language plpgsql;
+
+SELECT install_geocode_settings(); /** create the table if it doesn't exist **/
+
+CREATE OR REPLACE FUNCTION get_geocode_setting(setting_name text)
+RETURNS text AS
+$$
+SELECT setting FROM geocode_settings WHERE name = $1;
+$$
+language sql STABLE;
+
+CREATE OR REPLACE FUNCTION set_geocode_setting(setting_name text, setting_value text)
+RETURNS text AS
+$$
+UPDATE geocode_settings SET setting = $2 WHERE name = $1
+       RETURNING setting;
+$$
+language sql VOLATILE;
index 2fb8f12997eed6b166976dd2744e19885b5df1f7..a93f0a90ddd6422a7e360a914b18fbc360b324aa 100644 (file)
@@ -56,7 +56,7 @@ CREATE OR REPLACE FUNCTION normalize_address(in_rawinput character varying)
   RETURNS norm_addy AS
 $$
 DECLARE
-  debug_flag boolean := false;
+  debug_flag boolean := get_geocode_setting('debug_normalize_address')::boolean;
   result norm_addy;
   addressString VARCHAR;
   zipString VARCHAR;
index 2167b43949c02342e4616fb707caf9897ecff638..0c2cda640ce8f6d8e231281b35e7f2104d1e8e08 100644 (file)
@@ -19,6 +19,8 @@
 -- the below call will put tiger schema in front so all objects in this script
 -- will get created in search path
 SELECT tiger.SetSearchPathForInstall('tiger');
+--this is used currently for debugging
+\i geocode_settings.sql
 --this will fail if the column already exists which is fine
 ALTER TABLE state_lookup ADD COLUMN statefp char(2);
 UPDATE state_lookup SET statefp = lpad(st_code::text,2,'0') WHERE statefp IS NULL;
@@ -40,7 +42,7 @@ DROP FUNCTION IF EXISTS interpolate_from_address(integer, character varying, cha
 DROP FUNCTION IF EXISTS interpolate_from_address(integer, integer, integer, geometry); /**don't need this since got collapes into varchar version **/
 
 -- this will fail if already exists, that is fine.  can't use IF NOT EXISTS until 9.1
-
+SELECT tiger.SetSearchPathForInstall('tiger');
 CREATE TABLE addrfeat
 (
   gid serial not null primary key,
@@ -223,7 +225,8 @@ INSERT INTO street_type_lookup (name, abbrev, is_hw)
 SELECT name, abbrev, false
     FROM temp_types As t
            WHERE t.name NOT IN(SELECT name FROM street_type_lookup);
-           
+SELECT tiger.SetSearchPathForInstall('tiger');
 -- new census loader
 \i census_loader.sql
 --create parent tables for census