From 9567f52a36e6beb10550a7c35eadcd1004c668ca Mon Sep 17 00:00:00 2001 From: John Krauss Date: Tue, 13 Dec 2016 00:14:19 +0000 Subject: [PATCH] minor tweaks to obs_getmeasuremeta and obs_getmeasuredata, good behavior for geometryscores even when null is passed as desired_num_geoms --- src/pg/sql/41_observatory_augmentation.sql | 12 ++++++------ src/pg/sql/42_observatory_exploration.sql | 5 ++++- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/pg/sql/41_observatory_augmentation.sql b/src/pg/sql/41_observatory_augmentation.sql index 4504fb5..d577191 100644 --- a/src/pg/sql/41_observatory_augmentation.sql +++ b/src/pg/sql/41_observatory_augmentation.sql @@ -338,9 +338,9 @@ $$ LANGUAGE plpgsql; CREATE OR REPLACE FUNCTION cdb_observatory.OBS_GetMeasureMeta( geom geometry(Geometry, 4326), measure_id TEXT, - normalize 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 ( numer_aggregate VARCHAR, @@ -373,7 +373,7 @@ BEGIN AND (numer_timespan = $3 OR ($3 = ''))), scores AS (SELECT * FROM cdb_observatory._OBS_GetGeometryScores($4, - (SELECT Array_Agg(geom_id) FROM meta), 500)) + (SELECT Array_Agg(geom_id) FROM meta), $5)) SELECT meta.* FROM meta, scores WHERE meta.geom_id = scores.geom_id @@ -383,7 +383,7 @@ BEGIN CASE WHEN ST_GeometryType(geom) = 'ST_Point' THEN ST_Buffer(geom::geography, 200)::geometry(geometry, 4326) ELSE geom - END; + END, target_geoms; RETURN; END; $$ LANGUAGE plpgsql IMMUTABLE; @@ -578,8 +578,8 @@ BEGIN ST_GeometryType(geom); END IF; - SELECT * FROM cdb_observatory.OBS_GetMeasureMeta(geom, measure_id, normalize, - boundary_id, time_span) + SELECT * FROM cdb_observatory.OBS_GetMeasureMeta(geom, measure_id, + boundary_id, time_span, 500) INTO numer_aggregate, numer_colname, numer_geomref_colname, numer_tablename, denom_colname, denom_geomref_colname, denom_tablename, geom_colname, geom_geomref_colname, geom_tablename, numer_name, diff --git a/src/pg/sql/42_observatory_exploration.sql b/src/pg/sql/42_observatory_exploration.sql index 5dbadf9..530ca22 100644 --- a/src/pg/sql/42_observatory_exploration.sql +++ b/src/pg/sql/42_observatory_exploration.sql @@ -416,7 +416,7 @@ $$ LANGUAGE plpgsql; CREATE OR REPLACE FUNCTION cdb_observatory._OBS_GetGeometryScores( bounds Geometry(Geometry, 4326) DEFAULT NULL, filter_geom_ids TEXT[] DEFAULT NULL, - desired_num_geoms INTEGER DEFAULT 3000 + desired_num_geoms INTEGER DEFAULT NULL ) RETURNS TABLE ( score NUMERIC, numtiles BIGINT, @@ -428,6 +428,9 @@ CREATE OR REPLACE FUNCTION cdb_observatory._OBS_GetGeometryScores( meanmediansize NUMERIC ) AS $$ BEGIN + IF desired_num_geoms IS NULL THEN + desired_num_geoms := 3000; + END IF; filter_geom_ids := COALESCE(filter_geom_ids, (ARRAY[])::TEXT[]); -- Very complex geometries simply fail. For a boundary check, we can -- comfortably get away with the simplicity of an envelope