Land-Water differenciation


Hi, I have a task in which I need to difference between water layers and land during a period of time, to identify when and where parcels are being flooded from either heavy rains or intentionally (rice fields) during dry periods. I have been trying with NDWI but it is not fully accurate because when the water layer is very thin, it is now so clear to difference with non-flooded surfaces. See the following image, where in the right side there is a resevoir and in the center, some agricultural fields which I know that day had a thin water layer and with NDWI are not shown in blue:

Other combinations I’ve been checking is the Land/water:
Also, I’ve tried with the Index Stack, (NDVI NDWI NDSI)
With these 2 options, some of the parcels appear in a highlighted color, but I am not sure what would be the most appropiate combination for this task.
Can anybody give some advice or some tips based on similar experiences?? Thanks in advance!

(edited by moderator to remove irrelevant links)


It’s not an easy solution as flooded parcels are usually a mixture of vegetation and water.
Using moisture index might help (e.g. where it is >0). Or Sentinel-1 data, VV.
I was playing with it a week ago. Check some images here:

(note that the link above will probably go away in a couple of weeks).
Inside you will also find Plattsmouth.json file, which is a set of Pins, which you can import in EO Browser to get direct insight (login to EO Browser, go to Pins and use Import pins).
I hope this helps.


Thanks a lot!! that can really help. What I am still struggling a bit is to get the index when I download the images in .tiff and open them in my desktop GIS. Instead of getting a pixel value to get the index as you said, to see where it is >0, I get the 3 bands value for each pixel. Maybe is very primary question but, how can it be calculated correctly? I tried using the raster calculator adding the 3 bands and then dividing by 3, but I’m afraid is not the right procedure…
Thanks a lot for your help!


I suggest you take a look at this FAQ (just modify it for your own index)


I’ve been testing this with moisture index, NDVI and NDWI. For determining parcels covered with a water layer, looks like NDWI values < 0 show clearly the parcels with a certain water layer. I’ve been checking comparing with different true image files and even when I put the threshold in values <-0.07 , it clearly show the difference between parcels covered by a thin water layer (e.g. rice fileds) and parcels which may have high moisture level but there is no water layer. If I use moisture index values, where it is >0, it shows parcels with water layer but also wet fields (e.g. irrigated fields in summer period, but not flooded).

It is actually not easy at all because is hard to differenciate when parcels have a mixture of vegetation and water.
Thanks a lot for your help. I will gather some images to show some results very soon!


yes, I have the some question, Did you find in any solution to get 1 band image with actual NDVI values?


See this FAQ, which can be applied for any index:



One option is to use the Swntinel-Hub plugin for QGIS. I would do the following:

1.- Create a layer in wms configurator with the script default: NDWI (Normalized Difference Water Index) - INDEX. Important: use Sentinel L2A without applying atmospheric correction (they are already corrected) or Sentinel L1C applying atmospheric correction

2- Using the sentinel-hub plugin, import the layer using the exact day option and the% of clouds that you think necessary

3.- In the download option in image type, use 32-bit Float Tiff. The resulting image contains values.

Thank you Alex and Grega for your contributions. Very interesting and useful!

1 Like

Thanks a lot @juangdm.ager the problem with sentinel hub plugin for QGIS is that a sentinel hub instance id is necessary to get data. I’ve checked my account and says it has exired and need to upgrade. Of course is an interesting service, but at this moment this is the only task I’d need for the service, so it is not worth to pay for just one task. Perhaps, if in the future I need more frequent access and data, would be different :slight_smile:

See also @gmilcinski one example of the results of one day in which I used NDWI for determining flooded parcels, using a threshold of -0.07 (pixels >-0.07 are considered flooded areas). As you can see, looks very precise. Some parcels in the center of the image look partially flooded, and they’re also identified. So far, so good!. I did the same with other images, and not always is so accurate. So I am also checking moisture index images to double-check. E.g.: If a pixel is considered flooded according to NDWI procedure but the moisture index says is not wet, then, I check the values. The result is that I need to slightly modify the threshold, moving in a range between -0.07 to 0.07. I am still in the process, but results look quite accurate.

Thanks a lot and more news in the coming future :wink:



Thank you very much Alex and Grega for your very interesting contributions.