I have an SLSTR S3A SL 1 RBT product with its associated xfdumanifest.xml.
The product directory contains several SX_radiance_XX nc files as well as SX_BT_XX, geodetic, cartesian, indices, and so on…
When opening it with SNAP Desktop, it asks me for which Sentinel3 Product reader should I use (between sentinel3, SLSTR L1B 1km or SLSTR L1B 500 m).
When using an XML Graph with GPT (java), specifying xfdumanifest.xml as input source of the “ReadOp”, it seems automatically taking the SlstrLevel1B1kmProductReader. The next subset operation in the graph doesn’t find the S1_radiance_an bandName I have specified.
Indeed, taking a look at the code of the associated Factory the getFileNames method seems simply returning files ending with in.nc, io.nc, tx.nc, tn.nc and to.nc whilst the file I need is S1_radiance_an.nc.
The SlstrLevel1B500mProductReader doesn’t override that getFileNames method so the one from SlstrLevel1ProductFactory is used, returning all I need instead.
So my questions are:
- What is the better way to deal with an xfdumanifest containing both 1km and 500m resolutions datasets?
- Using a 500m reader would allows me also getting the 1km datasets?
For the moment, I have removed the 1km readerPlugin entry from the META-INF/Services/ plugin implementations list so it will take the 500m one.
Any other additional clarification on the topic would be very helpful.
Thanks a lot.
the 1km reader will cause that all bands within the product have a resolution of 1000x1000m. As we decided not to perform any automated downsampling, bands that are originally of a 500500m resolution are omitted. That’s why you couldn’t find the S1_radiance_an band. When you use the 500m-reader, a Nearest Neighbour interpolation is performed on bands of a native 10001000m resolution, so all bands will be included.
Which one is the best reader depends on your purpose. When you require the 500*500m bands you should either use the 500m-reader or the reader in native resolutions. Currently, many operators in SNAP expect all bands to be of the same size and resolution, so if you want to use (at least) one, it is a good idea to use the 500m-reader. Note that when you use a graph, you can pass an additional parameter formatName to specify which reader shall be used. Here is an example call:
< node id=“read1Id”>
< operator >Read< /operator >
< parameters >
< file >path/to/your/product/file< /file >
< formatName >Sen3_SLSTRL1B_500m< /formatName >
< /parameters >
< /node >
Otherwise, the reader choice is random so you couldn’t rely on that it is always the same reader.
Also note that you can first use the native resolutions reader to read the product and then use the newly added resampling operator (located in SNAP Desktop in Raster->Geometric Operations->Resampling) to bring all bands to the same grid, e.g., in case you want to use another interpolation method.
Hope this helps.
thanks for the clarifications.
I didn’t notice the formatName parameter in the read operator: very helpful suggestion so I can use 2 different readers for 2 different subsets of resolutions (1km vs 500m).
It really helps.