removing hard-coded geoid from _obs_getpoints
This commit is contained in:
@@ -169,6 +169,10 @@ BEGIN
|
|||||||
INTO data_table_info
|
INTO data_table_info
|
||||||
USING geometry_level, column_ids, time_span;
|
USING geometry_level, column_ids, time_span;
|
||||||
|
|
||||||
|
IF data_table_info IS NULL THEN
|
||||||
|
RAISE NOTICE 'Cannot find data table for boundary ID %, column_ids %, and time_span %', geometry_level, column_ids, time_span;
|
||||||
|
END IF;
|
||||||
|
|
||||||
IF ST_GeometryType(geom) = 'ST_Point'
|
IF ST_GeometryType(geom) = 'ST_Point'
|
||||||
THEN
|
THEN
|
||||||
RAISE NOTICE 'geom_table_name %, data_table_info %', geom_table_name, data_table_info::json[];
|
RAISE NOTICE 'geom_table_name %, data_table_info %', geom_table_name, data_table_info::json[];
|
||||||
@@ -198,7 +202,7 @@ $$ LANGUAGE plpgsql;
|
|||||||
-- otherwise normalize it to the census block area and return that
|
-- otherwise normalize it to the census block area and return that
|
||||||
CREATE OR REPLACE FUNCTION cdb_observatory._OBS_GetPoints(
|
CREATE OR REPLACE FUNCTION cdb_observatory._OBS_GetPoints(
|
||||||
geom geometry(Geometry, 4326),
|
geom geometry(Geometry, 4326),
|
||||||
geom_table_name text,
|
geom_table_name text, -- TODO: change to boundary_id
|
||||||
data_table_info json[]
|
data_table_info json[]
|
||||||
)
|
)
|
||||||
RETURNS json[]
|
RETURNS json[]
|
||||||
@@ -209,14 +213,31 @@ DECLARE
|
|||||||
query text;
|
query text;
|
||||||
i int;
|
i int;
|
||||||
geoid text;
|
geoid text;
|
||||||
|
geoid_colname text;
|
||||||
area NUMERIC;
|
area NUMERIC;
|
||||||
BEGIN
|
BEGIN
|
||||||
|
|
||||||
-- TODO: does 'geoid' need to be generalized to geom_ref??
|
-- 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
|
||||||
EXECUTE
|
EXECUTE
|
||||||
format('SELECT geoid
|
format('SELECT ct.colname
|
||||||
FROM observatory.%I
|
FROM observatory.obs_column_to_column c2c,
|
||||||
WHERE ST_Within($1, the_geom)',
|
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 geoid_colname;
|
||||||
|
RAISE NOTICE 'geom_table_name: %', geom_table_name;
|
||||||
|
RAISE NOTICE 'colname: %', geoid_colname;
|
||||||
|
|
||||||
|
EXECUTE
|
||||||
|
format('SELECT %I
|
||||||
|
FROM observatory.%I
|
||||||
|
WHERE ST_Within($1, the_geom)',
|
||||||
|
geoid_colname,
|
||||||
geom_table_name)
|
geom_table_name)
|
||||||
USING geom
|
USING geom
|
||||||
INTO geoid;
|
INTO geoid;
|
||||||
@@ -226,8 +247,9 @@ BEGIN
|
|||||||
EXECUTE
|
EXECUTE
|
||||||
format('SELECT ST_Area(the_geom::geography) / (1000 * 1000)
|
format('SELECT ST_Area(the_geom::geography) / (1000 * 1000)
|
||||||
FROM observatory.%I
|
FROM observatory.%I
|
||||||
WHERE geoid = %L',
|
WHERE %I = %L',
|
||||||
geom_table_name,
|
geom_table_name,
|
||||||
|
geoid_colname,
|
||||||
geoid)
|
geoid)
|
||||||
INTO area;
|
INTO area;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user