As a next step to my previous question "How to calculate where raster a is not equal to raster b?", I now want to sieve (using QGIS -> Raster -> Analysis -> Sieve, or gdal_sieve
in the shell) a raster which consists of the values 1
and NaN
. The problem is: no matter what parameters I tell gdal_sieve
to use, it still returns the original raster, nothing happens.
Above you can see the raster (black pixels) that I want to sieve. Actually, this screenshot was taken immediately after the sieve algorithm ran through. You will find that nothing was sieved.
I guess this is because gdal_sieve cannot handle NaN
, so the nearest possible value always is 1
again, if it skips the NaN
s.
Because I want to use Zonal Statistics with this raster and some polygons afterwards, it is necessary that this raster consists just of 1
and NaN
, because I am interested in the total count of pixels with value 1
in a polygon. If I would use a raster with, say 0
and 1
, it would always accumulate these two in my count column.
Does anyone have an idea how to workaround this?
Answer
The code from Stefans comment works for me:
gdal_sieve.py -st 8 -8 -nomask S2_2015_AOI_Bebaut.tif -of "GTIFF" sieved.tif
The only difference I can see between the GUI version in QGIS and this bash command is the -nomask
flag, which cannot be set in QGIS. This seems to do the trick. The official GDAL doc describes its function as follows:
Do not use the default validity mask for the input band (such as nodata, or alpha masks).
I cannot fully understand what this means, but as long as it works, I'm fine with it.
No comments:
Post a Comment