[GRASS-user] R: R: R: NULL values as output of i.atcorr

Veronica Andreo veroandreo at gmail.com
Fri Jan 28 05:50:22 PST 2022


Dear Ilaria,

If you use Level 2A data, you do not need to do atmospheric correction. The
products are already corrected and the only thing you need to do, if you
want floating point data, is to rescale reflectances with the equation
indicated by Moritz. Optionally removing the overshoots by setting a
ceiling for values > 10000, as theoretically reflectance range is [0,1].

If, instead, you are using a Level 1C product, then yes, atmospheric
correction is needed, as those products are top of atmosphere (TOA)
reflectance. For Sentinel data you have different options. Either you use
i.atcorr or i.sentinel.preproc. If you do not have a visibility layer, you
need an AOD value (or file) from a station within the scene ideally and of
the ~date when the image was taken. If you can read some Spanish, I have a
presentation with all the details:
https://gitlab.com/veroandreo/maie-procesamiento/-/blob/taller-grass-online/pdf/03_exercise_processing_s2.pdf.
In any case, i.atcorr manual page shows the process of correcting a S2 L1C
scene step by step.

hth,
Vero

El vie, 28 ene 2022 a las 12:07, Moritz Lennert (<
mlennert at club.worldonline.be>) escribió:

> On 28/01/22 10:55, ilaria.ferrando87 at gmail.com wrote:
> > Thank you Moritz, I will do some research on visibility (aerosol model
> concentration) to put a reasonable value there (any suggestion is
> appreciated, also regarding references to look at).
>
> The man page suggests https://aeronet.gsfc.nasa.gov/.
>
> > How can I transform digital number into radiance/reflectance?
>
> This information should be in the metadata that accompanies the Sentinel
> data. I haven't worked with this data in a couple of years, so don't
> remember.
>
> However, in the doc on
> https://docs.sentinel-hub.com/api/latest/data/sentinel-2-l2a/, you can
> read:
>
> For Sentinel-2 optical data, the relation between DN and REFLECTANCE
> (default unit) is: DN = 10000 * REFLECTANCE.
>
> Moritz
>
> > Thank you very much for your precious help!
> >
> > -----Messaggio originale-----
> > Da: Moritz Lennert <mlennert at club.worldonline.be>
> > Inviato: giovedì 27 gennaio 2022 17:50
> > A: ilaria.ferrando87 at gmail.com; 'Maris Nartiss' <maris.gis at gmail.com>
> > Cc: 'GRASS user list' <grass-user at lists.osgeo.org>
> > Oggetto: Re: R: R: [GRASS-user] NULL values as output of i.atcorr
> >
> > On 27/01/22 14:54, ilaria.ferrando87 at gmail.com wrote:
> >> The output of r.info is the following
> >>
> >> r.info map=immagine at mapset
> >>
> +----------------------------------------------------------------------------+
> >>    | Map:      immagine at mapset    Date: Tue Nov 30 12:51:12 2021    |
> >>    | Mapset:   mapset             Login of Creator: [...]  |
> >>    | Location: WGS84_UTM32
>         |
> >>    | DataBase: C:\Users\[...]\grassdata                      |
> >>    | Title:    immagine
>          |
> >>    | Timestamp: none
>         |
> >>
> |----------------------------------------------------------------------------|
> >>    |
>         |
> >>    |   Type of Map:  raster               Number of Categories: 0
>          |
> >>    |   Data Type:    CELL
>          |
> >>    |   Rows:         10980
>         |
> >>    |   Columns:      10980
>         |
> >>    |   Total Cells:  120560400
>         |
> >>    |        Projection: UTM (zone 32)
>          |
> >>    |            N:    4900020    S:    4790220   Res:    10
>          |
> >>    |            E:     609780    W:     499980   Res:    10
>          |
> >>    |   Range of data:    min = 0  max = 18876
>          |
> >>    |
>         |
> >>    |   Data Description:
>         |
> >>    |    generato da r.in.gdal
>          |
> >>    |
>         |
> >>    |   Comments:
>         |
> >>    |    r.in.gdal -e input="C:\Users\[...]\T32TNP_2020062\   |
> >>    |    2T100559_B04.jp2" output="immagine" memory=300 offset=0
> num_digits=0    |
> >>    |
>         |
> >>
> >> +---------------------------------------------------------------------
> >> -------+
> >
> > This looks to me like the data is in digital number, not in radiance or
> reflectance. You first have to translate it to one or the other before
> feeding it to i.attcor.
> >
> >>
> >> Do you mean the sixth line of the file? From the i.atcorr help it is
> the "mean target elevation above sea level [km]", and it is correct that it
> is negative.
> >> I'm now wondering if the problem can be having put "0" for visibility
> (aerosol model concentration, fifth line). What do you think about it?
> >
> > I am speaking about the value '-0.293' in line 6 (and yes, my bad for
> not paying attention to the value 0 in the line before). The man page
> > states: "If you have an estimate of aerosol optical depth, enter 0 for
> the visibility and in a following line enter the aerosol optical depth at
> 550nm (iaer means 'i' for input and 'aer' for aerosol), for example:"
> > So, if you have 0 on line 5, so line 6 is AOD and not mean target
> elevation above sea level.
> >
> > In this case line 7 is the "mean target elevation above sea level [-km]"
> > with value -1000 :-).
> >
> > Moritz
> >
> >
> >
> >
> >>
> >>
> >> -----Messaggio originale-----
> >> Da: Moritz Lennert <mlennert at club.worldonline.be>
> >> Inviato: giovedì 27 gennaio 2022 14:08
> >> A: ilaria.ferrando87 at gmail.com; 'Maris Nartiss' <maris.gis at gmail.com>
> >> Cc: 'GRASS user list' <grass-user at lists.osgeo.org>
> >> Oggetto: Re: R: [GRASS-user] NULL values as output of i.atcorr
> >>
> >> On 27/01/22 14:01, ilaria.ferrando87 at gmail.com wrote:
> >>> Dear Moritz,
> >>> thank you for your reply.
> >>> I tried with and without the -r flag and the results is the same.
> >>
> >> I reformulate this part of the question then: what exactly is the
> >> content of immagine at mapset ? Please provide the output of
> >>
> >> r.info map=immagine at mapset
> >>
> >>
> >>> Please find attached the parameters of the file 22giugno2020_b4.txt:
> >>>
> >>> 26
> >>> 6 22 17.05 9.68728523 43.75514951
> >>> 2
> >>> 1
> >>> 0
> >>> -0.293
> >>
> >> Are you sure this should be a negative number ? This should be
> visibility in km IIRC.
> >>
> >>> -1000
> >>> 182
> >>
> >>
> >> Moritz
> >>>
> >>> -----Messaggio originale-----
> >>> Da: Moritz Lennert <mlennert at club.worldonline.be>
> >>> Inviato: giovedì 27 gennaio 2022 13:22
> >>> A: Ilaria Ferrando <ilaria.ferrando87 at gmail.com>; Maris Nartiss
> >>> <maris.gis at gmail.com>
> >>> Cc: GRASS user list <grass-user at lists.osgeo.org>
> >>> Oggetto: Re: [GRASS-user] NULL values as output of i.atcorr
> >>>
> >>> On 26/01/22 19:50, Ilaria Ferrando wrote:
> >>>> Dear Māris,
> >>>> Thank you for your reply.
> >>>> Yes, the image is inside the computational region.
> >>>> Any other ideas?
> >>>
> >>>
> >>> 1) Are you sure your input data is reflectance (-r flag used) ?
> >>> 2) Could you provide us with the contents of the 22giugno2020_b4.txt
> file ?
> >>>
> >>> Moritz
> >>>
> >>>>
> >>>> Il mer 26 gen 2022, 19:45 Maris Nartiss <maris.gis at gmail.com
> >>>> <mailto:maris.gis at gmail.com>> ha scritto:
> >>>>
> >>>>        One thing to always check – does your computational region
> contain
> >>>>        data you are analysing? Try to run `g.region rast=immagine`
> before
> >>>>        running i.atcorr.
> >>>>
> >>>>        Māris.
> >>>>
> >>>>        trešd., 2022. g. 26. janv., plkst. 18:13 — lietotājs
> >>>>        <ilaria.ferrando87 at gmail.com <mailto:
> ilaria.ferrando87 at gmail.com>>
> >>>>        rakstīja:
> >>>>         >
> >>>>         > Dear all,
> >>>>         >
> >>>>         > I am having troubles in processing a Sentinel-2 image with
> i.atcorr.
> >>>>         >
> >>>>         > The command I use is the following:
> >>>>         >
> >>>>         > i.atcorr -r -input=immagine at mapset range=0,10000
> >>>>        parameters=C:\...\22giugno2020_b4.txt output=immagine_atcorr
> rescale=0,1
> >>>>         >
> >>>>         > and I obtain this output:
> >>>>         >
> >>>>         > wavelength less than 0.25 micron:
> >>>>         >
> >>>>         > let's take s(l)=s(0.25)
> >>>>         >
> >>>>         > Atmospheric correction...
> >>>>         >
> >>>>         > Atmospheric correction complete.
> >>>>         >
> >>>>         >
> >>>>         >
> >>>>         > The map I obtain is constituted by pixels with 6.669033e-34
> values.
> >>>>         >
> >>>>         > Can anyone explain the meaning of the output and why I
> obtain a
> >>>>        NULL value corrected map?
> >>>>         >
> >>>>         > Thank you for your support.
> >>>>         >
> >>>>         >
> >>>>         >
> >>>>         > _______________________________________________
> >>>>         > grass-user mailing list
> >>>>         > grass-user at lists.osgeo.org <mailto:
> grass-user at lists.osgeo.org>
> >>>>         > https://lists.osgeo.org/mailman/listinfo/grass-user
> >>>>        <https://lists.osgeo.org/mailman/listinfo/grass-user>
> >>>>
> >>>>
> >>>> _______________________________________________
> >>>> grass-user mailing list
> >>>> grass-user at lists.osgeo.org
> >>>> https://lists.osgeo.org/mailman/listinfo/grass-user
> >>>
> >>>
> >>
> >>
> >
> >
>
> _______________________________________________
> grass-user mailing list
> grass-user at lists.osgeo.org
> https://lists.osgeo.org/mailman/listinfo/grass-user
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/grass-user/attachments/20220128/4499dc6a/attachment-0001.html>


More information about the grass-user mailing list