17#include "moc_qgsdemterraingenerator.cpp"
27 delete mHeightMapGenerator;
38 return qobject_cast<QgsRasterLayer *>( mLayer.
layer.data() );
44 mTransformContext = context;
53 cloned->mLayer = mLayer;
54 cloned->mResolution = mResolution;
55 cloned->mSkirtHeight = mSkirtHeight;
57 cloned->updateGenerator();
74 if ( mHeightMapGenerator )
75 return mHeightMapGenerator->heightAt( x, y );
82 elem.setAttribute( QStringLiteral(
"layer" ), mLayer.
layerId );
83 elem.setAttribute( QStringLiteral(
"resolution" ), mResolution );
84 elem.setAttribute( QStringLiteral(
"skirt-height" ), mSkirtHeight );
91 mLayer =
QgsMapLayerRef( elem.attribute( QStringLiteral(
"layer" ) ) );
92 mResolution = elem.attribute( QStringLiteral(
"resolution" ) ).toInt();
93 mSkirtHeight = elem.attribute( QStringLiteral(
"skirt-height" ) ).toFloat();
126void QgsDemTerrainGenerator::updateGenerator()
132 delete mHeightMapGenerator;
133 mHeightMapGenerator =
new QgsDemHeightMapGenerator( dem,
mTerrainTilingScheme, mResolution, mTransformContext );
139 delete mHeightMapGenerator;
140 mHeightMapGenerator =
nullptr;
static QgsRectangle tryReprojectExtent2D(const QgsRectangle &extent, const QgsCoordinateReferenceSystem &crs1, const QgsCoordinateReferenceSystem &crs2, const QgsCoordinateTransformContext &context)
Reprojects extent from crs1 to crs2 coordinate reference system with context context.
This class represents a coordinate reference system (CRS).
bool isValid() const
Returns whether this CRS is correctly initialized and usable.
Contains information about the context in which a coordinate transform is executed.
~QgsDemTerrainGenerator() override
QgsRectangle rootChunkExtent() const override
extent of the terrain's root chunk in terrain's CRS
float heightAt(double x, double y, const Qgs3DRenderContext &context) const override
Returns height at (x,y) in map's CRS.
Type type() const override
What texture generator implementation is this.
void setCrs(const QgsCoordinateReferenceSystem &crs, const QgsCoordinateTransformContext &context)
Sets CRS of the terrain.
void readXml(const QDomElement &elem) override
Read terrain generator's configuration from XML.
QgsTerrainGenerator * clone() const override
Makes a copy of the current instance.
void resolveReferences(const QgsProject &project) override
After read of XML, resolve references to any layers that have been read as layer IDs.
QgsRasterLayer * layer() const
Returns raster layer with elevation model to be used for terrain generation.
void setExtent(const QgsRectangle &extent) override
sets the extent of the terrain in terrain's CRS
QgsCoordinateReferenceSystem crs() const override
Returns CRS of the terrain.
void writeXml(QDomElement &elem) const override
Write terrain generator's configuration to XML.
QgsChunkLoader * createChunkLoader(QgsChunkNode *node) const override
void setLayer(QgsRasterLayer *layer)
Sets raster layer with elevation model to be used for terrain generation.
QgsDemTerrainGenerator()=default
virtual QgsRectangle extent() const
Returns the extent of the layer.
QgsCoordinateReferenceSystem crs
Encapsulates a QGIS project, including sets of map layers and their styles, layouts,...
Q_INVOKABLE QgsMapLayer * mapLayer(const QString &layerId) const
Retrieve a pointer to a registered layer by layer ID.
Represents a raster layer.
A rectangle specified with double values.
QgsRectangle intersect(const QgsRectangle &rect) const
Returns the intersection with the given rectangle.
Type
Enumeration of the available terrain generators.
@ Dem
Terrain is built from raster layer with digital elevation model.
QgsTilingScheme mTerrainTilingScheme
Tiling scheme of the terrain.
virtual QgsRectangle extent() const
extent of the terrain in terrain's CRS, might be non-square and smaller than rootChunkExtent()
QgsTerrainEntity * mTerrain
virtual void setTerrain(QgsTerrainEntity *t)
Sets terrain entity for the generator (does not transfer ownership)
QgsRectangle tileToExtent(int x, int y, int z) const
Returns map coordinates of the extent of a tile.
_LayerRef< QgsMapLayer > QgsMapLayerRef
const QgsCoordinateReferenceSystem & crs
QPointer< TYPE > layer
Weak pointer to map layer.
QString layerId
Original layer ID.