]> granicus.if.org Git - postgis/commitdiff
fix for #996 also had to revise least and greatest helper functions to deal with...
authorRegina Obe <lr@pcorp.us>
Sat, 28 May 2011 15:07:19 +0000 (15:07 +0000)
committerRegina Obe <lr@pcorp.us>
Sat, 28 May 2011 15:07:19 +0000 (15:07 +0000)
git-svn-id: http://svn.osgeo.org/postgis/trunk@7282 b70326c6-7e19-0410-871a-916f4a2858ee

extras/tiger_geocoder/tiger_2010/create_geocode.bat
extras/tiger_geocoder/tiger_2010/create_geocode.sh
extras/tiger_geocoder/tiger_2010/geocode/other_helper_functions.sql
extras/tiger_geocoder/tiger_2010/tables/lookup_tables_2010.sql
extras/tiger_geocoder/tiger_2010/tiger_loader.sql
extras/tiger_geocoder/tiger_2010/upgrade_geocode.sql

index f4bdb3e6c2ec8d7f333aacba4cb32b9a9904011e..2a4d3158e77247ee9c890f0a6bbce3b59098e896 100644 (file)
@@ -14,5 +14,6 @@ REM "%PGBIN%\psql"  -d "%THEDB%" -c "CREATE EXTENSION fuzzystrmatch"
 "%PGBIN%\psql"  -d "%THEDB%" -c "CREATE SCHEMA tiger_data"\r
 "%PGBIN%\psql"  -d "%THEDB%" -f "tiger_loader.sql"\r
 "%PGBIN%\psql"  -d "%THEDB%" -f "create_geocode.sql"\r
+"%PGBIN%\psql"  -d "%THEDB%" -c "CREATE INDEX idx_tiger_addr_least_address ON addr USING btree (least_hn(fromhn,tohn));"\r
 pause\r
 \r
index b518764d033c64bacd8a3aa86d6f4e065d64aae2..27328768de82ccff78a207ef15a53bf62fb6aa3a 100644 (file)
@@ -14,4 +14,5 @@ ${PSQL_CMD} -d "${THEDB}" -c "CREATE SCHEMA tiger"
 ${PSQL_CMD} -d "${THEDB}" -f "tables/lookup_tables_2010.sql"
 ${PSQL_CMD} -d "${THEDB}" -c "CREATE SCHEMA tiger_data"
 ${PSQL_CMD} -d "${THEDB}" -f "tiger_loader.sql"
-${PSQL_CMD} -d "${THEDB}" -f "create_geocode.sql"
\ No newline at end of file
+${PSQL_CMD} -d "${THEDB}" -f "create_geocode.sql"
+${PSQL_CMD} -d "${THEDB}" -c "CREATE INDEX idx_tiger_addr_least_address ON addr USING btree (least_hn(fromhn,tohn));"
\ No newline at end of file
index 40ff6dff6bb289347686dee17a73d983d9176ece..a66f98bdeb16c60043d230b0b8d28e9794d66910 100644 (file)
@@ -7,16 +7,16 @@
 -- It also allows us to shorten and possibly better cache the repetitive pattern in the code 
 -- greatest(to_number(b.fromhn,''99999999''),to_number(b.tohn,''99999999'')) 
 -- and least(to_number(b.fromhn,''99999999''),to_number(b.tohn,''99999999''))
-CREATE OR REPLACE FUNCTION least_hn(fromhn varchar, tohn varchar)
+CREATE OR REPLACE FUNCTION tiger.least_hn(fromhn varchar, tohn varchar)
   RETURNS integer AS
-$$ SELECT least(to_number($1,'99999999'),to_number($2,'99999999') )::integer;  $$
+$$ SELECT least(to_number( CASE WHEN trim($1) ~ '^[0-9]+$' THEN $1 ELSE '0' END,'99999999'),to_number(CASE WHEN trim($2) ~ '^[0-9]+$' THEN $2 ELSE '0' END,'99999999') )::integer;  $$
   LANGUAGE sql IMMUTABLE
-  COST 1;
+  COST 5;
   
 -- Note we are wrapping this in a function so we can make it immutable (for some reason least and greatest aren't considered immutable)
 -- and thu useable in an index or cacheable for multiple calls
 CREATE OR REPLACE FUNCTION greatest_hn(fromhn varchar, tohn varchar)
   RETURNS integer AS
-$$ SELECT greatest(to_number($1,'99999999'),to_number($2,'99999999') )::integer;  $$
+$$ SELECT greatest(to_number( CASE WHEN trim($1) ~ '^[0-9]+$' THEN $1 ELSE '0' END,'99999999'),to_number(CASE WHEN trim($2) ~ '^[0-9]+$' THEN $2 ELSE '0' END,'99999999') )::integer;  $$
   LANGUAGE sql IMMUTABLE
-  COST 1;
+  COST 5;
index 6c4e46d5922b95252ebb28f7a00bf90c5b5a8c3d..b6baf75bf3e77f25cc09e66302bd860124d969d6 100644 (file)
@@ -963,6 +963,7 @@ CREATE TABLE state
   CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = 'MULTIPOLYGON'::text OR the_geom IS NULL),
   CONSTRAINT enforce_srid_the_geom CHECK (st_srid(the_geom) = 4269)
 );
