Skip to content

Commit d5933f2

Browse files
committedDec 8, 2020
[georeferencer] Improve projection logic, default to raster projection
1 parent 27b4062 commit d5933f2

File tree

4 files changed

+19
-29
lines changed

4 files changed

+19
-29
lines changed
 

‎src/app/georeferencer/qgsgeorefmainwindow.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -543,8 +543,7 @@ void QgsGeoreferencerMainWindow::linkGeorefToQgis( bool link )
543543
void QgsGeoreferencerMainWindow::addPoint( const QgsPointXY &pixelCoords, const QgsPointXY &mapCoords, const QgsCoordinateReferenceSystem &crs,
544544
bool enable, bool finalize )
545545
{
546-
QgsGeorefDataPoint *pnt = new QgsGeorefDataPoint( mCanvas, QgisApp::instance()->mapCanvas(),
547-
pixelCoords, mapCoords, QgsCoordinateReferenceSystem( crs ), enable );
546+
QgsGeorefDataPoint *pnt = new QgsGeorefDataPoint( mCanvas, QgisApp::instance()->mapCanvas(), pixelCoords, mapCoords, crs, enable );
548547
mPoints.append( pnt );
549548
mGCPsDirty = true;
550549
if ( finalize )
@@ -635,10 +634,11 @@ void QgsGeoreferencerMainWindow::showCoordDialog( const QgsPointXY &pixelCoords
635634
{
636635
if ( mLayer && !mMapCoordsDialog )
637636
{
638-
mMapCoordsDialog = new QgsMapCoordsDialog( QgisApp::instance()->mapCanvas(), pixelCoords, this );
639-
connect( mMapCoordsDialog, &QgsMapCoordsDialog::pointAdded, this,
640-
[this]( const QgsPointXY & a, const QgsPointXY & b, const QgsCoordinateReferenceSystem & crs ) { this->addPoint( a, b, crs ); }
641-
);
637+
mMapCoordsDialog = new QgsMapCoordsDialog( QgisApp::instance()->mapCanvas(), pixelCoords, mProjection, this );
638+
connect( mMapCoordsDialog, &QgsMapCoordsDialog::pointAdded, this, [ = ]( const QgsPointXY & a, const QgsPointXY & b, const QgsCoordinateReferenceSystem & crs )
639+
{
640+
addPoint( a, b, crs );
641+
} );
642642
mMapCoordsDialog->show();
643643
}
644644
}

‎src/app/georeferencer/qgsmapcoordsdialog.cpp

Lines changed: 9 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,10 @@
2525
#include "qgsprojectionselectionwidget.h"
2626
#include "qgsproject.h"
2727

28-
QgsMapCoordsDialog::QgsMapCoordsDialog( QgsMapCanvas *qgisCanvas, const QgsPointXY &pixelCoords, QWidget *parent )
28+
QgsMapCoordsDialog::QgsMapCoordsDialog( QgsMapCanvas *qgisCanvas, const QgsPointXY &pixelCoords, QgsCoordinateReferenceSystem &rasterCrs, QWidget *parent )
2929
: QDialog( parent, Qt::Dialog )
3030
, mQgisCanvas( qgisCanvas )
31+
, mRasterCrs( rasterCrs )
3132
, mPixelCoords( pixelCoords )
3233
{
3334
setupUi( this );
@@ -61,7 +62,9 @@ QgsMapCoordsDialog::QgsMapCoordsDialog( QgsMapCanvas *qgisCanvas, const QgsPoint
6162

6263
connect( leXCoord, &QLineEdit::textChanged, this, &QgsMapCoordsDialog::updateOK );
6364
connect( leYCoord, &QLineEdit::textChanged, this, &QgsMapCoordsDialog::updateOK );
64-
connect( mProjSelect, &QgsProjectionSelectionWidget::crsChanged, this, &QgsMapCoordsDialog::updateCrs );
65+
66+
mProjectionSelector->setCrs( mRasterCrs );
67+
6568
updateOK();
6669
}
6770

@@ -96,14 +99,7 @@ void QgsMapCoordsDialog::buttonBox_accepted()
9699
if ( !ok )
97100
y = dmsToDD( leYCoord->text() );
98101

99-
if ( !mCrs.isValid() )
100-
{
101-
if ( mProjSelect->crs().isValid() )
102-
mCrs = mProjSelect->crs();
103-
else
104-
mCrs = mQgisCanvas->mapSettings().destinationCrs();
105-
}
106-
emit pointAdded( mPixelCoords, QgsPointXY( x, y ), mCrs );
102+
emit pointAdded( mPixelCoords, QgsPointXY( x, y ), mProjectionSelector->crs().isValid() ? mProjectionSelector->crs() : mRasterCrs );
107103
close();
108104
}
109105

@@ -126,8 +122,9 @@ void QgsMapCoordsDialog::maybeSetXY( const QgsPointXY &xy, Qt::MouseButton butto
126122
parentWidget()->activateWindow();
127123
parentWidget()->raise();
128124

129-
if ( !mProjSelect->crs().isValid() )
130-
mProjSelect->setCrs( mQgisCanvas->mapSettings().destinationCrs() );
125+
// set CRS to match canvas' point coordinates
126+
mProjectionSelector->setCrs( mQgisCanvas->mapSettings().destinationCrs() );
127+
131128
mPointFromCanvasPushButton->setChecked( false );
132129
buttonBox->button( QDialogButtonBox::Ok )->setFocus();
133130
activateWindow();
@@ -176,12 +173,6 @@ double QgsMapCoordsDialog::dmsToDD( const QString &dms )
176173
return res;
177174
}
178175

179-
void QgsMapCoordsDialog::updateCrs( const QgsCoordinateReferenceSystem &crs )
180-
{
181-
if ( crs.isValid() )
182-
mCrs = QgsCoordinateReferenceSystem( crs );
183-
}
184-
185176
QgsGeorefMapToolEmitPoint::QgsGeorefMapToolEmitPoint( QgsMapCanvas *canvas )
186177
: QgsMapTool( canvas )
187178
{

‎src/app/georeferencer/qgsmapcoordsdialog.h

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ class QgsMapCoordsDialog : public QDialog, private Ui::QgsMapCoordsDialogBase
5959
Q_OBJECT
6060

6161
public:
62-
QgsMapCoordsDialog( QgsMapCanvas *qgisCanvas, const QgsPointXY &pixelCoords, QWidget *parent = nullptr );
62+
QgsMapCoordsDialog( QgsMapCanvas *qgisCanvas, const QgsPointXY &pixelCoords, QgsCoordinateReferenceSystem &rasterCrs, QWidget *parent = nullptr );
6363
~QgsMapCoordsDialog() override;
6464

6565
private slots:
@@ -70,10 +70,9 @@ class QgsMapCoordsDialog : public QDialog, private Ui::QgsMapCoordsDialogBase
7070
void maybeSetXY( const QgsPointXY &, Qt::MouseButton );
7171
void updateOK();
7272
void setPrevTool();
73-
void updateCrs( const QgsCoordinateReferenceSystem &crs );
7473

7574
signals:
76-
void pointAdded( const QgsPointXY &, const QgsPointXY &, const QgsCoordinateReferenceSystem & );
75+
void pointAdded( const QgsPointXY &a, const QgsPointXY &b, const QgsCoordinateReferenceSystem &crs );
7776

7877
private:
7978
double dmsToDD( const QString &dms );
@@ -86,7 +85,7 @@ class QgsMapCoordsDialog : public QDialog, private Ui::QgsMapCoordsDialogBase
8685
QgsMapTool *mPrevMapTool = nullptr;
8786
QgsMapCanvas *mQgisCanvas = nullptr;
8887

89-
QgsCoordinateReferenceSystem mCrs;
88+
QgsCoordinateReferenceSystem mRasterCrs;
9089

9190
QgsPointXY mPixelCoords;
9291
};

‎src/ui/georeferencer/qgsmapcoordsdialogbase.ui

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454
</layout>
5555
</item>
5656
<item>
57-
<widget class="QgsProjectionSelectionWidget" name="mProjSelect" native="true">
57+
<widget class="QgsProjectionSelectionWidget" name="mProjectionSelector" native="true">
5858
<property name="focusPolicy">
5959
<enum>Qt::StrongFocus</enum>
6060
</property>

0 commit comments

Comments
 (0)
Please sign in to comment.