LuciadCPillar 2023.1.04
luciad::Map::HeightProvider Class Referenceabstract

A height provider based on the map layers order and visibility. More...

#include <luciad/maps/Map.h>

Public Member Functions

virtual ~HeightProvider ()=default
 
virtual std::optional< double > retrieveHeightAt (Coordinate pixelCoordinate, bool interpolate) const =0
 Return an elevation value at a specified pixel that corresponds with what is visible on the map. More...
 

Detailed Description

A height provider based on the map layers order and visibility.

This class is thread safe. Related article: Retrieving height data. Related article: Retrieving height data.

Since
2023.0

Constructor & Destructor Documentation

◆ ~HeightProvider()

virtual luciad::Map::HeightProvider::~HeightProvider ( )
virtualdefault

Member Function Documentation

◆ retrieveHeightAt()

virtual std::optional< double > luciad::Map::HeightProvider::retrieveHeightAt ( Coordinate  pixelCoordinate,
bool  interpolate 
) const
pure virtual

Return an elevation value at a specified pixel that corresponds with what is visible on the map.

The ´Map::HeightProvider´ loops over all the visible elevation raster model loaded on the map in a top to bottom fashion in search for elevation data. It Looks for the first model with a tile in the underlying raster data covering the specified pixel point. The pixel density used for the retrieveHeightAt call is based on the camera position and pixel queried. if elevation data is found it will be returned in the map reference unit of measure, std::nullopt otherwise.

Using interpolation makes sure that neighbouring height values form a smoother curve.

Parameters
pixelCoordinateThe pixel for which the height is requested. in device independent pixels coordinate.
interpolatebilinear interpolation is used if true, nearest neighbour if false. Enabling bilinear interpolation results in a smoother curve for neighboring samples, at the cost of a minor performance decrease.
Returns
the height expressed in the map reference unit of measure, or std::nullopt if no data is available for this pixel coordinate.
Remarks
this method is thread safe, you can call it from any thread.