Add aggregation proxy
This commit is contained in:
parent
1767b83d09
commit
73ae736603
43
lib/cartodb/models/aggregation/aggregation-proxy.js
Normal file
43
lib/cartodb/models/aggregation/aggregation-proxy.js
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
const RasterAggregation = require('./raster-aggregation');
|
||||||
|
const VectorAggregation = require('./vector-aggregation');
|
||||||
|
const RASTER_AGGREGATION = 'RasterAggregation';
|
||||||
|
const VECTOR_AGGREGATION = 'VectorAggregation';
|
||||||
|
|
||||||
|
module.exports = class AggregationProxy {
|
||||||
|
constructor (mapconfig, resolution = 256, threshold = 10e5, placement = 'centroid') {
|
||||||
|
this.mapconfig = mapconfig;
|
||||||
|
this.resolution = resolution;
|
||||||
|
this.threshold = threshold;
|
||||||
|
this.placement = placement;
|
||||||
|
this.implementation = this._getAggregationImplementation();
|
||||||
|
}
|
||||||
|
|
||||||
|
_getAggregationImplementation () {
|
||||||
|
let implementation = null;
|
||||||
|
|
||||||
|
switch (this._getAggregationType()) {
|
||||||
|
case VECTOR_AGGREGATION:
|
||||||
|
implementation = new VectorAggregation(this.resolution, this.threshold, this.placement);
|
||||||
|
break;
|
||||||
|
case RASTER_AGGREGATION:
|
||||||
|
implementation = new RasterAggregation(this.resolution, this.threshold, this.placement);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new Error('Unsupported aggregation type');
|
||||||
|
}
|
||||||
|
|
||||||
|
return implementation;
|
||||||
|
}
|
||||||
|
|
||||||
|
_getAggregationType () {
|
||||||
|
if (this.mapconfig.isVetorLayergroup()) {
|
||||||
|
return VECTOR_AGGREGATION;
|
||||||
|
}
|
||||||
|
|
||||||
|
return RASTER_AGGREGATION;
|
||||||
|
}
|
||||||
|
|
||||||
|
sql () {
|
||||||
|
return this.implementation.sql();
|
||||||
|
}
|
||||||
|
};
|
Loading…
Reference in New Issue
Block a user