deck.gl icon indicating copy to clipboard operation
deck.gl copied to clipboard

[Feat] HeatmapLayer: render more consistently across zoom levels

Open davidcalhoun opened this issue 1 year ago • 4 comments

Target Use Case

It would be nice to have a way to keep a Heatmap rendering consistently across multiple zoom levels. Currently zooming in results in significant changes to the visualization which can be disorienting.

deck.gl current behavior

(via deck.gl HeatmapLayer docs)

https://user-images.githubusercontent.com/120596/227360722-f92f12c3-4693-4e7d-8df7-bbefb0c21cc6.mp4

Examples of expected behavior

Uber

  • movement.uber.com - note how it's not as disorienting when zooming in, since the heatmap doesn't change too abruptly when rerendering:

https://user-images.githubusercontent.com/120596/227361397-74701107-68c3-4545-ad5e-c6aba3e69e10.mp4

ArcGIS docs

  • ArcGIS - zooming results in rendering changes that aren't too jarring:

https://user-images.githubusercontent.com/120596/227363837-051516d4-e7a0-40fb-806a-12986d582548.mp4

Related discussions

  • https://github.com/visgl/deck.gl/discussions/6908
  • https://github.com/visgl/deck.gl/discussions/7191
  • https://github.com/visgl/deck.gl/issues/5003 - this issue is adjusting weight based on zoom level, presumably this wouldn't be needed if there was a way to make heatmap display more consistently across zoom levels.

Proposal

Some layers such as Scatterplot allow users to set radiusUnits to meters which helps make visualizations more consistent across zoom levels. It would be nice if HeatmapLayer had something like radiusUnits as well, though this would probably require a breaking change (radiusPixels would need to be renamed to radius).

Alternatively it would be nice to have some new boolean property to turn on which would result in more consistent rendering between different zoom levels.

davidcalhoun avatar Mar 23 '23 21:03 davidcalhoun