57#ifndef OPENSWMMVIS_MESH_DTMTHINNER_H
58#define OPENSWMMVIS_MESH_DTMTHINNER_H
140 bool open(
const QString &filePath,
int band = 1);
142 [[nodiscard]]
bool isOpen() const noexcept;
163 QVector<double> *outZ =
nullptr,
165 const DTMThinnerLimits &limits = {})
const;
168 [[nodiscard]] QString
crsWkt()
const;
169 [[nodiscard]] QString
errorMsg()
const {
return m_errorMsg; }
173 [[nodiscard]]
double sampleAt(
double x,
double y)
const;
202 QVector<double> *outZ,
226 QVector<QPointF> &xyOut,
227 QVector<double> &zOut)
const;
237 bool fillBandGrid(
double x0,
double y0,
double step,
int cols, qint64 rows64,
238 qint64 rBegG, qint64 rEndG,
239 QVector<float> &gx, QVector<float> &gy, QVector<float> &gz,
240 QVector<quint8> &active, qint64 *nActiveOut,
241 const std::function<
bool(
double)> &tick)
const;
243 GDALDataset *m_ds =
nullptr;
245 double m_geo[6] = {};
246 double m_invGeo[6] = {};
249 double m_noData = 0.0;
250 bool m_hasNoData =
false;
251 mutable QString m_errorMsg;
An axis-aligned bounding box in the coordinate space of a given CRS.
Definition mapextent.h:26
Terrain-adaptive Steiner point selector from a DTM raster.
Definition dtmthinner.h:132
void readPixels(const MapExtent &bbox, QVector< QPointF > &xyOut, QVector< double > &zOut) const
Read every valid raster pixel whose centre falls within bbox.
Definition dtmthinner.cpp:579
double sampleAt(double x, double y) const
Sample the DTM at a single map-CRS coordinate. Returns NaN when out-of-bounds or NoData.
Definition dtmthinner.cpp:373
bool open(const QString &filePath, int band=1)
Definition dtmthinner.cpp:319
bool isOpen() const noexcept
Definition dtmthinner.cpp:317
static constexpr int kMaxThinningHalo
Definition dtmthinner.h:188
DTMThinner & operator=(const DTMThinner &)=delete
DTMThinner()
Definition dtmthinner.cpp:306
~DTMThinner()
Definition dtmthinner.cpp:307
double pixelSize() const
Definition dtmthinner.cpp:363
QString errorMsg() const
Definition dtmthinner.h:169
DTMThinner(const DTMThinner &)=delete
void close()
Definition dtmthinner.cpp:309
QString crsWkt() const
Definition dtmthinner.cpp:356
void sampleMany(const QVector< QPointF > &xy, QVector< double > *outZ, qint64 maxBufBytes=kMaxReadBufBytesDefault) const
Batch bilinear sampling at many DTM-CRS coordinates.
Definition dtmthinner.cpp:428
static constexpr qint64 kMaxGridBytesDefault
Definition dtmthinner.h:183
static constexpr qint64 kMaxReadBufBytesDefault
Definition dtmthinner.h:176
QVector< QPointF > generatePoints(const MapExtent &domain, const DTMThinnerOptions &opts={}, QVector< double > *outZ=nullptr, const DTMProgressFn &progress={}, const DTMThinnerLimits &limits={}) const
Generate terrain-significant sample points within domain.
Definition dtmthinner.cpp:693
static constexpr qint64 kMaxRetainedPointsDefault
Definition dtmthinner.h:185
Axis-aligned bounding box in a map coordinate system, used by MapCanvas and all layer types to define...
double step
Definition meshcellparams.cpp:28
QRectF bbox
Definition meshgenerator.cpp:166
Definition meshcommands.h:302
std::function< bool(double)> DTMProgressFn
Progress/cancel callback for DTMThinner::generatePoints().
Definition dtmthinner.h:78
Test-injectable resource limits for generatePoints().
Definition dtmthinner.h:86
qint64 maxGridBytes
per-BAND working set
Definition dtmthinner.h:87
qint64 maxRetainedPoints
total output cap
Definition dtmthinner.h:88
Parameters for the normal-deviation terrain thinning.
Definition dtmthinner.h:93
double gridSpacing
Sampling step in map units. 0 = native pixel size.
Definition dtmthinner.h:94
double minSpacing
Min inter-point distance, map units. 0 = auto (2×pixelSize).
Definition dtmthinner.h:111
bool useAverageDot
true = use average dot product; false = minimum.
Definition dtmthinner.h:98
int maxIterations
Number of thinning passes. 0 = unlimited (convergence).
Definition dtmthinner.h:103
double normalDotThreshold
Definition dtmthinner.h:95
bool useMinSpacing
Enable Poisson-disk minimum-spacing filter.
Definition dtmthinner.h:110
int maxPoints
Definition dtmthinner.h:99