pcmdi_metrics.utils.apply_landmask
- pcmdi_metrics.utils.apply_landmask(obj, data_var=None, landfrac=None, keep_over='ocean', land_criteria=0.8, ocean_criteria=0.2)[source]
Apply a land-sea mask to a given DataArray or Dataset.
This function applies a land-sea mask to either a DataArray or a variable within a Dataset. It can keep values over land or ocean based on the specified criteria.
- Parameters:
obj (
Union[xr.Dataset
,xr.DataArray]
) – The Dataset or DataArray to which the land-sea mask will be applied.data_var (
str
, optional) – Name of the DataArray in the Dataset. Required if obj is a Dataset.landfrac (
xr.DataArray
, optional) – Land fraction data array. Values should range from 0 (ocean) to 1 (land). If None, a land-sea mask will be created automatically.keep_over (
{'land', 'ocean'}
, optional) – Specifies whether to keep values over “land” or “ocean”. Default is “ocean”.land_criteria (
float
, optional) – Threshold for considering a grid cell as land. Default is 0.8.ocean_criteria (
float
, optional) – Threshold for considering a grid cell as ocean. Default is 0.2.
- Returns:
xr.DataArray
– DataArray with the land-sea mask applied.- Raises:
ValueError – If data_var is not provided when obj is a Dataset, or if keep_over is invalid.
Notes
If landfrac is not provided, it will be generated using the ‘create_land_sea_mask’ function.
The function can handle land fraction data in both percentage (0-100) and fractional (0-1) formats.
See also
create_land_sea_mask
The underlying function used to apply the mask.
apply_oceanmask
A sister function used to apply the mask out ocean.
Examples
>>> from pcmdi_metrics.utils import apply_landmask >>> # Keep values over land (mask ocean) >>> da_land = apply_landmask(da, landfrac=mask, keep_over="land") # when input is DataArray >>> da_land = apply_landmask(ds, data_var="ts", landfrac=mask, keep_over="land") # DataSet >>> # Keep values over ocean (mask land) >>> da_ocean = apply_landmask(da, landfrac=mask, keep_over="ocean") # when input is DataArray >>> da_ocean = apply_landmask(ds, data_var="ts", landfrac=mask, keep_over="ocean") # use DataSet