Hi Vero,
i.sentinel.mask doesn't retrieve the maximum from the xml file but computes the 
value from the image using r.univar. The error could be due to the 
computational region..has the region been set correctly?
Can you send the MTD_TL.xml file? I can download the image and make some tests.

Roberta

________________________________
Da: grass-user <[email protected]> per conto di Veronica 
Andreo <[email protected]>
Inviato: martedì 28 gennaio 2020 19:57
A: grass-user <[email protected]>
Oggetto: [GRASS-user] error in i.sentinel.mask: nan values in xml file

Hello

I try to use i.sentinel.mask but I get the following error:

i.sentinel.mask blue=$blue green=$green red=$red swir11=$swir11 nir=$nir 
swir12=$swir12 nir8a=$nir8a cloud_mask=cloud shadow_mask=shadow mtd_file=`find 
$out_dir -name 'MTD_TL.xml'`

ADVERTENCIA: All subsequent operations will be limited to the current
             computational region
ADVERTENCIA: Any rescale factor has been applied
--- Start computing maximum values of bands ---
T21JYM_20200126T134201_B02_10m
T21JYM_20200126T134201_B03_10m
T21JYM_20200126T134201_B04_10m
T21JYM_20200126T134201_B08_10m
T21JYM_20200126T134201_B8A_20m
T21JYM_20200126T134201_B11_20m
T21JYM_20200126T134201_B12_20m
--- Computed maximum value: dict_values([nan, nan, nan, nan, nan, nan,
nan]) ---
--- Statistics have been computed! ---
--- Start clouds detection procedure ---
--- Computing cloud mask... ---
Mapa no válido <nan>
Parse error
ERROR: error al parsear
ERROR: An error occurred while running r.mapcalc with expression:
       cloud_def82115 = if((((T21JYM_20200126T134201_B02_10m > (0.08*nan))
       && (T21JYM_20200126T134201_B03_10m > (0.08*nan)) &&
       (T21JYM_20200126T134201_B04_10m > (0.08*nan))) == 1) &&
       (((T21JYM_20200126T134201_B04_10m < ((0.08*nan)*1.5)) &&
       (T21JYM_20200126T134201_B04_10m >
       T21JYM_20200126T134201_B12_20m*1.3)) == 0) &&
       (((T21JYM_20200126T134201_B11_20m < (0.1*nan)) &&
       (T21JYM_20200126T134201_B12_20m < (0.1*nan))) == 0) &&
       ((if(T21JYM_20200126T134201_B8A_20m ==
       max(T21JYM_20200126T134201_B8A_20m, 2 *
       T21JYM_20200126T134201_B02_10m, 2 * T21JYM_20200126T134201_B03_10m,
       2 * T21JYM_20200126T134201_B04_10m))) == 0) &&
       ((T21JYM_20200126T134201_B02_10m > 0.2) == 1), 0, null())

I checked the xml file and there are a lot of nan's yes, but there are also 
real values. Why doesn't the max function in this part: 
https://github.com/OSGeo/grass-addons/blob/master/grass7/imagery/i.sentinel/i.sentinel.mask/i.sentinel.mask.py#L321
 recognize them? Isn't there a way to avoid nan while computing max?

Thanks much in advance
Vero

ps: I can provide the xml if needed.
_______________________________________________
grass-user mailing list
[email protected]
https://lists.osgeo.org/mailman/listinfo/grass-user

Reply via email to