Suggestions to improve SNAP

Dear SNAP developers,

I would like to propose a list of suggestions for the improvement of the software.

  • Allow to open Sentinel-2 MSI directly from zip files (like Sentinel-1 data). This would also allow to read Sentinel-2 zip file from ‘Product Library’.
  • Allow in operation “Subset” (Spatial subset, geo coordinates) to input geo coordinates in the data CRS (e.g. UTM zones).
  • Within the software options, add a new setting to reverse scroll functionality (zoom-in / zoom-out) from the mouse scroll-wheel.
  • Integrate color palettes from “Cpt-city” (
  • Add Granule information on the ‘Pixel Info’ tab (allowing the identification of the corresponding granule for the pixel at cursor position). It should also allow the identification of multiple granule, in case the pixel is located in granules overlapping areas.
  • Export all the results generated by ‘Wind Field Estimation’ operator in the image output file (as already suggested in this post: NullPointerException in Wind Field Estimation). At present resulting wind vectors are stored in the folder ‘./.snap/log/’ that makes the access to the results not straightforward.

Thank you for the big effort in the development of SNAP!



Federico, thanks for your suggestions. I’ll create issues to track each of them. Some of these are already known issues which will likely only get address in the coming year.

Dear SNAP developers,
another function that should be very useful to implement in SNAP is a mask operator that applies a mask band (raster) to all the bands in a product. This should be something like the “Apply mask” function available in ENVI software.


1 Like

What do you mean by applying the mask. Setting values to NaN?
This is already available (somehow). The operator is named Land-Sea-Mask. There you can, beside masking land/water, use an existing geometry to mask out band data.
The mask can be imported by using the Import-Vector.
But, I think, this can be improved.

Yes, I mean set raster values to NaN for all the raster stack bands.
I know about the possibility of use an external vector geometry to mask rasters using ‘Land/Sea mask’ operator, but it is not straightforward. I do suggest to include the possibility to directly use binary raster layers to mask raster stacks, without passing by the mask manager to generate ROI expressions.
Changing the name of masking operator would probably make it more easily located by users. At present the operator ‘Mask Area…’ makes you confused.

I agree with you.
Another option of masking data could be by setting the valid pixel expression to e.g. “mask != 0”.
But also this can not be done for all bands at once.

I also have a few more improvements that would, in my opinion, make the SNAP UI friendlier and easier to use.

  • Make “Close product” work when multiple products are selected. It’s useful after e.g. opening the wrong set of 16 files by mistake.
  • Make the “Range mask” feature work with singleton intervals. The window displays “<=”, but does not accept equal low and high values: “The specified maximum is less or equal to the minimum”. It’s sometimes useful to single out “special” values like 0.
  • Make the message boxes copy their text to clipboard when pressing CTRL+C or ⌘+C. This makes searching for and reporting issues easier; for example, I had to manually type the message in the previous item.
  • Make the ESC key close modal windows. For example, see the “New Range Mask” window.
  • Make it more clear that the Description column of the Mask Manager tool window is not the mask definition, as editing it has no effect.
  • Enable something by default in the “New Logical Band Maths Expression”. It’s not useful to have an empty data source list when opening the window.
  • Add access keys (e.g. “&File” where “F” is underlined and pressing it selects the option) throughout the SNAP menus.
  • Double-check that modal windows are properly owned. On Windows, at least, they behave weirdly: they get a new taskbar entry and show in ALT+TAB, but changing to the main SNAP window does not work anymore. This makes task switching uncomfortable.
  • Reconsider the associated icon sizes for a couple of menu options like “GraphBuilder” and “Batch Processing”.
  • The “Tools” menu behaves strangely at times with items showing up in random order and unfortunate item heights.
  • Add a way to compare band values across images in different product. It’s sometimes useful to compare certain pixels across different images and it’s usually a pixel hunting game with high-resolution images. It’s unfortunate that even after adding a “next tab” keyboard shortcut, the “Pixel Info” tool window displays information for the previous tab until moving the mouse cursor. The “Synchronise Image Cursors” option is not useful here.
  • Fix the window title getting out of sync with the current contents of the image view. It’s extremely misleading.
  • Add an “Open log directory” option under the Help menu.
  • Make cancelling operators less scary (the “Type: OperatorException”, “Message: Operation canceled”, “Unexpected Exception” warnings). If the cancel button is there, pressing should not be an unexpected event.

Fixed in next version (SNAP-435)

Considerd as issue SNAP-569

Nice idea. (SNAP-570)

We will consider along with the key binding issue

Yes, this happen to several users (SNAP-571).

Written to SNAP-577

Yep! (SNAP-572)

Noted! (SNAP-573)

The menu item height is right after start very small. But this corrects itself after 1-2 seconds. And this is for all menus. Or are you referring to something else?
That it is in random order I haven’t seen yet.

Currently the only way to do this is to collocated the two products. It is true, an on-the-fly comparison is really missing.
Added as an issue.

This is already tracked in our issue tracker (SNAP-349).

Something I also always wanted.

Filed as issue.

Thanks a lot for the valuable feedback. I can’t promise that we solve all the things soon but we will definitely consider them for the further development.

1 Like

That’s it, just a minor visual glitch.

Perhaps it’s fixed now. It could have been related to the plug-in initialization order. I don’t know if the start-up is (or should be) deterministic. My hunch is that the part that touches the UI should be.

Thank you for considering them. Most of them have easy workarounds or are just polish issues. For me, the worse are the window title one and not being able to check pixel values in multiple images.

  • Open multiple bands at once from a product

Can you explain this in more detail. Actually it is possible to open multiple bands of a product.

Of course, sorry for not being clear. Multiple bands at once; consider this case:

Yes, this makes sense. I’ve noted this.

Also, this doesn’t make much sense (on a SNAP 5.0 built from the master branch, I believe):

Three bands are selected and choosing “Close 3 Products” has no effect. But if a single band is selected, choosing “Close Product” closes the whole product.


java.lang.ClassCastException: org.esa.snap.core.datamodel.Band cannot be cast to org.esa.snap.core.datamodel.Product
        at org.esa.snap.rcp.actions.file.CloseProductAction.closeProducts(

You are right. This is a bug on the current master. I’ve updated it just now. Do you like to check it?

Well, I’m afraid I can’t test it, as I don’t have the prerequisites and I’m not familiar with SNAP’s build system.

Hi! I’m trying to mask out cloudy area using a mask that I defined manually using geometry. As I read I should be able to do that using Land/sea mask. But that is not working for me. I was expecting that the masked values would be overwriteen to NaN. But the result is not that, as you can see:

Image before processing-

Image after processing-

Can you help me with this? I read that using band math could work but I’m not finding the right expression either… The area I work with is really cloudy and this is an important step for me.

Thank you

is this an option:

1 Like

Yes, you are right. Something is wrong with it. Also the values are screwed up.
What might work for is something like the following.
Draw the geometry and afterwards use it in the valid expression of the bands.
Right-click on the band and select Properties.
Probably the name of your geometry is ‘geometry’. So you can use the following expression: not geometry

1 Like

Many thanks to both!! It Works!! I just tried the option “not geometry” in valid pixel value . Much easier and simple to do! :slight_smile: