How to create a mosaic of S3 LST products in SNAP

Is it possible to create a mosaic of SLT products(level2 of SLSTR data) in SNAP? I have tried with the available mosaicing operator via GUI but I get some error and it is not possible then. I have to say that my SNAP is the 5.0 , what about the 6.0 ? otherwise is there an alternative ?

Yes, this is possible. At least with SNAP 6. I just did it. What kind of error do you get?

I am going to reply soon, I had some busy days, but I really need your help on that :slight_smile: Thanks!

Hi @marpet and @TonioF,
which conditions did you used in order to filter out pixels flagged as clouds in either one of the 2 images and therefore get a cloudless mosaic of the 2 data?
That would be a very useful tool,
Thanks a lot for the hint,
Luca

With the expression ‘cloud_in == 0’ you will filter out everything flagged as cloud.

Thanks, I will try…
in the case I mosaic 3 images with a cloudless overlapping area, how the final pixel value will be assigned? is there a possibility to tell the mosaicking algorithm to assign “Max value” or “Mean value” or other parameters?
thanks

For overlapping areas, the final pixel is a weighted average of pixels from the source images. There is no user option to change this.

Good morning. Actually I have tried again to obtain a mosaic of two adiacent LST products but it keeps generating the same error that is defined as follows: java.lang.IllegalArgumentException:Value for ‘North bound’ is out of range [-90,90]. I see that the two products are not shown in the world view and also, I can not select the LST band from the products to get the mosaic. What could be the problem? It is of course SNAP 6.0 , including the recent internal updates and the LST are from S3B but I had the same issue with S3A. Hope there will be a good solution @marpet. Thanks!

This is the error report

        com.bc.ceres.binding.ValidationException: Value for 'North bound' is out of range [-90,90].
	at com.bc.ceres.binding.validators.IntervalValidator.validateValue(IntervalValidator.java:41)
	at com.bc.ceres.binding.validators.MultiValidator.validateValue(MultiValidator.java:52)
	at com.bc.ceres.binding.Property.validate(Property.java:270)
	at com.bc.ceres.binding.Property.setValue(Property.java:172)
	at com.bc.ceres.binding.PropertyContainer.setValue(PropertyContainer.java:297)
Caused: java.lang.IllegalArgumentException: Value for 'North bound' is out of range [-90,90].
	at com.bc.ceres.binding.PropertyContainer.setValue(PropertyContainer.java:299)
	at org.esa.snap.core.gpf.ui.mosaic.MosaicForm.setCardinalBounds(MosaicForm.java:67)
	at org.esa.snap.core.gpf.ui.mosaic.MosaicFormModel.updateRegionSelectableMapBounds(MosaicFormModel.java:175)
	at org.esa.snap.core.gpf.ui.mosaic.MosaicFormModel.setSourceProducts(MosaicFormModel.java:143)
	at org.esa.snap.core.gpf.ui.mosaic.MosaicIOPanel$3.doInBackground(MosaicIOPanel.java:143)
	at javax.swing.SwingWorker$1.call(Unknown Source)
	at java.util.concurrent.FutureTask.run(Unknown Source)
	at javax.swing.SwingWorker.run(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Caused: java.util.concurrent.ExecutionException
	at java.util.concurrent.FutureTask.report(Unknown Source)
	at java.util.concurrent.FutureTask.get(Unknown Source)
	at javax.swing.SwingWorker.get(Unknown Source)
[catch] at org.esa.snap.core.gpf.ui.mosaic.MosaicIOPanel$3.done(MosaicIOPanel.java:150)
	at javax.swing.SwingWorker$5.run(Unknown Source)
	at javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.run(Unknown Source)
	at sun.swing.AccumulativeRunnable.run(Unknown Source)
	at javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.actionPerformed(Unknown Source)
	at javax.swing.Timer.fireActionPerformed(Unknown Source)
	at javax.swing.Timer$DoPostEvent.run(Unknown Source)
	at java.awt.event.InvocationEvent.dispatch(Unknown Source)
	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.awt.EventQueue.access$500(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:159)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)

After a quick look, it seems it is just a GUI issue.The mosaic should work, if you specify the bounds manually.

Yes, it works for me when I set the mosaic bounds manually. It is just a GUI error. However it is not correct that the error is shown. In certain situations a NaN value is retrieved for latitude/longitude. And this is not in the valid value range.

Will be fixed with next update.

Oh this useful to know, at least I am sure it is not coming from a mistake by me or anything else. I will try again following your tip! thanks!

yes, it really works with the manual tip!! Does the problem could come out if I did the mosaic via python/command line?
I also guess I should pay attention to it also if I want to create a mosaic with other L2 products of S3, is it right?

The problem does not occur on the command line or with python. Only in the GUI the bounds are automatically updated.
But yes, the problem can also happen for other products not only for Sentinel-3.

1 Like

OK, really thanks!!!