39#ifndef OPENSWMMVIS_MESH_TERRAINSIZEFIELD_H
40#define OPENSWMMVIS_MESH_TERRAINSIZEFIELD_H
64 std::function<void(
const float *,
int,
int,
int)>
rowSink;
141 const std::function<
bool(
double)> &
progress = {});
157 [[nodiscard]]
double sizeAtGeo(
double x,
double y)
const;
166 [[nodiscard]]
double pixelSize()
const {
return m_pixelSize; }
225 [[nodiscard]]
double sizePixelsAt(
double px,
double py)
const;
233 [[nodiscard]]
bool isValid()
const {
return m_outCols > 0 && m_outRows > 0; }
239 [[nodiscard]]
int outCols()
const {
return m_outCols; }
245 [[nodiscard]]
int outRows()
const {
return m_outRows; }
252 [[nodiscard]]
int outLevel()
const {
return m_outLevel; }
268 [[nodiscard]]
const QVector<float> &
cells()
const {
return m_h; }
276 [[nodiscard]] QString
errorMsg()
const {
return m_errorMsg; }
298 void processBand(
const float *z,
int cols,
int bandRows,
int bandRow0,
double tol);
310 void dilateMinimum();
313 int m_outCols = 0, m_outRows = 0;
314 int m_outLevel = 2, m_maxLevel = 10;
315 int m_col0 = 0, m_row0 = 0, m_cols = 0, m_rows = 0;
316 int m_decimation = 1;
317 double m_geo[6] = {0, 1, 0, 0, 0, 1};
318 double m_invGeo[6] = {0, 1, 0, 0, 0, 1};
319 double m_pixelSize = 0.0;
int band
Definition blocks.cpp:29
Definition terrainsizefield.h:73
QString errorMsg() const
Copy the latest checked build diagnostic.
Definition terrainsizefield.h:276
bool buildFromFile(const QString &path, int band, double gx0, double gy0, double gx1, double gy1, const TerrainSizeOptions &opt, const std::function< bool(double)> &progress={})
Open a read-only raster and build over the clipped pixel envelope of a native-CRS box.
Definition terrainsizefield.cpp:309
bool buildFromGrid(const float *z, int cols, int rows, const TerrainSizeOptions &opt)
Build from a borrowed in-memory row-major float elevation grid using aligned dyadic bands.
Definition terrainsizefield.cpp:181
int outLevel() const
Read the retained output-grid dyadic exponent.
Definition terrainsizefield.h:252
QPointF windowPixelToGeo(double px, double py) const
Transform a fractional window-stream pixel coordinate to the retained native raster frame.
Definition terrainsizefield.cpp:366
bool isValid() const
Check whether stored output dimensions are positive.
Definition terrainsizefield.h:233
int levelsUsed() const
Read the retained maximum dyadic level available to the computation.
Definition terrainsizefield.h:259
bool build(GDALDataset *ds, int band, int col0, int row0, int cols, int rows, const TerrainSizeOptions &opt, const std::function< bool(double)> &progress={})
Replace this terrain-size grid by streaming a borrowed raster window, or stream rows only.
Definition terrainsizefield.cpp:212
int outCols() const
Read allocated terrain-size output column count.
Definition terrainsizefield.h:239
double sizeAtGeo(double x, double y) const
Read resolved pixel size multiplied by mean native raster pixel spacing.
Definition terrainsizefield.cpp:357
const QVector< float > & cells() const
Borrow the row-major resolved-size grid owned by this field.
Definition terrainsizefield.h:268
double sizePixelsAt(double px, double py) const
Read the nearest output-cell resolved size using absolute source-raster pixel coordinates.
Definition terrainsizefield.cpp:374
int outRows() const
Read allocated terrain-size output row count.
Definition terrainsizefield.h:245
double pixelSize() const
Read mean absolute diagonal geotransform pixel spacing stored by buildFromFile().
Definition terrainsizefield.h:166
QString path
Populated by the worker only after its own successful atomic creation.
Definition extensiontimeseriesaccess.cpp:32
GDALDataset * ds
Definition meshassignmentsampling.cpp:78
Definition meshcommands.h:38
Definition terrainsizefield.h:53
int maxLevel
Largest block tested: 2^maxLevel pixels (1024).
Definition terrainsizefield.h:55
int decimation
Definition terrainsizefield.h:69
std::function< void(const float *, int, int, int)> rowSink
Definition terrainsizefield.h:64
bool rowsOnly
Stream rows without allocating or computing a size grid.
Definition terrainsizefield.h:65
double tolerance
Vertical tolerance in the DEM's units. <= 0 = no field.
Definition terrainsizefield.h:54
int outLevel
Definition terrainsizefield.h:56
qint64 maxBandBytes
a full-width band of 2^maxLevel rows would exceed it.
Definition terrainsizefield.h:58
int rows
Definition terrainerrorfield.cpp:54
int y
Definition terrainerrorfield.cpp:60
int cols
Definition terrainerrorfield.cpp:54
int x
Definition terrainerrorfield.cpp:60
const ExportProgress * progress
Definition vectorexport.cpp:211