Finding bounds of pixels in an S3 image, to determine % water coverage within a pixel

Hi there,

In my analysis of sentinel 3 images, I’m often working with inland water pixels which are on the edge of lakes. This obviously causes issues with edge effects, whereby edge pixels will contain some signal from the fresh water and some signal from the land.

To try and overcome this issue, I’ve gathered shape data that shows the exact shape of lakes. If I also knew the bounds of a pixel, I could use these two data to determine the % of water coverage within that pixel. (In case I’m using the wrong terminology, by ‘bounds’ of a pixel I mean the lat/long of each corner of the pixel).

Has anyone tried finding the bounds of satellite pixels in this way, or alternatively tried any other way of dealing with edge effects? I thought about applying a buffer to the lake data I mentioned above, in order to remove any pixel within a certain distance of the lake edge, but suspect that this approach might remove too many data points in my analysis.

Cheers for the help,

Edit: I’ve realised that I can use diagonally adjacent pixel positions to determine the bounds of a pixel. Could someone confirm that the lat/long of a pixel in sentinel-3 data corresponds to the center of the pixel?


You can use the the Fractional Land/Water Mask to determine the water/land fraction of a pixel. It is located in the menu at Raster / Masks.
The highest resolution of the underlaying mask is 50m.
So you can specify a subsampling value for the pixels up to 6. Higher values do not make much sense.
But maybe already 3 is sufficient for you application.
With 3 you split each pixel in 9 sub-pixels and for each the land/water value will be looked up. In the end you get a relative value between 0 and 100 specifying the fraction.
In the background of the image below you see a result of this operation.

If you use pixel-based geo-coding you also need to enable that fractional accuracy.

This is the out of the box solution in SNAP.
But you could also use a Sentinel-2 scene, create a binary land/water mask based on the 10m resolution and then collocate this with your S3 scene. During the collocation the S2 will be resampled and interpolated. If you select e.g. bi-linear interpolation instead of nearest neighbour the values will be averaged. Which should also give a good fractional land/water mask.

Your approach is also possible but not with the existing tools. It would be necessary to implement this as a new function.


Thanks for the help marpet, I’ll experiment with the Fractional Land/Water Mask tool now.

As a vaguely related question; could you confirm that the lat/long of a pixel correspond to the centre of that pixel?

Thanks again

Yes, by default the lat/lon values correspond to the pixel centre.

1 Like