From 1e0b0a181cf29c535a41e5a5d69bff3bdecadbf8 Mon Sep 17 00:00:00 2001 From: Andy Eschbacher Date: Mon, 16 May 2016 13:32:55 -0400 Subject: [PATCH 1/3] removing geoid from obs_getpolygons --- src/pg/sql/41_observatory_augmentation.sql | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/pg/sql/41_observatory_augmentation.sql b/src/pg/sql/41_observatory_augmentation.sql index 98a8ec7..a5b3fd6 100644 --- a/src/pg/sql/41_observatory_augmentation.sql +++ b/src/pg/sql/41_observatory_augmentation.sql @@ -518,8 +518,25 @@ DECLARE q_sum text; q text; i NUMERIC; + data_geoid_colname text; + geom_geoid_colname text; BEGIN + -- TODO we're assuming our geom_table has only one geom_ref column + -- we *really* should pass in both geom_table_name and boundary_id + -- TODO tablename should not be passed here (use boundary_id) + EXECUTE + format('SELECT ct.colname + FROM observatory.obs_column_to_column c2c, + observatory.obs_column_table ct, + observatory.obs_table t + WHERE c2c.reltype = ''geom_ref'' + AND ct.column_id = c2c.source_id + AND ct.table_id = t.id + AND t.tablename = %L' + , geom_table_name) + INTO geom_geoid_colname; + q_select := 'SELECT geoid, '; q_sum := 'SELECT Array['; @@ -555,8 +572,8 @@ BEGIN q := q || q_select || format('FROM observatory.%I ', ((data_table_info)[1]->>'tablename')); - q := q || ' ) ' || q_sum || ' ]::numeric[] FROM _overlaps, values - WHERE values.geoid = _overlaps.geoid'; + q := format(q || ' ) ' || q_sum || ' ]::numeric[] FROM _overlaps, values + WHERE values.%I = _overlaps.%I', geom_geoid_colname, geom_geoid_colname); EXECUTE q From 60e716878fa91fa4e1d129c55f78fd48f8c54a90 Mon Sep 17 00:00:00 2001 From: Andy Eschbacher Date: Mon, 16 May 2016 14:00:04 -0400 Subject: [PATCH 2/3] template geoid --- src/pg/sql/41_observatory_augmentation.sql | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/pg/sql/41_observatory_augmentation.sql b/src/pg/sql/41_observatory_augmentation.sql index a5b3fd6..e32b6fb 100644 --- a/src/pg/sql/41_observatory_augmentation.sql +++ b/src/pg/sql/41_observatory_augmentation.sql @@ -537,7 +537,7 @@ BEGIN , geom_table_name) INTO geom_geoid_colname; - q_select := 'SELECT geoid, '; + q_select := format('SELECT %I, ', geom_geoid_colname); q_sum := 'SELECT Array['; FOR i IN 1..array_upper(data_table_info, 1) @@ -563,12 +563,12 @@ BEGIN SELECT ST_Area( ST_Intersection($1, a.the_geom) ) / ST_Area(a.the_geom) As overlap_fraction, - geoid + %I FROM observatory.%I As a WHERE $1 && a.the_geom ), values As ( - ', geom_table_name); + ', geom_geoid_colname, geom_table_name); q := q || q_select || format('FROM observatory.%I ', ((data_table_info)[1]->>'tablename')); From 57adaf78d6d9bfebdca60aa77eacbf40c3817e4e Mon Sep 17 00:00:00 2001 From: Andy Eschbacher Date: Mon, 16 May 2016 14:30:27 -0400 Subject: [PATCH 3/3] puts in data_geoid --- src/pg/sql/41_observatory_augmentation.sql | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/pg/sql/41_observatory_augmentation.sql b/src/pg/sql/41_observatory_augmentation.sql index e32b6fb..b9e87e7 100644 --- a/src/pg/sql/41_observatory_augmentation.sql +++ b/src/pg/sql/41_observatory_augmentation.sql @@ -525,6 +525,17 @@ BEGIN -- TODO we're assuming our geom_table has only one geom_ref column -- we *really* should pass in both geom_table_name and boundary_id -- TODO tablename should not be passed here (use boundary_id) + EXECUTE + format('SELECT ct.colname + FROM observatory.obs_column_to_column c2c, + observatory.obs_column_table ct, + observatory.obs_table t + WHERE c2c.reltype = ''geom_ref'' + AND ct.column_id = c2c.source_id + AND ct.table_id = t.id + AND t.tablename = %L' + , (data_table_info)[1]->>'tablename') + INTO data_geoid_colname; EXECUTE format('SELECT ct.colname FROM observatory.obs_column_to_column c2c, @@ -537,7 +548,7 @@ BEGIN , geom_table_name) INTO geom_geoid_colname; - q_select := format('SELECT %I, ', geom_geoid_colname); + q_select := format('SELECT %I, ', data_geoid_colname); q_sum := 'SELECT Array['; FOR i IN 1..array_upper(data_table_info, 1) @@ -558,7 +569,7 @@ BEGIN END IF; END LOOP; - q = format(' + q := format(' WITH _overlaps As ( SELECT ST_Area( ST_Intersection($1, a.the_geom)