xrspatial.hillshade.hillshade

xrspatial.hillshade.hillshade(agg: xarray.core.dataarray.DataArray, azimuth: int = 225, angle_altitude: int = 25, name: Optional[str] = 'hillshade') xarray.core.dataarray.DataArray[source]

Calculates, for all cells in the array, an illumination value of each cell based on illumination from a specific azimuth and altitude.

Parameters
  • agg (xarray.DataArray) – 2D NumPy, CuPy, NumPy-backed Dask, or Cupy-backed Dask array of elevation values.

  • angle_altitude (int, default=25) – Altitude angle of the sun specified in degrees.

  • azimuth (int, default=225) – The angle between the north vector and the perpendicular projection of the light source down onto the horizon specified in degrees.

  • name (str, default='hillshade') – Name of output DataArray.

Returns

hillshade_agg – 2D aggregate array of illumination values.

Return type

xarray.DataArray, of same type as agg

References

Examples

import numpy as np
import xarray as xr
from xrspatial import hillshade

data = np.array([
    [0., 0., 0., 0., 0.],
    [0., 1., 0., 2., 0.],
    [0., 0., 3., 0., 0.],
    [0., 0., 0., 0., 0.],
    [0., 0., 0., 0., 0.]
])
n, m = data.shape
raster = xr.DataArray(data, dims=['y', 'x'], name='raster')
raster['y'] = np.arange(n)[::-1]
raster['x'] = np.arange(m)

hillshade_agg = hillshade(raster)
>>> print(hillshade_agg)
<xarray.DataArray 'hillshade' (y: 5, x: 5)>
array([[       nan,        nan,        nan,        nan,        nan],
       [       nan, 0.71130913, 0.44167341, 0.71130913,        nan],
       [       nan, 0.95550163, 0.71130913, 0.52478473,        nan],
       [       nan, 0.71130913, 0.88382559, 0.71130913,        nan],
       [       nan,        nan,        nan,        nan,        nan]])
Coordinates:
  * y        (y) int32 4 3 2 1 0
  * x        (x) int32 0 1 2 3 4