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;
 
   77    outStream << Qt::endl;
 
   78    currentYValue -= mCellSizeY;
 
   87      feedback->
setProgress( 100.0 * i / 
static_cast< double >( mNumRows ) );
 
   96  const QFileInfo fi( mOutputFilePath );
 
   97  const QString fileName = fi.absolutePath() + 
'/' + fi.completeBaseName() + 
".prj";
 
   98  QFile prjFile( fileName );
 
   99  if ( !prjFile.open( QFile::WriteOnly | QIODevice::Truncate ) )
 
  103  QTextStream prjStream( &prjFile );
 
  105  prjStream << Qt::endl;
 
 
  111int QgsGridFileWriter::writeHeader( QTextStream &outStream )
 
  113  outStream << 
"NCOLS " << mNumColumns << Qt::endl;
 
  114  outStream << 
"NROWS " << mNumRows << Qt::endl;
 
  115  outStream << 
"XLLCORNER " << mInterpolationExtent.
xMinimum() << Qt::endl;
 
  116  outStream << 
"YLLCORNER " <<  mInterpolationExtent.
yMinimum() << Qt::endl;
 
  117  if ( mCellSizeX == mCellSizeY ) 
 
  119    outStream << 
"CELLSIZE " << mCellSizeX << Qt::endl;
 
  123    outStream << 
"DX " << mCellSizeX << Qt::endl;
 
  124    outStream << 
"DY " << mCellSizeY << Qt::endl;
 
  126  outStream << 
"NODATA_VALUE -9999" << Qt::endl;
 
QString toWkt(Qgis::CrsWktVariant variant=Qgis::CrsWktVariant::Wkt1Gdal, 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
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 xMinimum() const
Returns the x minimum value (left side of rectangle).
 
double yMinimum() const
Returns the y minimum value (bottom side of rectangle).
 
double yMaximum() const
Returns the y maximum value (top side of rectangle).
 
const QgsCoordinateReferenceSystem & crs
 
A source together with the information about interpolation attribute / z-coordinate interpolation and...
 
QgsFeatureSource * source
Feature source.