Thanks for your question. This is quite a difficult concept to answer, but, to put it simply when you make a request, a bounding box of a geometry is requested and the pixels not in the geometry but within the bounding box are labelled no data. Therefore:
sampleCount = width * height (always the bounding box of the request, be it bbox or geometry that is being requested)
noDataCount = sampleCount - no. of pixels in the geometry
I hope this answers your question. Let me know if you need a more detailed explanation and I can run through an example of the concept for you.
For my use case, daily statistics from S2L2A data with custom noData mask derived from CLM and SLC, I’m interested also in the daily number of no-data pixel within the geometry.
Getting that value would be nice improvement to the API.
Is there currently any other way to get that information than to assume that in the time-series the date when noDataCount gets it’s minimum value is completely cloud free and derive the total number of pixels within the geometry accordingly?
no. of pixels outside the geometry = min(noDataCount)
number of no-data-pixels in geometry = noDataCount - min(nodataCount)
I had the same issue. I’m fetching Sentinel-1 and Sentienl-2 stats for parcels. My current workaround is to use sampleCount and noDataCount from Sentinel-1 stats to determine the number of no-data pixels within the geometry to get Sentinel-2 cloud coverage within the parcel.
Is there a more robust way to determine the number of pixels that the geometry corresponds to?
The inability to determine where the dataMask comes from is a known issue and we will upgrade the dataMask to provide the information indicating if the nodata comes from the lack of observations v. from the clipping of geometry.
However, we don’t have an ETA for the upgrade. Sorry for the inconvenience.