Gridded clustering aggregation strategy for overviews
This commit is contained in:
parent
e5cc9ef0bd
commit
415a09392f
@ -125,6 +125,58 @@ AS $$
|
|||||||
END;
|
END;
|
||||||
$$ LANGUAGE PLPGSQL;
|
$$ LANGUAGE PLPGSQL;
|
||||||
|
|
||||||
|
CREATE OR REPLACE FUNCTION _CDB_GridCluster_Reduce_Strategy(reloid REGCLASS, ref_z INTEGER, overview_z INTEGER)
|
||||||
|
RETURNS REGCLASS
|
||||||
|
AS $$
|
||||||
|
DECLARE
|
||||||
|
overview_rel TEXT;
|
||||||
|
reduction FLOAT8;
|
||||||
|
base_name TEXT;
|
||||||
|
grid_px FLOAT8 = 3.0;
|
||||||
|
grid_m FLOAT8;
|
||||||
|
aggr_attributes TEXT;
|
||||||
|
attributes TEXT;
|
||||||
|
BEGIN
|
||||||
|
overview_rel := _CDB_Overview_Name(reloid, ref_z, overview_z);
|
||||||
|
|
||||||
|
-- compute grid cell size using the overview_z dimension...
|
||||||
|
SELECT CDB_XYZ_Resolution(overview_z)*grid_px INTO grid_m;
|
||||||
|
|
||||||
|
-- TODO: compute expression to aggregate attributes of the table
|
||||||
|
-- aggr_attributes = 'num_attr1, ...''
|
||||||
|
-- aggr_attributes = 'AVG(num_attr1) num_attr1, ...''
|
||||||
|
-- for text attributes we can use NULL or something like '*varies*'
|
||||||
|
attributes := '';
|
||||||
|
aggr_attributes := '';
|
||||||
|
|
||||||
|
EXECUTE Format('DROP TABLE IF EXISTS %s CASCADE;', overview_rel);
|
||||||
|
|
||||||
|
EXECUTE Format('
|
||||||
|
CREATE TABLE %3$s AS
|
||||||
|
WITH clusters AS (
|
||||||
|
SELECT
|
||||||
|
first_value(f.cartodb_id) OVER (
|
||||||
|
PARTITION BY
|
||||||
|
ST_SnapToGrid(f.the_geom_webmercator, 0, 0, %2$s, %2$s)
|
||||||
|
) AS cartodb_id,
|
||||||
|
%4$s
|
||||||
|
the_geom,
|
||||||
|
the_geom_webmercator
|
||||||
|
FROM %1$s f
|
||||||
|
)
|
||||||
|
SELECT
|
||||||
|
cartodb_id,
|
||||||
|
ST_Centroid(ST_Collect(clusters.the_geom)) AS the_geom,
|
||||||
|
%5$s
|
||||||
|
ST_Centroid(ST_Collect(clusters.the_geom_webmercator)) AS the_geom_webmercator
|
||||||
|
FROM clusters
|
||||||
|
GROUP BY cartodb_id;
|
||||||
|
', reloid::text, grid_m, overview_rel, attributes, aggr_attributes);
|
||||||
|
|
||||||
|
RETURN overview_rel;
|
||||||
|
END;
|
||||||
|
$$ LANGUAGE PLPGSQL;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION CDB_CreateOverviews(
|
CREATE OR REPLACE FUNCTION CDB_CreateOverviews(
|
||||||
reloid REGCLASS,
|
reloid REGCLASS,
|
||||||
refscale_strategy regproc DEFAULT '_CDB_Dummy_Ref_Z_Strategy'::regproc,
|
refscale_strategy regproc DEFAULT '_CDB_Dummy_Ref_Z_Strategy'::regproc,
|
||||||
|
Loading…
Reference in New Issue
Block a user