+CREATE INDEX tiger_state_the_geom_gist ON faces USING gist(the_geom);
 
 DROP TABLE IF EXISTS place;
 CREATE TABLE place
@@ -1085,6 +1086,7 @@ CREATE TABLE edges
 );
 CREATE INDEX idx_edges_tlid ON edges USING btree(tlid);
 CREATE INDEX idx_tiger_edges_countyfp ON edges USING btree(countyfp);
+CREATE INDEX tiger_edges_the_geom_gist ON edges USING gist(the_geom);
 
 DROP TABLE IF EXISTS faces;
 
@@ -1166,17 +1168,9 @@ gid serial NOT NULL PRIMARY KEY,
 );
 CREATE INDEX idx_tiger_faces_tfid ON faces USING btree (tfid);
 CREATE INDEX idx_tiger_faces_countyfp ON faces USING btree(countyfp);
+CREATE INDEX tiger_faces_the_geom_gist ON faces USING gist(the_geom);
 
 
--- Index: tiger.faces_the_geom_gist
-
--- DROP INDEX tiger.faces_the_geom_gist;
-
-CREATE INDEX tiger_faces_the_geom_gist
-  ON faces
-  USING gist
-  (the_geom);
-
 CREATE TABLE featnames
 (
   gid SERIAL NOT NULL,
index afee06d8747da3020e3de9534b8a1cc6d62f5857..c215ff2a8ee76e2afaaff6e47a08f6f4530eef84 100644 (file)
@@ -186,7 +186,7 @@ VALUES(9, 'addr', 'addr', true, true, false,false, 'a',
        '${psql} -c "CREATE TABLE ${data_schema}.${state_abbrev}_${lookup_name}(CONSTRAINT pk_${state_abbrev}_${table_name} PRIMARY KEY (gid)) INHERITS(${table_name});" ',
        '${psql} -c "UPDATE ${data_schema}.${state_abbrev}_${lookup_name} SET statefp = ''${state_fips}'' WHERE statefp IS NULL;"
        ${psql} -c "ALTER TABLE ${data_schema}.${state_abbrev}_${lookup_name} ADD CONSTRAINT chk_statefp CHECK (statefp = ''${state_fips}'');"
-       ${psql} -c "CREATE INDEX idx_${data_schema}_${state_abbrev}_${lookup_name}_least_address ON tiger_data.ma_addr USING btree (least_hn(fromhn,tohn) );"
+       ${psql} -c "CREATE INDEX idx_${data_schema}_${state_abbrev}_${lookup_name}_least_address ON tiger_data.${state_abbrev}_addr USING btree (least_hn(fromhn,tohn) );"
        ${psql} -c "CREATE INDEX idx_${data_schema}_${state_abbrev}_${table_name}_tlid_statefp ON ${data_schema}.${state_abbrev}_${table_name} USING btree (tlid, statefp);"
        ${psql} -c "CREATE INDEX idx_${data_schema}_${state_abbrev}_${table_name}_zip ON ${data_schema}.${state_abbrev}_${table_name} USING btree (zip);"
        ${psql} -c "CREATE TABLE ${data_schema}.${state_abbrev}_zip_state(CONSTRAINT pk_${state_abbrev}_zip_state PRIMARY KEY(zip,stusps)) INHERITS(zip_state); "
index 5477fc57a294822f8a0b2fd8eef3cc07d880604d..64b2d8a995af3d8b2d64b188c97e033f01ee9f1e 100644 (file)
@@ -21,6 +21,8 @@ ALTER TABLE state_lookup ADD CONSTRAINT state_lookup_statefp_key UNIQUE(statefp)
 CREATE INDEX idx_tiger_edges_countyfp ON edges USING btree(countyfp);
 CREATE INDEX idx_tiger_faces_countyfp ON faces USING btree(countyfp);
 CREATE INDEX tiger_place_the_geom_gist ON place USING gist(the_geom);
+CREATE INDEX tiger_edges_the_geom_gist ON edges USING gist(the_geom);
+CREATE INDEX tiger_state_the_geom_gist ON faces USING gist(the_geom);
 
 BEGIN;
 -- Type used to pass around a normalized address between functions
@@ -75,4 +77,5 @@ CREATE TYPE norm_addy AS (
 
 -- Reverse Geocode API, called by user
 \i geocode/reverse_geocode.sql
-COMMIT;
\ No newline at end of file
+COMMIT;
+CREATE INDEX idx_tiger_addr_least_address ON addr USING btree (least_hn(fromhn,tohn));
\ No newline at end of file