3

To be fully interpretable, the NDVI has to be computed based on "top-of-canopy" reflectance values. By definition, reflectance values are positive numbers between 0 and 1 (which are often multiplied by a power of 10 for storage issue (better to store 8 or 16 bit integer than float). Therefore, in theory, the only case where you could get an invalid ...


3

It is always preferable to use bottom of atmosphere reflectance (BOA) products (e.g. L2A) instead of top of atmosphere (TOA) reflectance products (e.g. L1C). For example, the image below shows a L1C scene on the left with significant scattering and a L2A scene on the right that has been corrected to BOA reflectance. Using BOA reflectance products will allow ...


3

The GeoTIFF format is an OGC standard that encapsulates the coordinate reference system and crs transform (what would be in a "world" file alongside a standard tiff, jpeg, or png image) in tiff tags in the image itself among other relevant information. This means no sidecar files are required and everything the consuming system needs to know about the image ...


2

You should compute the NDWI first then georeference it. This is because NDWI is a ratio, and the linear combination of ratio is not the same as the ratio of the linear combination. You therefore reduce the risk of having artefacts by resampling after computing the NDWI (the resampling will smooth the NDWI a little bit, except if you use a nearest neighbour ...


1

One thing you can do is to unmask the image using a proxy value before the expression and then catch that proxy value: function currentHS_function(image){ var proxy = -999 image = image.unmask(proxy) var currentHS = image.expression( "(b('current') == proxy) ? 0.0" + ": (b('current') < 0.13) ? 1.0" + ": (b('current') > ...


1

NDVI=0 is a valid value, but If you got NAN value there is probably pixles that couldn't get a valid value because they were NAN in the beginning (NAN=Not A Number). Anyway when you got NAN that DOES NOT mean it is 0.


1

The following script should do the same thing as you've done, except it relies on .map() instead of .iterate(), which improves parallelization. However, it uses reduceRegion instead of reduceRegions so it may be a wash in terms of time. I was reluctant to use reduceRegions since it looks like you have points that span years and months that you extract band ...


1

The new Sentinelsat v0.14 has been just been released with some bug fixes and esp. improved handling of Long-Term Archive (LTA) data search and download. It is available from here: https://github.com/sentinelsat/sentinelsat/releases/tag/v0.14


Only top voted, non community-wiki answers of a minimum length are eligible