xrspatial.zonal.trim#
- xrspatial.zonal.trim(raster: DataArray, values: list | tuple = (nan,), name: str = 'trim') DataArray[source]#
Trim scans from the edges and eliminates rows / cols which only contain the values supplied.
- Parameters:
raster (xr.DataArray)
values (list or tuple, default=(np.nan)) – List of zone ids to trim from raster edge.
name (str, default='trim') – Output xr.DataArray.name property.
- Returns:
trim_agg
- Return type:
xarray.DataArray
Notes
This operation will change the output size of the raster.
Examples
import matplotlib.pyplot as plt import numpy as np import xarray as xr from xrspatial import generate_terrain from xrspatial.zonal import trim # Generate Example Terrain W = 500 H = 300 template_terrain = xr.DataArray(np.zeros((H, W))) x_range=(-20e6, 20e6) y_range=(-20e6, 20e6) terrain_agg = generate_terrain( template_terrain, x_range=x_range, y_range=y_range ) # Edit Attributes terrain_agg = terrain_agg.assign_attrs( { 'Description': 'Example Terrain', 'units': 'km', 'Max Elevation': '4000', } ) terrain_agg = terrain_agg.rename({'x': 'lon', 'y': 'lat'}) terrain_agg = terrain_agg.rename('Elevation') terrain_agg = terrain_agg.astype('int') # Trim Image trimmed_agg = trim(raster = terrain_agg, values = [0]) # Edit Attributes trimmed_agg = trimmed_agg.assign_attrs({'Description': 'Example Trim'}) # Plot Terrain terrain_agg.plot(cmap = 'terrain', aspect = 2, size = 4) plt.title("Terrain") plt.ylabel("latitude") plt.xlabel("longitude") # Plot Trimmed Terrain trimmed_agg.plot(cmap = 'terrain', aspect = 2, size = 4) plt.title("Trim") plt.ylabel("latitude") plt.xlabel("longitude")
>>> print(terrain_agg.shape) (300, 500) >>> print(terrain_agg.attrs) { 'res': (80000.0, 133333.3333333333), 'Description': 'Example Terrain', 'units': 'km', 'Max Elevation': '4000', } >>> print(trimmed_agg.shape) (268, 500) >>> print(trimmed_agg.attrs) { 'res': (80000.0, 133333.3333333333), 'Description': 'Example Trim', 'units': 'km', 'Max Elevation': '4000', }