HillshadeRenderer Class
A hillshade raster renderer. More...
Header: | #include <HillshadeRenderer.h> |
Since: | Esri::ArcGISRuntime 100.0 |
Inherits: | Esri::ArcGISRuntime::RasterRenderer |
Inherited By: |
This class was introduced in Esri::ArcGISRuntime 100.0.
Public Functions
HillshadeRenderer(double altitude, double azimuth, double zFactor, Esri::ArcGISRuntime::SlopeType slopeType, double pixelSizeFactor, double pixelSizePower, int outputBitDepth, QObject *parent = nullptr) | |
HillshadeRenderer(double altitude, double azimuth, double zFactor, QObject *parent = nullptr) | |
HillshadeRenderer(QObject *parent = nullptr) | |
virtual | ~HillshadeRenderer() override |
double | altitude() const |
double | azimuth() const |
int | outputBitDepth() const |
double | pixelSizeFactor() const |
double | pixelSizePower() const |
Esri::ArcGISRuntime::SlopeType | slopeType() const |
double | zFactor() const |
Detailed Description
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(double altitude, double azimuth, double zFactor, Esri::ArcGISRuntime::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(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(QObject *parent = nullptr)
Default constructor with an optional parent.
The default values are:
- altitude -
45 degrees
- azimuth -
315 degrees
- zFactor -
1
- slopeType -
SlopeType::None
- pixelSizeFactor -
1
- pixelSizePower -
1
- outputBitDepth -
8
[override virtual]
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
.
Esri::ArcGISRuntime::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
.