minor edits
This commit is contained in:
@@ -156,11 +156,10 @@ DECLARE
|
|||||||
BEGIN
|
BEGIN
|
||||||
|
|
||||||
geom_table_name := cdb_observatory._OBS_GeomTable(geom, geometry_level);
|
geom_table_name := cdb_observatory._OBS_GeomTable(geom, geometry_level);
|
||||||
RAISE NOTICE 'geom_table_name: %', geom_table_name;
|
|
||||||
|
|
||||||
IF geom_table_name IS NULL
|
IF geom_table_name IS NULL
|
||||||
THEN
|
THEN
|
||||||
RAISE NOTICE 'Point % is outside of the data region', geom;
|
RAISE NOTICE 'Point % is outside of the data region', ST_AsText(geom);
|
||||||
RETURN QUERY SELECT '{}'::text[], '{}'::NUMERIC[];
|
RETURN QUERY SELECT '{}'::text[], '{}'::NUMERIC[];
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
@@ -170,15 +169,13 @@ BEGIN
|
|||||||
$3);'
|
$3);'
|
||||||
INTO data_table_info
|
INTO data_table_info
|
||||||
using geometry_level, column_ids, time_span;
|
using geometry_level, column_ids, time_span;
|
||||||
|
|
||||||
RAISE NOTICE 'data_table_info: %', data_table_info::text;
|
|
||||||
|
|
||||||
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[];
|
||||||
results := cdb_observatory._OBS_GetPoints(geom,
|
results := cdb_observatory._OBS_GetPoints(geom,
|
||||||
geom_table_name,
|
geom_table_name,
|
||||||
data_table_info);
|
data_table_info);
|
||||||
RAISE NOTICE 'results: %', results;
|
|
||||||
|
|
||||||
ELSIF ST_GeometryType(geom) IN ('ST_Polygon', 'ST_MultiPolygon')
|
ELSIF ST_GeometryType(geom) IN ('ST_Polygon', 'ST_MultiPolygon')
|
||||||
THEN
|
THEN
|
||||||
@@ -187,14 +184,14 @@ BEGIN
|
|||||||
geom_table_name,
|
geom_table_name,
|
||||||
data_table_info);
|
data_table_info);
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
RETURN QUERY
|
RETURN QUERY
|
||||||
EXECUTE
|
EXECUTE
|
||||||
$query$
|
$query$
|
||||||
SELECT unnest($1)
|
SELECT unnest($1)
|
||||||
$query$
|
$query$
|
||||||
USING results;
|
USING results;
|
||||||
|
|
||||||
END;
|
END;
|
||||||
$$ LANGUAGE plpgsql;
|
$$ LANGUAGE plpgsql;
|
||||||
|
|
||||||
@@ -273,27 +270,27 @@ BEGIN
|
|||||||
((data_table_info)[1])->>'tablename',
|
((data_table_info)[1])->>'tablename',
|
||||||
geoid
|
geoid
|
||||||
);
|
);
|
||||||
|
|
||||||
EXECUTE
|
EXECUTE
|
||||||
query
|
query
|
||||||
INTO result
|
INTO result
|
||||||
USING geom;
|
USING geom;
|
||||||
|
|
||||||
EXECUTE
|
EXECUTE
|
||||||
$query$
|
$query$
|
||||||
select array_agg(row_to_json(t)) from(
|
SELECT array_agg(row_to_json(t)) FROM (
|
||||||
select values as value,
|
SELECT values As value,
|
||||||
meta->>'name' as name,
|
meta->>'name' As name,
|
||||||
meta->>'tablename' as tablename,
|
meta->>'tablename' As tablename,
|
||||||
meta->>'aggregate' as aggregate,
|
meta->>'aggregate' As aggregate,
|
||||||
meta->>'type' as type,
|
meta->>'type' As type,
|
||||||
meta->>'description' as description
|
meta->>'description' As description
|
||||||
from (select unnest($1) as values, unnest($2) as meta) b
|
FROM (SELECT unnest($1) As values, unnest($2) As meta) b
|
||||||
) t
|
) t
|
||||||
$query$
|
$query$
|
||||||
INTO json_result
|
INTO json_result
|
||||||
USING result, data_table_info;
|
USING result, data_table_info;
|
||||||
|
|
||||||
RETURN json_result;
|
RETURN json_result;
|
||||||
END;
|
END;
|
||||||
$$ LANGUAGE plpgsql;
|
$$ LANGUAGE plpgsql;
|
||||||
@@ -374,7 +371,7 @@ BEGIN
|
|||||||
|
|
||||||
IF time_span IS NULL THEN
|
IF time_span IS NULL THEN
|
||||||
-- TODO we should determine latest timespan for this measure
|
-- TODO we should determine latest timespan for this measure
|
||||||
time_span := '2010 - 2014';
|
time_span := '2009 - 2013';
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
EXECUTE '
|
EXECUTE '
|
||||||
@@ -533,27 +530,27 @@ BEGIN
|
|||||||
|
|
||||||
q := q || ' ) ' || q_sum || ' ]::numeric[] FROM _overlaps, values
|
q := q || ' ) ' || q_sum || ' ]::numeric[] FROM _overlaps, values
|
||||||
WHERE values.geoid = _overlaps.geoid';
|
WHERE values.geoid = _overlaps.geoid';
|
||||||
|
|
||||||
EXECUTE
|
EXECUTE
|
||||||
q
|
q
|
||||||
INTO result
|
INTO result
|
||||||
USING geom;
|
USING geom;
|
||||||
|
|
||||||
EXECUTE
|
EXECUTE
|
||||||
$query$
|
$query$
|
||||||
select array_agg(row_to_json(t)) from(
|
SELECT array_agg(row_to_json(t)) FROM (
|
||||||
select values as value,
|
SELECT values As value,
|
||||||
meta->>'name' as name,
|
meta->>'name' As name,
|
||||||
meta->>'tablename' as tablename,
|
meta->>'tablename' As tablename,
|
||||||
meta->>'aggregate' as aggregate,
|
meta->>'aggregate' As aggregate,
|
||||||
meta->>'type' as type,
|
meta->>'type' As type,
|
||||||
meta->>'description' as description
|
meta->>'description' As description
|
||||||
from (select unnest($1) as values, unnest($2) as meta) b
|
FROM (SELECT unnest($1) As values, unnest($2) As meta) b
|
||||||
) t
|
) t
|
||||||
$query$
|
$query$
|
||||||
INTO json_result
|
INTO json_result
|
||||||
USING result, data_table_info;
|
USING result, data_table_info;
|
||||||
|
|
||||||
RETURN json_result;
|
RETURN json_result;
|
||||||
END;
|
END;
|
||||||
$$ LANGUAGE plpgsql;
|
$$ LANGUAGE plpgsql;
|
||||||
@@ -564,7 +561,7 @@ CREATE OR REPLACE FUNCTION cdb_observatory.OBS_GetSegmentSnapshot(
|
|||||||
geom geometry,
|
geom geometry,
|
||||||
boundary_id text DEFAULT NULL
|
boundary_id text DEFAULT NULL
|
||||||
)
|
)
|
||||||
RETURNS JSON
|
RETURNS JSON
|
||||||
AS $$
|
AS $$
|
||||||
DECLARE
|
DECLARE
|
||||||
target_cols text[];
|
target_cols text[];
|
||||||
@@ -644,23 +641,23 @@ target_cols := Array[
|
|||||||
array_agg(_OBS_GET->>'value') As vals
|
array_agg(_OBS_GET->>'value') As vals
|
||||||
FROM cdb_observatory._OBS_Get($1,
|
FROM cdb_observatory._OBS_Get($1,
|
||||||
$2,
|
$2,
|
||||||
'2010 - 2014',
|
'2009 - 2013',
|
||||||
$3)
|
$3)
|
||||||
|
|
||||||
), percentiles As (
|
), percentiles As (
|
||||||
%s
|
%s
|
||||||
FROM a)
|
FROM a)
|
||||||
SELECT row_to_json(r) FROM
|
SELECT row_to_json(r) FROM
|
||||||
( SELECT $4 as segment_name, percentiles.*
|
( SELECT $4 as segment_name, percentiles.*
|
||||||
FROM percentiles) r
|
FROM percentiles) r
|
||||||
$query$, cdb_observatory._OBS_BuildSnapshotQuery(target_cols)) results;
|
$query$, cdb_observatory._OBS_BuildSnapshotQuery(target_cols)) results;
|
||||||
|
|
||||||
|
|
||||||
EXECUTE
|
EXECUTE
|
||||||
q
|
q
|
||||||
into result
|
into result
|
||||||
USING geom, target_cols, boundary_id, segment_name;
|
USING geom, target_cols, boundary_id, segment_name;
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
|
||||||
END;
|
END;
|
||||||
@@ -685,7 +682,7 @@ DECLARE
|
|||||||
BEGIN
|
BEGIN
|
||||||
|
|
||||||
IF time_span IS NULL THEN
|
IF time_span IS NULL THEN
|
||||||
time_span = '2010 - 2014';
|
time_span = '2009 - 2013';
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
IF boundary_id IS NULL THEN
|
IF boundary_id IS NULL THEN
|
||||||
@@ -700,13 +697,18 @@ BEGIN
|
|||||||
RETURN QUERY SELECT '{}'::text[], '{}'::text[];
|
RETURN QUERY SELECT '{}'::text[], '{}'::text[];
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
execute'
|
EXECUTE '
|
||||||
select array_agg( _obs_getcolumndata) from cdb_observatory._OBS_GetColumnData($1,
|
SELECT array_agg(_obs_getcolumndata)
|
||||||
$2,
|
FROM cdb_observatory._OBS_GetColumnData($1, $2, $3);
|
||||||
$3);'
|
'
|
||||||
INTO data_table_info
|
INTO data_table_info
|
||||||
USING boundary_id, dimension_names, time_span;
|
USING boundary_id, dimension_names, time_span;
|
||||||
|
|
||||||
|
IF data_table_info IS NULL
|
||||||
|
THEN
|
||||||
|
RAISE NOTICE 'No data table found for this location';
|
||||||
|
RETURN QUERY SELECT NULL::json;
|
||||||
|
END IF;
|
||||||
|
|
||||||
EXECUTE
|
EXECUTE
|
||||||
format('SELECT geoid
|
format('SELECT geoid
|
||||||
@@ -716,8 +718,15 @@ BEGIN
|
|||||||
USING geom
|
USING geom
|
||||||
INTO geoid;
|
INTO geoid;
|
||||||
|
|
||||||
|
IF geoid IS NULL
|
||||||
|
THEN
|
||||||
|
RAISE NOTICE 'No geometry id for this location';
|
||||||
|
RETURN QUERY SELECT NULL::json;
|
||||||
|
END IF;
|
||||||
|
|
||||||
query := 'SELECT ARRAY[';
|
query := 'SELECT ARRAY[';
|
||||||
FOR i IN 1..coalesce(array_upper(data_table_info, 1), 1)
|
|
||||||
|
FOR i IN 1..array_upper(data_table_info, 1)
|
||||||
LOOP
|
LOOP
|
||||||
query = query || format('%I ', lower(((data_table_info)[i])->>'colname'));
|
query = query || format('%I ', lower(((data_table_info)[i])->>'colname'));
|
||||||
IF i < array_upper(data_table_info, 1)
|
IF i < array_upper(data_table_info, 1)
|
||||||
@@ -739,18 +748,19 @@ BEGIN
|
|||||||
query
|
query
|
||||||
INTO results
|
INTO results
|
||||||
USING geom;
|
USING geom;
|
||||||
|
|
||||||
RETURN QUERY
|
RETURN QUERY
|
||||||
EXECUTE
|
EXECUTE
|
||||||
$query$
|
$query$
|
||||||
select row_to_json(t) from(
|
SELECT row_to_json(t) FROM (
|
||||||
select categories as category,
|
SELECT categories As category,
|
||||||
meta->>'name' as name,
|
meta->>'name' As name,
|
||||||
meta->>'tablename' as tablename,
|
meta->>'tablename' As tablename,
|
||||||
meta->>'aggregate' as aggregate,
|
meta->>'aggregate' As aggregate,
|
||||||
meta->>'type' as type,
|
meta->>'type' As type,
|
||||||
meta->>'description' as description
|
meta->>'description' As description
|
||||||
from (select unnest($1) as categories, unnest($2) as meta) b
|
FROM (SELECT unnest($1) As categories,
|
||||||
|
unnest($2) As meta) As b
|
||||||
) t
|
) t
|
||||||
$query$
|
$query$
|
||||||
USING results, data_table_info;
|
USING results, data_table_info;
|
||||||
|
|||||||
Reference in New Issue
Block a user