Atmospheric correction only for Gas (H20 and O3)

49 views
Skip to first unread message

Tandule Chakradhar Rao

unread,
Aug 3, 2024, 2:35:39 PM8/3/24
to Py6S
Hi robin, thank you for giving us py6s.
I want to remove the contribution of water vapor and ozone from the measured TOA radiance (L).
That is, after atmospheric correction  left out radiance (L2)  will be due to surface, aerosol and Rayleigh. But the atmos.int.rad values of Rayleigh (La2) is higher than the atmos.int.rad values of water vapor ozone and Rayleigh (La2). How to get the L2 from this?
data is as given below...
wl La1 La2 Measured (L)
0.412 74.024 74.024 97.81813
0.443 59.876 59.969 82.56315
0.49 40.974 41.427 62.62844
0.51 34.489 35.312 54.03515
0.555 22.863 24.174 47.61634
0.62 13.185 14.063 31.29857
0.74 5.028 5.061 79.0417
0.865 2.005 2.005 70.54509

La1 is estimated as
    sg = SixS()
    sg.geometry = Geometry.User()
    sg.geometry.solar_z = solz
    sg.geometry.solar_a = sola
    sg.geometry.view_z = senz
    sg.geometry.view_a = sena
    sg.geometry.month = 3
    sg.geometry.day = 27
    sg.altitudes.set_target_custom_altitude(alt)
    sg.altitudes.set_sensor_satellite_level()
    sg.wavelength = Wavelength(wl)
    sg.atmos_profile = AtmosProfile.UserWaterAndOzone(wav, o3)
    sg.aero_profile = AeroProfile.PredefinedType(AeroProfile.Continental)
    sg.aot550=0
    sg.ground_reflectance = GroundReflectance.HomogeneousLambertian(0)
    sg.atmos_corr = AtmosCorr.AtmosCorrLambertianFromRadiance(L)
    sg.run()

    # Output parameters
    xc = sg.outputs.coef_xc
    Ts = sg.outputs.transmittance_total_scattering.downward
    Tv = sg.outputs.transmittance_total_scattering.upward
    rad = sg.outputs.solar_spectrum
   
    La1 = sg.outputs.atmospheric_intrinsic_radiance
    Tg_1 = sg.outputs.total_gaseous_transmittance

La2 is estimated as 

    s = SixS()
    s.geometry = Geometry.User()
    s.geometry.solar_z = solz
    s.geometry.solar_a = sola
    s.geometry.view_z = senz
    s.geometry.view_a = sena
    s.geometry.month = 3
    s.geometry.day = 27
    s.altitudes.set_target_custom_altitude(alt)
    s.altitudes.set_sensor_satellite_level()
    s.wavelength = Wavelength(wl)
    s.atmos_profile = AtmosProfile.UserWaterAndOzone(0, 0)
    s.aero_profile = AeroProfile.PredefinedType(AeroProfile.Continental)
    s.aot550=0
    s.ground_reflectance = GroundReflectance.HomogeneousLambertian(0)
    s.atmos_corr = AtmosCorr.AtmosCorrLambertianFromRadiance(L)
    s.run()
   
    # Output parameters
    La2= s.outputs.atmospheric_intrinsic_radiance
    Tg_2 = s.outputs.total_gaseous_transmittance

Then 
    L1=L-La1
    L2=L1+La2
    y=(np.pi*L2)/(Tg_1*Ts*Tv*csolz*rad)
    acr=y/(1+(y*xc))
Untitled.jpg
The problem is that acr is greater than measured reflectance.

Can you help me solve this problem?
Thank you in advance
Chakradhar
Reply all
Reply to author
Forward
0 new messages