27 , mOutputFilePath( outputPath )
28 , mInterpolationExtent( extent )
29 , mNumColumns( nCols )
31 , mCellSizeX( extent.width() / nCols )
32 , mCellSizeY( extent.height() / nRows )
37 QFile outputFile( mOutputFilePath );
39 if ( !outputFile.open( QFile::WriteOnly | QIODevice::Truncate ) )
50 QTextStream outStream( &outputFile );
51 #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
52 outStream.setCodec(
"UTF-8" );
54 outStream.setRealNumberPrecision( 8 );
55 writeHeader( outStream );
57 double currentYValue = mInterpolationExtent.
yMaximum() - mCellSizeY / 2.0;
59 double interpolatedValue;
61 for (
int i = 0; i < mNumRows; ++i )
63 currentXValue = mInterpolationExtent.
xMinimum() + mCellSizeX / 2.0;
64 for (
int j = 0; j < mNumColumns; ++j )
66 if ( mInterpolator->
interpolatePoint( currentXValue, currentYValue, interpolatedValue, feedback ) == 0 )
68 outStream << interpolatedValue <<
' ';
72 outStream <<
"-9999 ";
74 currentXValue += mCellSizeX;
76 #if QT_VERSION < QT_VERSION_CHECK(5, 14, 0)
79 outStream << Qt::endl;
81 currentYValue -= mCellSizeY;
90 feedback->
setProgress( 100.0 * i /
static_cast< double >( mNumRows ) );
99 const QFileInfo fi( mOutputFilePath );
100 const QString fileName = fi.absolutePath() +
'/' + fi.completeBaseName() +
".prj";
101 QFile prjFile( fileName );
102 if ( !prjFile.open( QFile::WriteOnly | QIODevice::Truncate ) )
106 QTextStream prjStream( &prjFile );
108 #if QT_VERSION < QT_VERSION_CHECK(5, 14, 0)
111 prjStream << Qt::endl;
118 int QgsGridFileWriter::writeHeader( QTextStream &outStream )
120 #if QT_VERSION < QT_VERSION_CHECK(5, 14, 0)
121 outStream <<
"NCOLS " << mNumColumns << endl;
122 outStream <<
"NROWS " << mNumRows << endl;
123 outStream <<
"XLLCORNER " << mInterpolationExtent.
xMinimum() << endl;
124 outStream <<
"YLLCORNER " << mInterpolationExtent.
yMinimum() << endl;
126 outStream <<
"NCOLS " << mNumColumns << Qt::endl;
127 outStream <<
"NROWS " << mNumRows << Qt::endl;
128 outStream <<
"XLLCORNER " << mInterpolationExtent.
xMinimum() << Qt::endl;
129 outStream <<
"YLLCORNER " << mInterpolationExtent.
yMinimum() << Qt::endl;
131 if ( mCellSizeX == mCellSizeY )
133 #if QT_VERSION < QT_VERSION_CHECK(5, 14, 0)
134 outStream <<
"CELLSIZE " << mCellSizeX << endl;
136 outStream <<
"CELLSIZE " << mCellSizeX << Qt::endl;
141 #if QT_VERSION < QT_VERSION_CHECK(5, 14, 0)
142 outStream <<
"DX " << mCellSizeX << endl;
143 outStream <<
"DY " << mCellSizeY << endl;
145 outStream <<
"DX " << mCellSizeX << Qt::endl;
146 outStream <<
"DY " << mCellSizeY << Qt::endl;
149 #if QT_VERSION < QT_VERSION_CHECK(5, 14, 0)
150 outStream <<
"NODATA_VALUE -9999" << endl;
152 outStream <<
"NODATA_VALUE -9999" << Qt::endl;
QString toWkt(WktVariant variant=WKT1_GDAL, bool multiline=false, int indentationWidth=4) const
Returns a WKT representation of this CRS.
An interface for objects which provide features via a getFeatures method.
virtual QgsCoordinateReferenceSystem sourceCrs() const =0
Returns the coordinate reference system for features in the source.
Base class for feedback objects to be used for cancellation of something running in a worker thread.
bool isCanceled() const SIP_HOLDGIL
Tells whether the operation has been canceled already.
void setProgress(double progress)
Sets the current progress for the feedback object.
QgsGridFileWriter(QgsInterpolator *interpolator, const QString &outputPath, const QgsRectangle &extent, int nCols, int nRows)
Constructor for QgsGridFileWriter, for the specified interpolator.
int writeFile(QgsFeedback *feedback=nullptr)
Writes the grid file.
Interface class for interpolations.
virtual int interpolatePoint(double x, double y, double &result, QgsFeedback *feedback=nullptr)=0
Calculates interpolation value for map coordinates x, y.
QList< LayerData > layerData() const
A rectangle specified with double values.
double yMaximum() const SIP_HOLDGIL
Returns the y maximum value (top side of rectangle).
double xMinimum() const SIP_HOLDGIL
Returns the x minimum value (left side of rectangle).
double yMinimum() const SIP_HOLDGIL
Returns the y minimum value (bottom side of rectangle).
const QgsCoordinateReferenceSystem & crs
A source together with the information about interpolation attribute / z-coordinate interpolation and...
QgsFeatureSource * source
Feature source.