colorByID = (objectSet,data,objectIDfield,dataIDfield,dataValueField,extents,colorScale) => {
let minValue = (typeof extents === 'undefined') ? d3.min(data, d => toNum(d[dataValueField])) : extents[0];
let maxValue = (typeof extents === 'undefined') ? d3.max(data, d => toNum(d[dataValueField])) : extents[1];
if (!colorScale) {colorScale = d3.scaleLinear().domain([minValue, maxValue]).range(["white","black"])};
data.forEach(d => {
objectSet.filter(o=>o[objectIDfield] == d[dataIDfield])
.style("fill",colorScale(toNum(d[dataValueField])))
})
}