Changes between Initial Version and Version 1 of Processing/Py6S_vs_Hyperspectral/Py6SParameters

Oct 21, 2015, 11:13:39 AM (7 years ago)



  • Processing/Py6S_vs_Hyperspectral/Py6SParameters

    v1 v1  
     1=== ARSF settings for Py6S parameters ===
     3A complete explanation of the parameters used on the Py6S model can be found here:
     4 [[BR]]
     5Please note that most of the parameter are bound to the area of study and are defined separately if a exhaustive analysis of the spectra is needed.
     7ARSF has chosen the simplest Py6S predefined parameters to plot vegetation spectra for any flight. The output will differ considerably form the recorded spectra by the sensor but will have the usable features to compare our data and give us a useful tool to spot problems during the processing of hyperspectral level1b files across all areas worldwide cover by ARSF.
     10'''This section of the wiki will set an overview of those parameters used at ARSF. The Py6S model is essentially defined by the set of:[[BR]]'''
     110-> s = Py6S.SixS()   (This only creates the object) [[BR]]
     121-> s.ground_reflectance = Py6S.GroundReflectance.HomogeneousLambertian(Py6S.GroundReflectance.GreenVegetation) [[BR]]
     132-> s.atmos_profile = Py6S.AtmosProfile.PredefinedType(Py6S.AtmosProfile.MidlatitudeSummer) [[BR]]
     143-> s.aeroprofile = Py6S.AeroProfile.PredefinedType(Py6S.AeroProfile.Continental) [[BR]]
     154-> s.geometry = Py6S.Geometry.User() [[BR]]
     165-> s.geometry.from_time_and_location(lat, lon, flight_time, view_z, view_a) [[BR]]
     176-> atmos_corr = Py6S.AtmosCorr.NoAtmosCorr() [[BR]]
     187-> s.altitudes.set_sensor_custom_altitude(plane_altitude) [[BR]]
     198-> py6s_wv, py6s_output = Py6S.SixSHelpers.Wavelengths.run_wavelengths(s, wavelengths_array, output_name='apparent_radiance', verbose=False, n=PY6S_NUM_CORES) [[BR]]
     23A brief description of those is as follows:[[BR]]
     25Provides parameterisation for heterogeneous Lambertian (ie. uniform BRDF) surfaces. The ground reflectance is the predefined vegetation type unless a ground reflectance file is giving as input. If a given file is given as input, will replace that parameter for the reflectance values at the given wavelengths recorded on the file.
     28'''2-'''s.atmos_profile = Py6S.AtmosProfile.PredefinedType(Py6S.AtmosProfile.MidlatitudeSummer)[[BR]]
     29The script has been selected to run with MidlatitudeSummer on the AtmosProfile parameter. Different parameters predefined types of AtmosProfile are:
     30||MidlatitudeSummer             ||MidlatitudeWinter             ||NoGaseousAbsorption||
     31||PredefinedType                ||RadiosondeProfile             ||SubarcticSummer||
     32||SubarcticWinter               ||Tropical                      ||USStandard1962||
     33||UserWaterAndOzone             ||                 -            ||-||
     34Since this script is running without an atmospheric correction, the AtmosProfile parameter impact is not noticiable. However, future versions will try to improve the most suitable one depending on the position and the julian day.
     37'''3-'''s.aeroprofile = Py6S.AeroProfile.PredefinedType(Py6S.AeroProfile.Continental)[[BR]]
     38The AeroProfile has been set as Predefined Continental having in mind that is the most adequate for the higher amount of flights flown by ARSF.
     39||AerosolDistribution           ||BiomassBurning                                ||Continental||
     40||Desert                                ||JungePowerLawDistribution             ||Maritime||
     41||ModifiedGammaDistribution     ||MultimodalLogNormalDistribution       ||NoAerosols||
     42||PredefinedType                        ||Stratospheric                         ||SunPhotometerDistribution||
     43||Urban                         ||User                                  ||UserProfile||
     44In this case, future versions will consider to implement some of those parameters (Desert and Maritime) as input for specific flights. Most of those parameters, such as Stratospheric, does not fit ARSF needs and will not need to be included.
     47'''4-'''s.geometry = Py6S.Geometry.User()[[BR]]
     48Stores parameters for a user-defined geometry for 6S. This will allow us to enter our required values on the next line (See Section 5).
     50'''5-'''s.geometry.from_time_and_location(lat, lon, flight_time, view_z, view_a)[[BR]]
     51Sets the user geometry to the one given by the flightline. Calculates the possition of the sun and its angles with the sensor and the pixel having as input:
     52-lat -> latitude of the pixel.[[BR]]
     53-lon -> longitude of the pixel.[[BR]]
     54-flight_time -> date.[[BR]]
     55-view_z -> Viewing zenith angle.[[BR]]
     56-view_a -> Viewing azimuth angle. (Measured at pixel, from North direction towards the sensor at the plane)
     58'''6-'''s.atmos_corr = Py6S.AtmosCorr.NoAtmosCorr()[[BR]]
     59No atmospheric correction is accounted for while running the Py6S model.
     62Set altitude at-sensor radiance, which is equivalent to the plane altitude.
     65'''8-'''py6s_wv, py6s_output = Py6S.SixSHelpers.Wavelengths.run_wavelengths(s, wavelengths_array, output_name='apparent_radiance', verbose=False, n=PY6S_NUM_CORES) [[BR]]
     66The wavelengths_array is an array containing all wavelengths recorded by Fenix sensor. The Py6S model is only run for those wavelengths and the output is the expected radiance without atmospheric correction measured at-sensor (plane height). Please note units are (nW/cm^2)/(sr)/(nm)