Implement query to get features of a cluster for an aggregated map from @jgoizueta's cluster query
This commit is contained in:
@@ -448,3 +448,31 @@ const aggregationQueryTemplates = {
|
||||
|
||||
module.exports.SUPPORTED_PLACEMENTS = Object.keys(aggregationQueryTemplates);
|
||||
module.exports.GEOMETRY_COLUMN = 'the_geom_webmercator';
|
||||
|
||||
const clusterFeaturesQuery = ctx => `
|
||||
WITH
|
||||
_cdb_params AS (
|
||||
SELECT
|
||||
${gridResolution(ctx)} AS res
|
||||
),
|
||||
_cell AS (
|
||||
SELECT
|
||||
ST_MakeEnvelope(
|
||||
Floor(ST_X(_cdb_query.the_geom_webmercator)/_cdb_params.res)*_cdb_params.res,
|
||||
Floor(ST_Y(_cdb_query.the_geom_webmercator)/_cdb_params.res)*_cdb_params.res,
|
||||
Floor(ST_X(_cdb_query.the_geom_webmercator)/_cdb_params.res + 1)*_cdb_params.res,
|
||||
Floor(ST_Y(_cdb_query.the_geom_webmercator)/_cdb_params.res + 1)*_cdb_params.res,
|
||||
3857
|
||||
) AS bbox
|
||||
FROM (${ctx.sourceQuery}) _cdb_query, _cdb_params
|
||||
WHERE _cdb_query.cartodb_id = ${ctx.id}
|
||||
)
|
||||
SELECT _cdb_query.* FROM _cell, (${ctx.sourceQuery}) _cdb_query
|
||||
WHERE ST_Intersects(_cdb_query.the_geom_webmercator, _cell.bbox)
|
||||
`;
|
||||
|
||||
module.exports.featuresQuery = (id, options) => clusterFeaturesQuery({
|
||||
id,
|
||||
sourceQuery: options.query,
|
||||
res: 256/options.resolution
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user