Add aggregation proxy

This commit is contained in:
Daniel García Aubert 2017-11-30 19:02:30 +01:00
parent 1767b83d09
commit 73ae736603

View 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();
}
};