Skip to content

Heatmap based on values instead density #1

@ktugan

Description

@ktugan

I love the library and would like to make a feature request to build a heatmap from values. Here a superior argument from somebody else (from mapbox/mapbox-gl-js#4756):

by default, heatmaps render according to point density (so two points in the same spot are twice as intense as one). But there are cases where we want a different behavior — imagine an air pollution map that shows measurements from spots around the country. Multiple measure points clustered close together shouldn't cause the area to appear many times more polluted compared to an area with the same pollution but only one measure spot.[...]

I can imagine it would work like this:

    var heatmap = new HexgridHeatmap(map, "hexgrid-heatmap", "waterway-label");
    heatmap.setType('value'); // or 'density' which is default
    heatmap.setWeightProperty('airPollutionLevel'); // a property in each Feature of the FeatureCollection
    heatmap.setReduceFunction('mean'); // 'median' or even a function which accepts values

    //normal init from before
    heatmap.setIntensity(6);
    heatmap.setSpread(0.15); //
    heatmap.setCellDensity(0.5); // small value == bigger hexagons
    heatmap.setData(berlinData);
    heatmap.update();

I assume clustering logic would need little or no changing, but instead of counting all objects are iterated through, the value from the property extracted and the reduce function called.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions