act.retrievals.generic_sobel_cbh#
- act.retrievals.generic_sobel_cbh(ds, variable=None, height_dim=None, var_thresh=None, fill_na=None, return_thresh=False, filter_type='uniform', edge_thresh=5.0)[source]#
Function for calculating cloud base height from lidar/radar data using a basic sobel filter and thresholding. Note, this was not initially based on any published work, but a lit review indicates that there have been similar methods employed to detect boundary layer heights.
NOTE: The returned variable now appends the field name of the data used to generate the CBH as part of the variable name. cbh_sobel_[varname]
- Parameters:
ds (ACT xarray.Dataset) – ACT xarray dataset where data are stored.
variable (string) – Variable on which to process.
height_dim (string) – Height variable to use for CBH values.
var_thresh (float) – Thresholding for variable if needed.
fill_na (float) – Value to fill nans with in DataArray if any.
filter_type (string) – Currently the only option is for uniform filtering. uniform: Apply uniform filtering after the sobel filter? Applies a standard area of 3x3 filtering None: Excludes the filtering
edge_thresh (float) – Threshold value for finding the edge after the sobel filtering. If the signal is not strong, this may need to be lowered
- Returns:
new_ds (ACT xarray.Dataset) – ACT xarray dataset with cbh values included as variable.
Examples
In testing on the ARM KAZR and MPL data, the following methods tended to work best for thresholding/corrections/etc.
kazr = act.retrievals.cbh.generic_sobel_cbh( kazr, variable="reflectivity_copol", height_dim="range", var_thresh=-10.0 ) mpl = act.corrections.mpl.correct_mpl(mpl) mpl.range_bins.values = mpl.height.values[0, :] * 1000.0 mpl.range_bins.attrs["units"] = "m" mpl["signal_return_co_pol"].values[:, 0:10] = 0.0 mpl = act.retrievals.cbh.generic_sobel_cbh( mpl, variable="signal_return_co_pol", height_dim="range_bins", var_thresh=10.0, fill_na=0.0, ) ceil = act.retrievals.cbh.generic_sobel_cbh( ceil, variable="backscatter", height_dim="range", var_thresh=1000.0, fill_na=0, )