<div dir="auto"><div dir="auto"></div>Obviously the module will be implemented with various options (manual balie, AREONET, etc.)<div dir="auto"><br></div><div dir="auto">Concerning AREONET effectively the Py6S library do only an "interpolation" searching the closest time and wave length, so Roberta are writing the routine without using py6s.</div><div dir="auto"><br></div><div dir="auto">Thanks all' for the suggestions!</div><div dir="auto"><br></div><div dir="auto">R</div><div dir="auto"><div dir="auto"><br></div><div dir="auto"><br></div><div dir="auto"><br><div class="gmail_quote" dir="auto"><div dir="ltr">Il gio 28 giu 2018, 11:54 Moritz Lennert <<a href="mailto:mlennert@club.worldonline.be" target="_blank" rel="noreferrer">mlennert@club.worldonline.be</a>> ha scritto:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On 27/06/18 15:40, Roberto Marzocchi wrote:<br>
> <br>
> <br>
> Il giorno mer 27 giu 2018 alle ore 15:25 Markus Metz <br>
> <<a href="mailto:markus.metz.giswork@gmail.com" rel="noreferrer noreferrer" target="_blank">markus.metz.giswork@gmail.com</a> <mailto:<a href="mailto:markus.metz.giswork@gmail.com" rel="noreferrer noreferrer" target="_blank">markus.metz.giswork@gmail.com</a>>> <br>
> ha scritto:<br>
> <br>
> <br>
> <br>
>     On Wed, Jun 27, 2018 at 3:06 PM, Roberta Fagandini<br>
>     <<a href="mailto:robifagandini@gmail.com" rel="noreferrer noreferrer" target="_blank">robifagandini@gmail.com</a> <mailto:<a href="mailto:robifagandini@gmail.com" rel="noreferrer noreferrer" target="_blank">robifagandini@gmail.com</a>>> wrote:<br>
>      ><br>
>      ><br>
>      ><br>
>      > 2018-06-27 14:24 GMT+02:00 Markus Metz<br>
>     <<a href="mailto:markus.metz.giswork@gmail.com" rel="noreferrer noreferrer" target="_blank">markus.metz.giswork@gmail.com</a> <mailto:<a href="mailto:markus.metz.giswork@gmail.com" rel="noreferrer noreferrer" target="_blank">markus.metz.giswork@gmail.com</a>>>:<br>
>      >><br>
>      >><br>
>      >><br>
>      >> On Wed, Jun 27, 2018 at 2:16 PM, Roberta Fagandini<br>
>     <<a href="mailto:robifagandini@gmail.com" rel="noreferrer noreferrer" target="_blank">robifagandini@gmail.com</a> <mailto:<a href="mailto:robifagandini@gmail.com" rel="noreferrer noreferrer" target="_blank">robifagandini@gmail.com</a>>> wrote:<br>
>      >> ><br>
>      >> > I'm trying to create an automatic procedure to retrieve all<br>
>     the input parameters for the control file of i.atcorr.<br>
>      >> > I need py6S because I want to automatically read and compute<br>
>     AOT at 550nm from an AERONET file.<br>
>      >><br>
>      >> With AOT you mean aerosol optical thickness right? This is user<br>
>     input to i.atcorr. There are various sources for AOT at 550nm, e.g.<br>
>     MODIS.<br>
>      ><br>
>      ><br>
>      > Right!<br>
>      ><br>
>      >><br>
>      >><br>
>      >><br>
>      >><br>
>      >> Anyway, it is probably much easier to to write your own routine<br>
>     to read the AERONET file and get the corresponding formula for AOT<br>
>     than to fight with 51821 lines of Fortran source code that is<br>
>     numerically unstable. Maybe I can help with getting AOT at 550nm<br>
>     from an AERONET file avoiding the Fortran version of 6S.<br>
>      ><br>
>      ><br>
>      > Ok but I'm not able to create this kind of routine on my own. If<br>
>     someone, more expert than me, can help me in translating the 6S/Py6S<br>
>     functions I can go on in this way otherwise for me it's easier to<br>
>     use the fortran source code.<br>
> <br>
>     Apparently the AERONET data are simple CSV files. You can import<br>
>     them with <a href="http://r.in.xyz" rel="noreferrer noreferrer noreferrer" target="_blank">r.in.xyz</a> <<a href="http://r.in.xyz" rel="noreferrer noreferrer noreferrer" target="_blank">http://r.in.xyz</a>> or v.in.ascii.<br>
> <br>
>     Still, I think it is up to the user to decide on the source of AOT<br>
>     values. AERONET is one of many possible sources.<br>
> <br>
> <br>
> Ok but I know that Roberta  want try to simplify the procedure for <br>
> atmospheric correction. In particular she would like to add an option <br>
> (not the only one) to read automatically the AOT at the wave length of <br>
> 550 nm from the AERONET file.<br>
> <br>
> The steps to do this IMHO are:<br>
> <br>
> 1) read the file (using GRASS or maybe better Python)<br>
> <br>
> 2) a formula to calculate the AOT550<br>
> <br>
> Unfortunately I have no idea about the 2nd point :-(<br>
<br>
I'm not sure either, what exactly the necessary calculations are.<br>
<br>
Superficially reading through the relevant class in Py6S [1], I <br>
understasnd that it does two things:<br>
<br>
1) Get the value of AOT550<br>
2) Create a continuous profile by interpolating values<br>
<br>
If all you need is 1), then all they do (see _get_aot() method at the <br>
end) is to read all the AOT_* columns and chose the value of the line <br>
with the timestamp closest to the one asked for and the wavelength <br>
closest to 550.<br>
<br>
As the code is GPL you could probably just extract the necessary parts <br>
and integrate them into your code. The only thing I'm not to sure about <br>
is their use of pandas which creates yet again another dependency which <br>
I don't really think necessary and desirable.<br>
<br>
It should be enough to extract from the file the date and time (or maybe <br>
easier to work with: year and the Julian day) and all AOT_* columns, <br>
parse the AOT_* columns for their wavelength value and then identify the <br>
value which has closes time and wavelength to the time requested and 550nm.<br>
<br>
Moritz<br>
<br>
<br>
<br>
<br>
[1] <a href="https://github.com/robintw/Py6S/blob/master/Py6S/SixSHelpers/aeronet.py" rel="noreferrer noreferrer noreferrer" target="_blank">https://github.com/robintw/Py6S/blob/master/Py6S/SixSHelpers/aeronet.py</a><br>
</blockquote></div></div></div></div>