Skip to content

Gridviz multi scale visualisation

gaffuri edited this page Oct 20, 2021 · 1 revision

This page describes the multi-scale visualisation mechanism of Gridviz.

Why

For an efficient exploration across scales, the application should show suitable data for each zoom level. It should offer the possibility to define different gridded datasets (and styles) depending on the zoom level. In general, higher resolution grids should be shown for larger scales - and larger resolution grids should be shown for small scales.

A good indicator to determine if a gridded dataset is suitable for a zoom level is its resolution compared to screen pixel size:

  • If the grid cells are smaller than the screen pixels, then a lower resolution grid should be shown instead.
  • If the grid cells are too large (more than 50 screen pixels for example), then a higher resolution grid should be shown (if available of course). In such case, it gets also possible to show more information for each grid cell, such as for example a composition or a combination of several values.

For multi-scale visualisations, two approaches are possible: Discrete and continuous zooming.

Discrete zooming

A predefined set of zoom levels are defined. The application shows only these zoom levels (with possibly some smooth transition when changing them). For each zoom level, the gridded dataset to show is defined, possibly different for each zoom level.

In practice, a gridded dataset could be defined that way:

myApp.gridData([value], [zoomLevel]) where zoomLevel is the zoom level when to show the data.

This approach is adopted by most of the web mapping systems, based on the web mercator projection, 20 zoom levels and a factor 2 between consecutive zoom levels. See here.

Continuous zooming

The scale dimension is continuous: The application can show an infinite number of zoom levels. The scale line is decomposed into discrete intervals with a suitable gridded dataset defined for each of them.

In practice, a gridded dataset could be defined that way:

myApp.gridData([value], [zoomMin], [zoomMax]) where [zoomMin, zoomMax] is the zoom interval when to show the data.

Choice

For gridviz, continuous zooming seems to be the most suitable approach. TODO: need to discuss/justify the reasons ?