Changes between Version 2 and Version 3 of Processing/Py6S_vs_Hyperspectral/Py6SParameters


Ignore:
Timestamp:
Aug 24, 2017 3:21:00 PM (21 months ago)
Author:
dac
Comment:

Updated wiki formatting

Legend:

Unmodified
Added
Removed
Modified
  • Processing/Py6S_vs_Hyperspectral/Py6SParameters

    v2 v3  
    1 === ARSF settings for Py6S parameters ===
     1= NERC-ARF settings for Py6S  =
    22
    33A complete explanation of the parameters used on the Py6S model can be found here:
     
    55Please 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.
    66
    7 ARSF 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 covered by ARSF.
     7NERC-ARF have 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 covered by NERC-ARF.
    88[[BR]]
    99[[BR]]
    1010'''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]]'''
    11 0-> s = Py6S.SixS()   (This only creates the object) [[BR]]
    12 1-> s.ground_reflectance = Py6S.GroundReflectance.HomogeneousLambertian(Py6S.GroundReflectance.GreenVegetation) [[BR]]
    13 2-> s.atmos_profile = Py6S.AtmosProfile.PredefinedType(Py6S.AtmosProfile.MidlatitudeSummer) [[BR]]
    14 3-> s.aeroprofile = Py6S.AeroProfile.PredefinedType(Py6S.AeroProfile.Continental) [[BR]]
    15 4-> s.geometry = Py6S.Geometry.User() [[BR]]
    16 5-> s.geometry.from_time_and_location(lat, lon, flight_time, view_z, view_a) [[BR]]
    17 6-> atmos_corr = Py6S.AtmosCorr.NoAtmosCorr() [[BR]]
    18 7-> s.altitudes.set_sensor_custom_altitude(plane_altitude) [[BR]]
    19 8-> py6s_wv, py6s_output = Py6S.SixSHelpers.Wavelengths.run_wavelengths(s, wavelengths_array, output_name='apparent_radiance', verbose=False, n=PY6S_NUM_CORES) [[BR]]
     11 0. s = Py6S.SixS()   (This only creates the object) [[BR]]
     12 1. s.ground_reflectance = Py6S.GroundReflectance.HomogeneousLambertian(Py6S.GroundReflectance.GreenVegetation) [[BR]]
     13 2. s.atmos_profile = Py6S.AtmosProfile.PredefinedType(Py6S.AtmosProfile.MidlatitudeSummer) [[BR]]
     14 3. s.aeroprofile = Py6S.AeroProfile.PredefinedType(Py6S.AeroProfile.Continental) [[BR]]
     15 4. s.geometry = Py6S.Geometry.User() [[BR]]
     16 5. s.geometry.from_time_and_location(lat, lon, flight_time, view_z, view_a) [[BR]]
     17 6. atmos_corr = Py6S.AtmosCorr.NoAtmosCorr() [[BR]]
     18 7. s.altitudes.set_sensor_custom_altitude(plane_altitude) [[BR]]
     19 8. py6s_wv, py6s_output = Py6S.SixSHelpers.Wavelengths.run_wavelengths(s, wavelengths_array, output_name='apparent_radiance', verbose=False, n=PY6S_NUM_CORES) [[BR]]
    2020
    21 [[BR]]
    22 [[BR]]
    23 A brief description of those is as follows:[[BR]]
    24 '''1-'''Py6S.GroundReflectance.HomogeneousLambertian(Py6S.GroundReflectance.GreenVegetation)[[BR]]
     21
     22= 1. Py6S.GroundReflectance.HomogeneousLambertian(Py6S.GroundReflectance.GreenVegetation)=
    2523Provides 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.
    2624
    2725
    28 '''2-'''s.atmos_profile = Py6S.AtmosProfile.PredefinedType(Py6S.AtmosProfile.MidlatitudeSummer)[[BR]]
     26=== 2. s.atmos_profile = Py6S.AtmosProfile.PredefinedType(Py6S.AtmosProfile.MidlatitudeSummer) ===
    2927The script has been selected to run with MidlatitudeSummer on the AtmosProfile parameter. Different parameters predefined types of AtmosProfile are:
    3028||MidlatitudeSummer             ||MidlatitudeWinter             ||NoGaseousAbsorption||
     
    3432Since 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.
    3533
    36 [[BR]]
    37 '''3-'''s.aeroprofile = Py6S.AeroProfile.PredefinedType(Py6S.AeroProfile.Continental)[[BR]]
     34=== 3. s.aeroprofile = Py6S.AeroProfile.PredefinedType(Py6S.AeroProfile.Continental) ===
    3835The AeroProfile has been set as Predefined Continental having in mind that is the most adequate for the higher amount of flights flown by ARSF.
    3936||AerosolDistribution           ||BiomassBurning                                ||Continental||
     
    4441In 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.
    4542
    46 [[BR]]
    47 '''4-'''s.geometry = Py6S.Geometry.User()[[BR]]
     43=== 4. s.geometry = Py6S.Geometry.User() ===
    4844Stores parameters for a user-defined geometry for 6S. This will allow us to enter our required values on the next line (See Section 5).
    4945
    50 '''5-'''s.geometry.from_time_and_location(lat, lon, flight_time, view_z, view_a)[[BR]]
     46=== 5. s.geometry.from_time_and_location(lat, lon, flight_time, view_z, view_a) ===
    5147Sets 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:
    5248-lat -> latitude of the pixel.[[BR]]
     
    5652-view_a -> Viewing azimuth angle. (Measured at pixel, from North direction towards the sensor at the plane)
    5753
    58 '''6-'''s.atmos_corr = Py6S.AtmosCorr.NoAtmosCorr()[[BR]]
     54=== 6. s.atmos_corr = Py6S.AtmosCorr.NoAtmosCorr() ===
    5955No atmospheric correction is accounted for while running the Py6S model.
    6056
    61 '''7-'''s.altitudes.set_sensor_custom_altitude(plane_altitude)[[BR]]
     57=== 7. s.altitudes.set_sensor_custom_altitude(plane_altitude) ===
    6258Set altitude at-sensor radiance, which is equivalent to the plane altitude.
    6359
    6460
    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]]
    66 The 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)
     61=== 8. py6s_wv, py6s_output = Py6S.SixSHelpers.Wavelengths.run_wavelengths(s, wavelengths_array, output_name='apparent_radiance', verbose=False, n=PY6S_NUM_CORES) ===
     62The 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`)