Technical documentation
- class sense.surface.dubois95.Dubois95(eps, ks, theta, lam: float)[source]
Bases:
SurfaceScatterDubois95 model described in Ulaby (2014), Chapter 10.6.
- class sense.surface.i2em.ExponentialSpectrum(**kwargs)[source]
Bases:
Roughnessexponential spectrum.
- class sense.surface.i2em.I2EM(f, eps, sig, l, theta, **kwargs)[source]
Bases:
SurfaceScatterI2EM model (see Ulaby (2014), Chapter 10).
I2EM backscattering model for single scale random surfaces. The code originates from ideas obtained from the supplement of Ulaby et al (2014)
- class sense.surface.oh1992.Oh92(eps, ks, theta)[source]
Bases:
SurfaceScatterOh et al. (1992) empirical surface backscattering model.
- Reference:
Ulaby et al. (2014), Chapter 10.5
- class sense.surface.oh2004.Oh04(mv, ks, theta)[source]
Bases:
SurfaceScatterOh et al. (2004) empirical surface backscattering model.
- Reference:
Ulaby et al. (2014), Chapter 10.5
- class sense.surface.watercloud.WaterCloudSurface(mv, theta, C_hh, C_vv, C_hv, D_hh, D_vv, D_hv)[source]
Bases:
SurfaceScatterAttema and Ulaby (1978): Vegetation modeled as a water cloud.
Only surface part.
- class sense.core.Fresnel0(eps: complex)[source]
Bases:
objectFresnel reflectivity at nadir (Ulaby, 2014, Eq. 10.36).
- class sense.core.Reflectivity(eps: complex, theta: float | ndarray)[source]
Bases:
objectCalculate reflectivity for H and V polarization.
- class sense.model.CanopyHomoRT(ke_h: float, ke_v: float, ks_h: float, ks_v: float, d: float, theta: float | ndarray, stype: str)[source]
Bases:
objectHomogeneous canopy RT model.
Assumes homogeneous vertical distribution of scatterers in that case the Lambert Beer law applies
NOTE that this model is only for BACKSCATTERING GEOMETRY!
- Parameters:
ke_h (float) – volume extinction coefficient [Np/m]
ke_v (float) – volume extinction coefficient [Np/m]
d (float) – height of canopy layer [m]
theta (float, ndarray) – incidence angle [rad]
- d: float
- ke_h: float
- ke_v: float
- ks_h: float
- ks_v: float
- sigma_c()[source]
Calculate canopy volume contribution only.
Eq. 11.10 + 11.16 as seen in 11.17, Ulaby 2014
- sigma_gcg(G_v, G_h)[source]
Calculate ground-canopy-ground interactions (Eq. 11.16, Ulaby 2014).
- Parameters:
G_v (float) – v-polarized coherent Fresnel reflectivity under rough conditions see eq. 11.11 for explanations. As this depends on the surface model used, these should be provided here explicitely
G_h (float) – same as above, but for h-polarization.
- stype: str
- theta: float | ndarray
- class sense.model.Ground(S: object, C: object, RT_s: str, RT_c: str, theta: float | ndarray, freq: float)[source]
Bases:
objectCalculate the (attenuated) ground contribution sigma_pq.
p is receive and q is transmit polarization
- Parameters:
S (object) – descibing the surface properties
C (object) – describing the canopy properties
RT_s (str) – key describing the surface scattering model
RT_c (str) – key specifying the canopy scattering model
theta (float/array) – incidence angle [rad]
freq (float) – frequency[GHz]
- C: object
- RT_c: str
- RT_s: str
- S: object
- freq: float
- sigma_c_g(coherent=None)[source]
Calculate canopy ground scattering coefficient.
This is based on Eq. 11.17 (last term) in Ulaby (2014) and 11.14 in Ulaby (2014)
for co-pol, coherent addition can be made as an option
- Parameters:
coherent (bool) – do coherent calculation for co-pol calculations
- theta: float | ndarray
- class sense.model.Model(theta: float)[source]
Bases:
objectBasic class for scattering modelling.
- sigma0(dB: bool = False, pol: List[str] | None = None)[source]
Calculate sigma.
- Parameters:
dB (bool) – Return results in decibel.
pol (list) – List with polarizations pq whereas p=receive, q=transmit p,g can be either H or V
- theta: float
- class sense.model.RTModel(theta: float, surface: object, canopy: object, models: Dict[str, str], freq: float, coherent: bool = True)[source]
Bases:
ModelRadiative Transfer Models.
SSRT Eq. 11.17 (Ulaby and Long 2014) or WCM (Attema and Ulaby 1978).
- Parameters:
surface (Surface description) – Object describing the surface
canopy (Canopy description) – Object describing the canopy
models (dict) – Dictionary with configuration of scattering models
- canopy: object
- coherent: bool = True
- freq: float
- models: Dict[str, str]
- surface: object
- class sense.model.WaterCloudCanopy(A_hh: float, B_hh: float, A_vv: float, B_vv: float, A_hv: float, B_hv: float, V1: float, V2: float, theta: float | ndarray)[source]
Bases:
objectWater cloud model Attema and Ulaby (1978).
Canopy part
- Parameters:
A (float) – fitting parameters
B (float) – fitting parameters
V1 (float) – vegetation descriptor
V2 (float) – vegetation descriptor
theta (float, ndarray) – incidence angle [rad]
- A_hh: float
- A_hv: float
- A_vv: float
- B_hh: float
- B_hv: float
- B_vv: float
- V1: float
- V2: float
- theta: float | ndarray
Definition of scatter types.
- class sense.scatterer.ScatIso(sigma_s_hh: float | ndarray | None = None, sigma_s_vv: float | ndarray | None = None, sigma_s_hv: float | ndarray | None = None)[source]
Bases:
ScattererIsotropic scatterer definition (see Ulaby 2014, 11.2).
- class sense.scatterer.ScatRayleigh(sigma_s_hh: float | ndarray | None = None, sigma_s_vv: float | ndarray | None = None, sigma_s_hv: float | ndarray | None = None)[source]
Bases:
ScattererRayleigh scatterer definition (see Ulaby 2014, 11.2).
- class sense.scatterer.Scatterer(sigma_s_hh: float | ndarray | None = None, sigma_s_vv: float | ndarray | None = None, sigma_s_hv: float | ndarray | None = None)[source]
Bases:
objectBase class for scatterers.
- Parameters:
sigma_s_hh (float) – Particle HH scattering cross section [m²].
sigma_s_vv (float) – Particle VV scattering cross section [m²].
sigma_s_hv (float) – Particle HV scattering cross section [m²].
- sigma_s_hh: float | ndarray = None
- sigma_s_hv: float | ndarray = None
- sigma_s_vv: float | ndarray = None
- class sense.soil.Soil(surface: str | None = None, eps: complex | None = None, mv: float | None = None, f: float | None = None, s: float | None = None, l: float | None = None, acl: str | None = None, clay: float | None = None, sand: float | None = None, bulk: float | None = 1.65, debye: float | None = None, dc_model: str = 'Dobson85', C_hh: float | None = None, D_hh: float | None = None, C_vv: float | None = None, D_vv: float | None = None, C_hv: float | None = None, D_hv: float | None = None, V2: float | None = None)[source]
Bases:
objectClass specifying a soil.
- Parameters:
surface (string) – name of used RT-model for surface contribution
eps (complex) – relative permitivity, if this is not given, then mv needs to be given
s (float) – surface rms height [m]
mv (float) – volumetric soil moisture [m**3/m**3]; either eps or mv needs to be given
f (float) – frequency [GHz]
l (float) – optional: autocorrelation length
acl (str) – identifier for shape of autocorrelation function G = Gaussian E = Exponential
clay (float) – optional fractional clay content
sand (float) – optional fraction sand content
bulk (float) – bulk density [g/cm**3]
C_hh (float) – empirical parameter (Water Cloud Model)
D_hh (float) – empirical parameter (Water Cloud Model)
C_vv (float) – empirical parameter (Water Cloud Model)
D_vv (float) – empirical parameter (Water Cloud Model)
C_hv (float) – empirical parameter (Water Cloud Model)
D_hv (float) – empirical parameter (Water Cloud Model)
V2 (float) – parameter specifying the vegetation (Water Cloud Model)
- C_hh: float | None = None
- C_hv: float | None = None
- C_vv: float | None = None
- D_hh: float | None = None
- D_hv: float | None = None
- D_vv: float | None = None
- V2: float | None = None
- acl: str | None = None
- bulk: float | None = 1.65
- clay: float | None = None
- dc_model: str = 'Dobson85'
- debye: float | None = None
- eps: complex | None = None
- f: float | None = None
- k: float | None = None
- kl: float | None = None
- ks: float | None = None
- l: float | None = None
- mv: float | None = None
- s: float | None = None
- sand: float | None = None
- surface: str | None = None
Module for some utilty functions.
Specification of canopies.
- class sense.canopy.OneLayer(canopy: str, A_hh: float | None = None, B_hh: float | None = None, A_vv: float | None = None, B_vv: float | None = None, A_hv: float | None = None, B_hv: float | None = None, V1: float | None = None, V2: float | None = None, ke_h: float | None = None, ke_v: float | None = None, ks_h: float | None = None, ks_v: float | None = None, d: float | None = None)[source]
Bases:
objectDefine a homogeneous one layer canopy.
Right now water_cloud and turbid_isotropic/turbid_rayleigh are implemented
- A_hh: float | None = None
- A_hv: float | None = None
- A_vv: float | None = None
- B_hh: float | None = None
- B_hv: float | None = None
- B_vv: float | None = None
- V1: float | None = None
- V2: float | None = None
- canopy: str
- d: float | None = None
- ke_h: float | None = None
- ke_v: float | None = None
- ks_h: float | None = None
- ks_v: float | None = None
- class sense.dielectric.dobson85.Dobson85(clay: float | None = None, sand: float | None = None, mv: float | None = None, freq: float | ndarray | None = None, bulk: float = 1.65, temp: float = 23.0, debye: bool = False, single_debye: bool = False)[source]
Bases:
EpsModelDielectric mixing model for soils After Dobson et al. (1985).
Coding after Ulaby (2014), Chapter 4
- debye: bool = False
- single_debye: bool = False
- class sense.dielectric.epsmodel.EpsModel(clay: float | None = None, sand: float | None = None, mv: float | None = None, freq: float | ndarray | None = None, bulk: float = 1.65, temp: float = 23.0)[source]
Bases:
objectGeneric model for dielectric mixing models.
- bulk: float = 1.65
- clay: float | None = None
- freq: float | ndarray | None = None
- mv: float | None = None
- sand: float | None = None
- temp: float = 23.0
- class sense.surface.scatter.SurfaceScatter(eps: complex | ndarray | None = None, ks: float | None = None, theta: float | ndarray | None = None, kl: float | None = None, mv: float | ndarray | None = None, C_hh: float | None = None, C_vv: float | None = None, C_hv: float | None = None, D_hh: float | None = None, D_vv: float | None = None, D_hv: float | None = None)[source]
Bases:
objectMajor surface scatter class.
- C_hh: float = None
- C_hv: float = None
- C_vv: float = None
- D_hh: float = None
- D_hv: float = None
- D_vv: float = None
- eps: complex | ndarray = None
- kl: float = None
- ks: float = None
- mv: float | ndarray = None
- theta: float | ndarray = None