Skip to content

Commit

Permalink
Correctly georeference canvas to GeoPDF exports
Browse files Browse the repository at this point in the history
  • Loading branch information
nyalldawson committed Aug 19, 2019
1 parent bc96df9 commit 71ccfed
Showing 1 changed file with 17 additions and 1 deletion.
18 changes: 17 additions & 1 deletion src/core/qgsmaprenderertask.cpp
Expand Up @@ -201,9 +201,25 @@ bool QgsMapRendererTask::run()
job->nextPart();
}
QgsAbstractGeoPdfExporter::ExportDetails exportDetails = mGeoPdfExportDetails;
exportDetails.pageSizeMm = mMapSettings.outputSize() * 25.4 / mMapSettings.outputDpi();
const double pageWidthMM = mMapSettings.outputSize().width() * 25.4 / mMapSettings.outputDpi();
const double pageHeightMM = mMapSettings.outputSize().height() * 25.4 / mMapSettings.outputDpi();
exportDetails.pageSizeMm = QSizeF( pageWidthMM, pageHeightMM );
exportDetails.dpi = mMapSettings.outputDpi();

if ( mSaveWorldFile )
{
// setup georeferencing
QgsAbstractGeoPdfExporter::GeoReferencedSection georef;
georef.crs = mMapSettings.destinationCrs();
georef.pageBoundsMm = QgsRectangle( 0, 0, pageWidthMM, pageHeightMM );
georef.controlPoints.reserve( 4 );
georef.controlPoints << QgsAbstractGeoPdfExporter::ControlPoint( QgsPointXY( 0, 0 ), mMapSettings.mapToPixel().toMapCoordinates( 0, 0 ) );
georef.controlPoints << QgsAbstractGeoPdfExporter::ControlPoint( QgsPointXY( pageWidthMM, 0 ), mMapSettings.mapToPixel().toMapCoordinates( mMapSettings.outputSize().width(), 0 ) );
georef.controlPoints << QgsAbstractGeoPdfExporter::ControlPoint( QgsPointXY( pageWidthMM, pageHeightMM ), mMapSettings.mapToPixel().toMapCoordinates( mMapSettings.outputSize().width(), mMapSettings.outputSize().height() ) );
georef.controlPoints << QgsAbstractGeoPdfExporter::ControlPoint( QgsPointXY( 0, pageHeightMM ), mMapSettings.mapToPixel().toMapCoordinates( 0, mMapSettings.outputSize().height() ) );
exportDetails.georeferencedSections << georef;
}

mGeoPdfExporter->finalize( pdfComponents, mFileName, exportDetails );
mGeoPdfExporter.reset();
mTempPainter.reset();
Expand Down

0 comments on commit 71ccfed

Please sign in to comment.