Hi Robi,
So I found that i.sentinel.import fails for latlong locations. I moved to UTM as in the original data and all fine. I reached the cloud masking step, and I find a different problem now.
Here’s the command and an extract of the output:
GRASS 7.9.dev (dengue_cba):~/webgis > i.sentinel.mask -s \
blue=$blue
green=$green
red=$red
swir11=$swir11
nir=$nir
swir12=$swir12
nir8a=$nir8a
cloud_raster=cloud
shadow_raster=shadow
mtd_file=find $out_dir -name 'MTD_TL.xml'
scale_fac=10000
WARNING: All subsequent operations will be limited to the current
computational region
— Start rescaling bands —
T21JYM_20200126T134201_B02_10m
100%
T21JYM_20200126T134201_B03_10m
100%
T21JYM_20200126T134201_B04_10m
100%
T21JYM_20200126T134201_B08_10m
100%
T21JYM_20200126T134201_B8A_20m
100%
T21JYM_20200126T134201_B11_20m
100%
T21JYM_20200126T134201_B12_20m
100%
T21JYM_20200126T134201_B02_10m_double,T21JYM_20200126T134201_B03_10m_double,T21JYM_20200126T134201_B04_10m_double,T21JYM_20200126T134201_B08_10m_double,T21JYM_20200126T134201_B8A_20m_double,T21JYM_20200126T134201_B11_20m_double,T21JYM_20200126T134201_B12_20m_double
— All bands have been rescaled —
— Start computing maximum values of bands —
T21JYM_20200126T134201_B02_10m_double
T21JYM_20200126T134201_B03_10m_double
T21JYM_20200126T134201_B04_10m_double
T21JYM_20200126T134201_B08_10m_double
T21JYM_20200126T134201_B8A_20m_double
T21JYM_20200126T134201_B11_20m_double
T21JYM_20200126T134201_B12_20m_double
— Computed maximum value: dict_values([0.9352, 1.168, 1.1056, 1.0704,
0.7023, 0.9381, 1.3597]) —
— Statistics have been computed! —
— Start clouds detection procedure —
— Computing cloud mask… —
100%
— Converting raster cloud mask into vector map —
Extracting areas…
100%
Writing areas…
100%
Building topology for vector map cloud_v_5922@carla…
Registering primitives…
Building areas…
100%
Attaching islands…
100%
Attaching centroids…
100%
r.to.vect complete.
— Cleaning geometries —
[…]
— Start removing misclassification from the shadow mask —
— Data preparation… —
WARNING: Values in column will be overwritten
WARNING: Number of centroids exceeds number of areas: 24 > 22
WARNING: Number of duplicate centroids: 2
WARNING: Values in column will be overwritten
WARNING: Values in column will be overwritten
— Reading mean sun zenith and azimuth from metadata file to compute
clouds shift —
— the mean sun Zenith is: 28.732 deg —
— the mean sun Azimuth is: 82.028 deg —
— Start computing the east and north clouds shift at steps of 100m of
clouds height—
Traceback (most recent call last):
File “/home/veroandreo/.grass7/addons/scripts/i.sentinel.mask”, line 638, in
main()
File “/home/veroandreo/.grass7/addons/scripts/i.sentinel.mask”, line 561, in main
quiet=True, stderr=subprocess.DEVNULL)
File “/home/veroandreo/software/grass79-dev/dist.x86_64-pc-linux-gnu/etc/python/grass/script/core.py”, line 499, in run_command
return handle_errors(returncode, result=None, args=args, kwargs=kwargs)
File “/home/veroandreo/software/grass79-dev/dist.x86_64-pc-linux-gnu/etc/python/grass/script/core.py”, line 392, in handle_errors
returncode=returncode)
grass.exceptions.CalledModuleError: Module run v.overlay v.overlay --o --q ainput=addcat_5922 binput=cl_shift_5922 operator=and output=overlay_5922 ended with error
Process ended with non-zero return code 1. See errors in the (error) output.
Where is this error output to inspect?
This is the UUID in case you want to test: 541021f8-63f5-4e9d-ba28-425c4c8451df
Thanks much in advance
Vero
ps: I use grass-dev with python 3.7.4 (because of the ctypes issue)
El mié., 29 ene. 2020 a las 14:53, Veronica Andreo (<veroandreo@gmail.com>) escribió:
Hi Robi,
My bad, region was wrong… anyway, trying to replicate from the beginning I see that i.sentinel.import with -r is importing empty maps. However, the jp2 files have data. I can visualize them in QGIS. I’ll report in a different thread. Once I can figure it out and reach this point again, I’ll report back to you. Thanks for the clarification!
Cheers
Vero
El mié., 29 ene. 2020 a las 9:08, roberta fagandini (<robifagandini@hotmail.it>) escribió:
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 <grass-user-bounces@lists.osgeo.org> per conto di Veronica Andreo <veroandreo@gmail.com>
Inviato: martedì 28 gennaio 2020 19:57
A: grass-user <grass-user@lists.osgeo.org>
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
Parse error
ERROR: error al parsear
ERROR: An error occurred while running r.mapcalc with expression:
cloud_def82115 = if((((T21JYM_20200126T134201_B02_10m > (0.08nan))
&& (T21JYM_20200126T134201_B03_10m > (0.08nan)) &&
(T21JYM_20200126T134201_B04_10m > (0.08nan))) == 1) &&
(((T21JYM_20200126T134201_B04_10m < ((0.08nan)1.5)) &&
(T21JYM_20200126T134201_B04_10m >
T21JYM_20200126T134201_B12_20m1.3)) == 0) &&
(((T21JYM_20200126T134201_B11_20m < (0.1nan)) &&
(T21JYM_20200126T134201_B12_20m < (0.1nan))) == 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.