ssec / sift

A visualization application for satellite imagery
http://sift.ssec.wisc.edu/
GNU General Public License v3.0
47 stars 14 forks source link

Revive "equalizer view" #361

Open djhoese opened 1 year ago

djhoese commented 1 year ago

I thought I had an issue for this already, but can't find it so here we go...

Removal and old behavior

During EUMETSAT development the layer list was rewritten and the "equalizer view" of each layer was removed due to the complexity and user experience issues that were run into. The equalizer view is/was a visual indication in the layer list to show the value of each layer where the point probe was placed. This was indicated used a blue-ish/purple-ish bar to color the layer list row for each layer. The size/width of the bar was determined by the probed value in the range of the color limits of the layer.

User Experience Issues

The user experience issue with this is that you could have different layers with different color limits or with similar units on completely different scales. A visualization like this could show two layers as being the "same" but with completely different values being probed. For example, a temperature difference field and a top-of-atmosphere BT layer. Or a sea surface temperature and a TOA BT layer. They may both be showing Kelvin or Celsius but could be on different scales and their "bars" appear to show them at the same value.

This wasn't exactly a problem for old SIFT because UW/CIMSS/SSEC training focused on the Level 1B products and took the "lazy" approach that all BT bands had the same color limits and Visible bands had the same color limits. So two bars at the same position were probably showing the same temperature on the same scale. Worst case you were looking at a visible albedo (% maybe?) value and a temperature, but with these being the two primary types of products we looked at this was easy to distinguish.

SIFT now supports almost every available Satpy reader including Level 2 products, builtin Satpy composites, etc. This can easily get confusing in a simplified visualization like the equalizer view was trying to do.

Revival

The equalizer view was used heavily by trainers using SIFT and needs to have some equivalent replacement. That is, you need to be able to place a point probe and at a glance see "this is how these layers 'respond'".

The easiest but probably not the best solution would be a new widget (similar to the region probe graphs) that looks just like the old equalizer layer list. All the UX issues, but nothing new for past users.

Another option during a brainstorming session with @rayg-ssec was to maybe display colorbars with some kind of indicator at where that probed value is in the over colors. This doesn't exactly solve the differing color limits/scales issue, but it could still be useful.

We could group layers into types and have individual equalizer bars for each product in that group. The min/max of the plots would maybe be the min/max of all the color limits for the layers in that group. If the grouping is done well then this should "just work" and be pretty obvious. Especially if there are titles for each of the groups to indicate what we're looking at. I can see training language being something like "We can see in the TOA Brightness Temperature bands that many of them have a high value, but the TOA Reflectance bands...". I have no idea if this is actually something that be encountered, but at least the grouping avoids the major issue of the mixing of unlike layers/scales.

ameraner commented 1 year ago

Thanks for the issue! I like the solution in the last paragraph, I think it would be the clearest and most functional.

Note that with SIFT 2.0, as a mitigation for the missing equaliser view, the point probe values are at least explicitly listed for all datasets in the Layer Manager: image

The old equaliser view for reference for the discussion: image

Just some thoughts/questions to keep in mind that we will probably encounter at some point while refining the feature: How to handle the min/max limits of the equaliser when:

  1. there are no pre-defined default values for that dataset type: Shall we take the min/max of the current datasets, probably defined by the new, in this case automatically triggered "Fit To Data" limits?
  2. The colorbar limits are changed manually after loading: shall we synchronise the equaliser view?
  3. For both of the above: in the case we that we use "current" bar limits instead of defaults, what do we take if we have more than one layer for the same dataset type, that have different bar limits? Maybe the min/max of all colorbar min/max for that dataset type?

PS: Note also that with the new Layer Manager design we have one layer per dataset, while in the old we had one layer per dataset and per time step. So the new Equaliser view probably needs to have an updating mechanism when a different time step is selected. PPS: I remember that during the development of the new Layer Manager, ASK kept the old one alive, but it was not being shown in the GUI. Maybe @askalex remembers if the code for the old equaliser view is still in the code base and active? Could be still useful as a reference/starting point, or to revive the feature at least temporarily.

djhoese commented 1 year ago

At least in old SIFT we always came up with some min/max iirc. I guess in some of the GRIB files we were reading these defaults weren't very accurate so I think dynamically computing them for one time step would be good enough.

My initial idea was to use the colorbar limits, but maybe it would be good to use the default/initial limits of the layer "family" and then allow the user to refine it to be a smaller range or make it bigger. However, that means we can't be showing a colorbar since that colorbar would not match the displayed map image anymore.