minor tweaks to obs_getmeasuremeta and obs_getmeasuredata, good behavior for geometryscores even when null is passed as desired_num_geoms

This commit is contained in:
John Krauss
2016-12-13 00:14:19 +00:00
parent fad7bb991b
commit 9567f52a36
2 changed files with 10 additions and 7 deletions
+6 -6
View File
@@ -338,9 +338,9 @@ $$ LANGUAGE plpgsql;
CREATE OR REPLACE FUNCTION cdb_observatory.OBS_GetMeasureMeta( CREATE OR REPLACE FUNCTION cdb_observatory.OBS_GetMeasureMeta(
geom geometry(Geometry, 4326), geom geometry(Geometry, 4326),
measure_id TEXT, measure_id TEXT,
normalize TEXT DEFAULT NULL,
boundary_id TEXT DEFAULT NULL, boundary_id TEXT DEFAULT NULL,
time_span TEXT DEFAULT NULL time_span TEXT DEFAULT NULL,
target_geoms INTEGER DEFAULT NULL
) )
RETURNS TABLE ( RETURNS TABLE (
numer_aggregate VARCHAR, numer_aggregate VARCHAR,
@@ -373,7 +373,7 @@ BEGIN
AND (numer_timespan = $3 OR ($3 = ''))), AND (numer_timespan = $3 OR ($3 = ''))),
scores AS (SELECT * scores AS (SELECT *
FROM cdb_observatory._OBS_GetGeometryScores($4, FROM cdb_observatory._OBS_GetGeometryScores($4,
(SELECT Array_Agg(geom_id) FROM meta), 500)) (SELECT Array_Agg(geom_id) FROM meta), $5))
SELECT meta.* SELECT meta.*
FROM meta, scores FROM meta, scores
WHERE meta.geom_id = scores.geom_id WHERE meta.geom_id = scores.geom_id
@@ -383,7 +383,7 @@ BEGIN
CASE WHEN ST_GeometryType(geom) = 'ST_Point' THEN CASE WHEN ST_GeometryType(geom) = 'ST_Point' THEN
ST_Buffer(geom::geography, 200)::geometry(geometry, 4326) ST_Buffer(geom::geography, 200)::geometry(geometry, 4326)
ELSE geom ELSE geom
END; END, target_geoms;
RETURN; RETURN;
END; END;
$$ LANGUAGE plpgsql IMMUTABLE; $$ LANGUAGE plpgsql IMMUTABLE;
@@ -578,8 +578,8 @@ BEGIN
ST_GeometryType(geom); ST_GeometryType(geom);
END IF; END IF;
SELECT * FROM cdb_observatory.OBS_GetMeasureMeta(geom, measure_id, normalize, SELECT * FROM cdb_observatory.OBS_GetMeasureMeta(geom, measure_id,
boundary_id, time_span) boundary_id, time_span, 500)
INTO numer_aggregate, numer_colname, numer_geomref_colname, numer_tablename, INTO numer_aggregate, numer_colname, numer_geomref_colname, numer_tablename,
denom_colname, denom_geomref_colname, denom_tablename, denom_colname, denom_geomref_colname, denom_tablename,
geom_colname, geom_geomref_colname, geom_tablename, numer_name, geom_colname, geom_geomref_colname, geom_tablename, numer_name,
+4 -1
View File
@@ -416,7 +416,7 @@ $$ LANGUAGE plpgsql;
CREATE OR REPLACE FUNCTION cdb_observatory._OBS_GetGeometryScores( CREATE OR REPLACE FUNCTION cdb_observatory._OBS_GetGeometryScores(
bounds Geometry(Geometry, 4326) DEFAULT NULL, bounds Geometry(Geometry, 4326) DEFAULT NULL,
filter_geom_ids TEXT[] DEFAULT NULL, filter_geom_ids TEXT[] DEFAULT NULL,
desired_num_geoms INTEGER DEFAULT 3000 desired_num_geoms INTEGER DEFAULT NULL
) RETURNS TABLE ( ) RETURNS TABLE (
score NUMERIC, score NUMERIC,
numtiles BIGINT, numtiles BIGINT,
@@ -428,6 +428,9 @@ CREATE OR REPLACE FUNCTION cdb_observatory._OBS_GetGeometryScores(
meanmediansize NUMERIC meanmediansize NUMERIC
) AS $$ ) AS $$
BEGIN BEGIN
IF desired_num_geoms IS NULL THEN
desired_num_geoms := 3000;
END IF;
filter_geom_ids := COALESCE(filter_geom_ids, (ARRAY[])::TEXT[]); filter_geom_ids := COALESCE(filter_geom_ids, (ARRAY[])::TEXT[]);
-- Very complex geometries simply fail. For a boundary check, we can -- Very complex geometries simply fail. For a boundary check, we can
-- comfortably get away with the simplicity of an envelope -- comfortably get away with the simplicity of an envelope