adds custom datasource for torque
This commit is contained in:
parent
5f92bdc9da
commit
933c95be9c
52
lib/torque/renderer/datasource.js
Normal file
52
lib/torque/renderer/datasource.js
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
var d3 = require('d3');
|
||||||
|
var jenks = require('turf-jenks');
|
||||||
|
|
||||||
|
function TorqueDataSource (tiles) {
|
||||||
|
this.tiles = tiles
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = TorqueDataSource
|
||||||
|
|
||||||
|
TorqueDataSource.prototype.getName = function () {
|
||||||
|
return 'TorqueDataSource'
|
||||||
|
}
|
||||||
|
|
||||||
|
TorqueDataSource.prototype.getRamp = function (column, bins, method, callback) {
|
||||||
|
var ramp = []
|
||||||
|
var error = null
|
||||||
|
var values = Object.keys(this.tiles).map(function (t) {
|
||||||
|
return this.tiles[t].renderData;
|
||||||
|
}.bind(this)).reduce(function (p,c,i) {
|
||||||
|
for(var i = 0; i<c.length; i++) {
|
||||||
|
p.push(c[i]);
|
||||||
|
}
|
||||||
|
return p;
|
||||||
|
},[]);
|
||||||
|
var extent = d3.extent(values);
|
||||||
|
if (!method || method === 'equal' || method === 'jenks') {
|
||||||
|
var scale = d3.scale.linear().domain([0, bins]).range(extent)
|
||||||
|
ramp = d3.range(bins).map(scale)
|
||||||
|
} else if (method === 'quantiles') {
|
||||||
|
ramp = d3.scale.quantile().range(d3.range(bins)).domain(values).quantiles()
|
||||||
|
} else if (method === 'headstails') {
|
||||||
|
var sortedValues = values.sort(function(a, b) {
|
||||||
|
return a - b;
|
||||||
|
});
|
||||||
|
if (sortedValues.length < bins) {
|
||||||
|
error = 'Number of bins should be lower than total number of rows'
|
||||||
|
} else if (sortedValues.length === bins) {
|
||||||
|
ramp = sortedValues;
|
||||||
|
} else {
|
||||||
|
var mean = d3.mean(sortedValues);
|
||||||
|
ramp.push(mean);
|
||||||
|
for (var i = 1; i < bins; i++) {
|
||||||
|
ramp.push(d3.mean(sortedValues.filter(function (v) {
|
||||||
|
return v > ramp[length - 1];
|
||||||
|
})));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
error = new Error('Quantification method ' + method + ' is not supported')
|
||||||
|
}
|
||||||
|
callback(error, ramp)
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user