Skip To Content ArcGIS for Developers Sign In Dashboard

HillshadeRenderer Class

(Esri::ArcGISRuntime::HillshadeRenderer)

A hillshade raster renderer. More...

Header: #include <HillshadeRenderer>
Since: Esri::ArcGISRuntime 100.0
Inherits: RasterRenderer
Inherited By:

Esri::ArcGISRuntime::BlendRenderer

Public Functions

HillshadeRenderer(QObject *parent = nullptr)
HillshadeRenderer(double altitude, double azimuth, double zFactor, QObject *parent = nullptr)
HillshadeRenderer(double altitude, double azimuth, double zFactor, SlopeType slopeType, double pixelSizeFactor, double pixelSizePower, int outputBitDepth, QObject *parent = nullptr)
~HillshadeRenderer()
double altitude() const
double azimuth() const
int outputBitDepth() const
double pixelSizeFactor() const
double pixelSizePower() const
SlopeType slopeType() const
double zFactor() const

Additional Inherited Members

Detailed Description

A hillshade raster renderer.

A hillshade renderer can help visualize raster data using RasterLayer. Also known as shaded relief, a hillshade is a grayscale representation of a 3D surface, with the light source's specified angle used for shading the image.

Note: HillshadeRenderer can be applied to a RasterLayer created with single band raster data. For a multi-band raster data, RGBRenderer might be a better fit.

// Apply the hillshade renderer to the raster layer
constexpr double altitude = 45.0;
constexpr double azimuth = 315.0;
constexpr double zFactor = 0.000016;
constexpr SlopeType slopeType = SlopeType::None;
constexpr double pixelSizeFactor = 1.0;
constexpr double pixelSizePower = 1.0;
constexpr int outputBitDepth = 8;
HillshadeRenderer* hillshadeRenderer = new HillshadeRenderer(altitude, azimuth, zFactor, slopeType, pixelSizeFactor, pixelSizePower, outputBitDepth, this);
m_rasterLayer->setRenderer(hillshadeRenderer);

Member Function Documentation

HillshadeRenderer::HillshadeRenderer(QObject *parent = nullptr)

Default constructor with an optional parent.

The default values are:

HillshadeRenderer::HillshadeRenderer(double altitude, double azimuth, double zFactor, QObject *parent = nullptr)

Constructor that takes the following parameters:

  • altitude - The light's angle of elevation above the horizon.
  • azimuth - The light's relative angle along the horizon measured clockwise, where 0 is north.
  • zFactor - The z-factor used to convert z unit to x,y units.
  • parent - The optional parent.

HillshadeRenderer::HillshadeRenderer(double altitude, double azimuth, double zFactor, SlopeType slopeType, double pixelSizeFactor, double pixelSizePower, int outputBitDepth, QObject *parent = nullptr)

Constructor that takes the following parameters:

  • altitude - The light's angle of elevation above the horizon.
  • azimuth - The light's relative angle along the horizon measured clockwise, where 0 is north.
  • zFactor - The z-factor used to convert z unit to x,y units.
  • slopeType - The SlopeType.
  • pixelSizeFactor - The pixel size factor to account altitude changes as the viewer zooms.
  • pixelSizePower - The pixel size power to account altitude changes as the viewer zooms.
  • outputBitDepth - The output bit depth.
  • parent - The optional parent.

HillshadeRenderer::~HillshadeRenderer()

Destructor.

double HillshadeRenderer::altitude() const

Returns the sun's angle of elevation above the horizon and ranges from 0 to 90 degrees.

A value of 0 degrees indicates that the sun is on the horizon, that is, on the same horizontal plane as the frame of reference. A value of 90 degrees indicates that the sun is directly overhead. Together the altitude and azimuth indicate the sun's relative position.

The default value is 45 degrees.

double HillshadeRenderer::azimuth() const

Returns the sun's relative position along the horizon (in degrees).

This position is indicated by the angle of the sun measured clockwise from due north. An azimuth of 0 degrees indicates north, east is 90 degrees, south is 180 degrees, and west is 270 degrees.

The default is 315 degrees.

int HillshadeRenderer::outputBitDepth() const

Returns the bit depth (pixel depth) of a raster cell.

Determines the range of values that a particular raster can store, which is based on the formula 2n (where n is the bit depth). For example, an 8-bit raster can have 256 unique values that range from 0 to 255.

The default bit depth is 8.

double HillshadeRenderer::pixelSizeFactor() const

Returns the pixel size factor.

Pixel size factor and pixel size power allow nonlinear adjustments to be made to elevation scaling. This is typically recommended when working with world-wide datasets projected using World Mercator. These values adjust the zFactor as follows:

Adjusted ZFactor = (ZFactor) + (PixelSize)^PixelSizePower * (PixelSizeFactor)

The default value is 1.

double HillshadeRenderer::pixelSizePower() const

Returns the pixel size power.

Pixel size factor and pixel size power allow nonlinear adjustments to be made to elevation scaling. This is typically recommended when working with world-wide datasets projected using World Mercator. These values adjust the zFactor as follows:

Adjusted ZFactor = (ZFactor) + (PixelSize)^PixelSizePower * (PixelSizeFactor)

The default value is 1.

SlopeType HillshadeRenderer::slopeType() const

Returns the manner in which inclination of the slope is calculated.

The default is SlopeType::None.

double HillshadeRenderer::zFactor() const

Returns a scaling factor.

This is used to convert the elevation values for two purposes:

  • To convert the elevation units (such as meters or feet) to the horizontal coordinate units (x,y) of the dataset, which may be feet, meters, or degrees.
  • To add vertical exaggeration for visual effect.

If the x,y units and z units are in the same units of measure the z-factor is 1, unless a vertical exaggeration needs to be applied. If the x,y units and z units are in different units of measure the z-factor must be set to the appropriate factor, or the results will be incorrect. For example, if your z units are feet and your x,y units are meters, you would use a z-factor of 0.3048 to convert your z units from feet to meters (1 foot = 0.3048 meter).

The default value is 1.


Feedback on this topic?