gdal_calc raster calculcator : "any" syntax

I'm trying to combine 2 raster layers using gdal_calc in order to use them in QGIS 3.8.
One of the condition that has to be met could be translated as "if the value of raster A is 1 and the value of raster B is either 10 or 11 or... or 800 (I've got 20 different values or so), then keep the value of raster B".

I managed to achieve what I wanted using several logical_and :

`logical_and(A==1,B==10)*B + logical_and(A==1,B==11)*B + ... + logical_and(A==1,B==800)*B`

But it's tedious to write and hard to read for other users. Is there a way to get the same result using a more compact syntax ? I tried using

`logical_and(A==1,any(B==[1,10,11,12,33,35,41,42,43,44,51,52,53,222,223,224,602,700,702,710,800]))*B` and `logical_and(A==1,B==any([1,10,11,12,33,35,41,42,43,44,51,52,53,222,223,224,602,700,702,710,800]))*B`

But neither of these gave me the same result as my previous lengthy expression...

a more compact writing could be

``````B*(A==1)*((B==10)+(B==11)+...+(B==800))
``````

but this would still be quite long.

For me, any is not the good command but you could use isin (not tested)

``````B*(A==1)*(isin(B,[10,11,...,800]))
``````
• Just tried it, and it works! Thank you. Would you, by chance, have any good resource suggestions to learn the commands that one can use with gdal_calc? I used scipy.org, but it's rather difficult for me to figure out what I need using this website, considering I'm not familiar with the syntax and sometimes have no idea about the name of the command I'm looking for... Commented Nov 4, 2019 at 15:21
• I am more familiar with otbcli_BandMath orfeo-toolbox.org/CookBook/Applications/app_BandMath.html , =i suggest that you have a look at it. Otherwise, you should refer to the numpy help. Commented Nov 4, 2019 at 16:21
• I'll have look at it. Thanks ! Commented Nov 5, 2019 at 9:09