BRDF#

class geowombat.radiometry.BRDF[source]#

Bases: GeoVolKernels

A class for Bidirectional Reflectance Distribution Function (BRDF) normalization.

Methods

get_mean_sza(central_latitude)

Returns the mean solar zenith angle (SZA) as a function of the central latitude.

norm_brdf(data, solar_za, solar_az, ...[, ...])

Applies Nadir Bidirectional Reflectance Distribution Function (BRDF) normalization using the global c-factor method

get_kernels

Methods Documentation

static get_mean_sza(central_latitude)#

Returns the mean solar zenith angle (SZA) as a function of the central latitude.

Parameters:

central_latitude (float) – The central latitude.

Reference:

See [ZRK16]

Returns:

float

norm_brdf(data, solar_za, solar_az, sensor_za, sensor_az, central_latitude=None, sensor=None, wavelengths=None, src_nodata=-32768, dst_nodata=-32768, mask=None, scale_factor=1.0, out_range=None, scale_angles=True, vol_weight=1.0)[source]#

Applies Nadir Bidirectional Reflectance Distribution Function (BRDF) normalization using the global c-factor method

Parameters:
  • data (2d or 3d DataArray) – The data to normalize.

  • solar_za (2d DataArray) – The solar zenith angles (degrees).

  • solar_az (2d DataArray) – The solar azimuth angles (degrees).

  • sensor_za (2d DataArray) – The sensor azimuth angles (degrees).

  • sensor_az (2d DataArray) – The sensor azimuth angles (degrees).

  • central_latitude (Optional[float or 2d DataArray]) – The central latitude.

  • sensor (Optional[str]) – The satellite sensor.

  • wavelengths (str list) – The wavelength(s) to normalize.

  • src_nodata (Optional[int or float]) – The input ‘no data’ value.

  • dst_nodata (Optional[int or float]) – The output ‘no data’ value.

  • mask (Optional[DataArray]) – A data mask, where clear values are 0.

  • scale_factor (Optional[float]) – A scale factor to apply to the input data.

  • out_range (Optional[float]) – The out data range. If not given, the output data are return in a 0-1 range.

  • scale_angles (Optional[bool]) – Whether to scale the pixel angle arrays.

  • vol_weight (Optional[float]) – Weight to be applied to the volumetric kernel in the c-factor equation

References

See [RZJ+16] for the c-factor method.

For further background on BRDF:

Returns:

xarray.DataArray

Examples

>>> import geowombat as gw
>>> from geowombat.radiometry import BRDF
>>>
>>> brdf = BRDF()
>>>
>>> # Example where pixel angles are stored in separate GeoTiff files
>>> with gw.config.update(sensor='l7', scale_factor=0.0001):
>>>
>>>     with gw.open('solarz.tif') as solarz,
>>>         gw.open('solara.tif') as solara,
>>>             gw.open('sensorz.tif') as sensorz,
>>>                 gw.open('sensora.tif') as sensora:
>>>
>>>         with gw.open('landsat.tif') as src:
>>>             src_norm = brdf.norm_brdf(src, solarz, solara, sensorz, sensora)
norm_brdf(data, solar_za, solar_az, sensor_za, sensor_az, central_latitude=None, sensor=None, wavelengths=None, src_nodata=-32768, dst_nodata=-32768, mask=None, scale_factor=1.0, out_range=None, scale_angles=True, vol_weight=1.0)[source]#

Applies Nadir Bidirectional Reflectance Distribution Function (BRDF) normalization using the global c-factor method

Parameters:
  • data (2d or 3d DataArray) – The data to normalize.

  • solar_za (2d DataArray) – The solar zenith angles (degrees).

  • solar_az (2d DataArray) – The solar azimuth angles (degrees).

  • sensor_za (2d DataArray) – The sensor azimuth angles (degrees).

  • sensor_az (2d DataArray) – The sensor azimuth angles (degrees).

  • central_latitude (Optional[float or 2d DataArray]) – The central latitude.

  • sensor (Optional[str]) – The satellite sensor.

  • wavelengths (str list) – The wavelength(s) to normalize.

  • src_nodata (Optional[int or float]) – The input ‘no data’ value.

  • dst_nodata (Optional[int or float]) – The output ‘no data’ value.

  • mask (Optional[DataArray]) – A data mask, where clear values are 0.

  • scale_factor (Optional[float]) – A scale factor to apply to the input data.

  • out_range (Optional[float]) – The out data range. If not given, the output data are return in a 0-1 range.

  • scale_angles (Optional[bool]) – Whether to scale the pixel angle arrays.

  • vol_weight (Optional[float]) – Weight to be applied to the volumetric kernel in the c-factor equation

References

See [RZJ+16] for the c-factor method.

For further background on BRDF:

Returns:

xarray.DataArray

Examples

>>> import geowombat as gw
>>> from geowombat.radiometry import BRDF
>>>
>>> brdf = BRDF()
>>>
>>> # Example where pixel angles are stored in separate GeoTiff files
>>> with gw.config.update(sensor='l7', scale_factor=0.0001):
>>>
>>>     with gw.open('solarz.tif') as solarz,
>>>         gw.open('solara.tif') as solara,
>>>             gw.open('sensorz.tif') as sensorz,
>>>                 gw.open('sensora.tif') as sensora:
>>>
>>>         with gw.open('landsat.tif') as src:
>>>             src_norm = brdf.norm_brdf(src, solarz, solara, sensorz, sensora)

[Fis14]

Adrian Fisher. Cloud and cloud-shadow detection in spot5 hrg imagery with automated morphological feature extraction. Remote Sensing, 6(1):776–800, 2014.

[LS92] (1,2)

Xiaowen Li and Alan H Strahler. Geometric-optical bidirectional reflectance modeling of the discrete crown vegetation canopy: effect of crown shape and mutual shadowing. IEEE transactions on Geoscience and Remote Sensing, 30(2):276–292, 1992.

[RLD92] (1,2)

Jean-Louis Roujean, Marc Leroy, and Pierre-Yves Deschamps. A bidirectional reflectance model of the earth’s surface for the correction of remote sensing data. Journal of Geophysical Research: Atmospheres, 97(D18):20455–20468, 1992.

[RZJ+16] (1,2)

David P Roy, HK Zhang, Junchang Ju, Jose Luis Gomez-Dans, Philip E Lewis, CB Schaaf, Qingsong Sun, Jian Li, Haiyan Huang, and V Kovalskyy. A general method to normalize Landsat reflectance data to nadir BRDF adjusted reflectance. Remote Sensing of Environment, 176:255–271, 2016.

[SGS+02] (1,2)

Crystal B Schaaf, Feng Gao, Alan H Strahler, Wolfgang Lucht, Xiaowen Li, Trevor Tsang, Nicholas C Strugnell, Xiaoyang Zhang, Yufang Jin, Jan-Peter Muller, and others. First operational BRDF, albedo nadir reflectance products from MODIS. Remote sensing of Environment, 83(1-2):135–148, 2002.

[SLY+18]

Lin Sun, Xinyan Liu, Yikun Yang, TingTing Chen, Quan Wang, and Xueying Zhou. A cloud shadow detection method combined with cloud height iteration and spectral analysis for landsat 8 oli data. ISPRS Journal of Photogrammetry and Remote Sensing, 138:193–207, 2018.

[ZRK16]

Hankui K Zhang, David P Roy, and Valeriy Kovalskyy. Optimal solar geometry definition for global long-term landsat time-series bidirectional reflectance normalization. IEEE Transactions on Geoscience and Remote Sensing, 54(3):1410–1418, 2016.