From 5e692978364cc08bd8e3c1d6772d55c59b0c26d4 Mon Sep 17 00:00:00 2001 From: John Krauss Date: Wed, 20 Apr 2016 15:51:19 -0400 Subject: [PATCH 1/2] first pass obs_getmeasure --- src/pg/sql/41_observatory_augmentation.sql | 38 +++++++++++++++++++ .../41_observatory_augmentation_test.out | 10 +++++ .../sql/41_observatory_augmentation_test.sql | 15 ++++++++ 3 files changed, 63 insertions(+) diff --git a/src/pg/sql/41_observatory_augmentation.sql b/src/pg/sql/41_observatory_augmentation.sql index 2eec6f0..f5b9c8b 100644 --- a/src/pg/sql/41_observatory_augmentation.sql +++ b/src/pg/sql/41_observatory_augmentation.sql @@ -400,6 +400,43 @@ BEGIN END; $$ LANGUAGE plpgsql; + +CREATE OR REPLACE FUNCTION cdb_observatory.OBS_GetMeasure( + geom GEOMETRY, + measure_id TEXT, + normalize TEXT DEFAULT 'area', -- TODO denominator, none + boundary_id TEXT DEFAULT NULL, + time_span TEXT DEFAULT NULL +) +RETURNS JSON +AS $$ +DECLARE + names TEXT[]; + vals NUMERIC[]; +BEGIN + + IF boundary_id IS NULL THEN + -- TODO we should determine best boundary for this geom + boundary_id := '"us.census.tiger".block_group'; + END IF; + + IF time_span IS NULL THEN + -- TODO we should determine latest timespan for this measure + time_span := '2009 - 2013'; + END IF; + + EXECUTE ' + SELECT names, vals FROM cdb_observatory._OBS_Get($1, ARRAY[$2], $3, $4) LIMIT 1 + ' + INTO names, vals + USING geom, measure_id, time_span, boundary_id; + + RETURN json_build_object('name', (names)[1], 'value', (vals)[1]); + +END; +$$ LANGUAGE plpgsql; + + CREATE OR REPLACE FUNCTION cdb_observatory._OBS_GetPolygons( geom geometry, geom_table_name text, @@ -686,3 +723,4 @@ BEGIN END; $$ LANGUAGE plpgsql; + diff --git a/src/pg/test/expected/41_observatory_augmentation_test.out b/src/pg/test/expected/41_observatory_augmentation_test.out index 07ce113..2df454c 100644 --- a/src/pg/test/expected/41_observatory_augmentation_test.out +++ b/src/pg/test/expected/41_observatory_augmentation_test.out @@ -91,6 +91,16 @@ Done. {X10} | (1 row) + obs_getmeasure +---------------------------------------------------- + {"name" : "total_pop", "value" : 9516.27915900609} +(1 row) + + obs_getmeasure +---------------------------------------------------- + {"name" : "total_pop", "value" : 12140.2484103572} +(1 row) + Dropping obs_table.sql fixture table... Done. Dropping obs_column.sql fixture table... diff --git a/src/pg/test/sql/41_observatory_augmentation_test.sql b/src/pg/test/sql/41_observatory_augmentation_test.sql index 4eacbe1..1436597 100644 --- a/src/pg/test/sql/41_observatory_augmentation_test.sql +++ b/src/pg/test/sql/41_observatory_augmentation_test.sql @@ -125,4 +125,19 @@ SELECT * FROM '"us.census.tiger".census_tract' ); +-- Point-based OBS_GetMeasure, default normalization (area) +SELECT * FROM + cdb_observatory.OBS_GetMeasure( + cdb_observatory._TestPoint(), + '"us.census.acs".B01001001' +); + +-- Poly-based OBS_GetMeasure, default normalization (none) +SELECT * FROM + cdb_observatory.OBS_GetMeasure( + cdb_observatory._TestArea(), + '"us.census.acs".B01001001' +); + + \i test/sql/drop_fixtures.sql From e90a0c19000b25ff48d533e80d7eedc9ca5fad7f Mon Sep 17 00:00:00 2001 From: John Krauss Date: Wed, 20 Apr 2016 16:03:14 -0400 Subject: [PATCH 2/2] tautolotest --- src/pg/test/expected/41_observatory_augmentation_test.out | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/pg/test/expected/41_observatory_augmentation_test.out b/src/pg/test/expected/41_observatory_augmentation_test.out index 2df454c..948b4b3 100644 --- a/src/pg/test/expected/41_observatory_augmentation_test.out +++ b/src/pg/test/expected/41_observatory_augmentation_test.out @@ -91,14 +91,14 @@ Done. {X10} | (1 row) - obs_getmeasure + obs_getmeasure ---------------------------------------------------- {"name" : "total_pop", "value" : 9516.27915900609} (1 row) - obs_getmeasure ----------------------------------------------------- - {"name" : "total_pop", "value" : 12140.2484103572} + obs_getmeasure +---------------------------------------- + {"name" : "total_pop", "value" : 1655} (1 row) Dropping obs_table.sql fixture table...