I have two binary rasters with values
254. I want to generate a new raster that consists of the pixels that have value
NaN in raster A and
254 in raster B and vice versa - those should be
1, the rest should be
I want to use gdal_calc.py in a bash script for that. My code snippet looks like this:
gdal_calc.py -A S2_2015_AOI_NDBI_bin.tif -B S2_2015_AOI_NDSI_bin.tif --outfile=S2_2015_AOI_diff_auto.tif --calc="1*(A!=B)" --NoDataValue=0
But all it returns is a new raster with
I also tried
--calc="1*(logical_or(logical_and(A==254, not_equal(B, 254)), logical_and(B==254, not_equal(A, 254))))", and several other combinations I could come up with. Nothing worked yet.
Strange thing is, it works flawlessly in the QGIS Raster Calculator with the formula
("S2_2015_AOI_NDBI_bin@1" != "S2_2015_AOI_NDSI_bin@1") = 1, but I want this to be automated. Also, this calculator throws
0 instead of
NaN, which is not suitable for further processing as I plan it.
The two input rasters were previously generated by:
gdal_calc.py -A S2_2015_AOI_NDBI.tif --outfile=S2_2015_AOI_NDBI_bin.tif --calc="254*(A>-0.15)" --NoDataValue=0
gdal_calc.py -A S2_2015_AOI_NDSI.tif --outfile=S2_2015_AOI_NDSI_bin.tif --calc="254*(A>0.4)" --NoDataValue=0`
The rasters all have the same CRS. I'm running GDAL v. 1.11.3, it's a bit outdated, might this be the problem?
I solved the problem by skipping the step of creating the "binary" input rasters with
NaN values (see question's second and third code blocks). The code looks like this now:
gdal_calc.py -A S2_2015_AOI_NDBI.tif -B S2_2015_AOI_NDSI.tif --outfile=out.tif --calc="1*(logical_and(A>-0.15, B<0.4))" --NoDataValue=0
This delivers the result I wanted.
While this is a suitable workaround for me personally, it still does not answer the original question.