Skip to content

Commit 3defbe1

Browse files
committedJun 3, 2019
Update datum transform widgets and dialog for proj 6
1 parent f0e6f14 commit 3defbe1

File tree

5 files changed

+186
-17
lines changed

5 files changed

+186
-17
lines changed
 

‎src/app/qgsdatumtransformtablewidget.cpp

Lines changed: 53 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -57,34 +57,49 @@ void QgsDatumTransformTableModel::removeTransform( const QModelIndexList &indexe
5757
int QgsDatumTransformTableModel::rowCount( const QModelIndex &parent ) const
5858
{
5959
Q_UNUSED( parent )
60+
#if PROJ_VERSION_MAJOR>=6
61+
return mTransformContext.coordinateOperations().count();
62+
#else
6063
Q_NOWARN_DEPRECATED_PUSH
6164
return mTransformContext.sourceDestinationDatumTransforms().count();
6265
Q_NOWARN_DEPRECATED_POP
66+
#endif
6367
}
6468

6569
int QgsDatumTransformTableModel::columnCount( const QModelIndex &parent ) const
6670
{
6771
Q_UNUSED( parent )
72+
#if PROJ_VERSION_MAJOR>=6
73+
return 3;
74+
#else
6875
return 4;
76+
#endif
6977
}
7078

7179
QVariant QgsDatumTransformTableModel::data( const QModelIndex &index, int role ) const
7280
{
7381
QString sourceCrs;
7482
QString destinationCrs;
83+
#if PROJ_VERSION_MAJOR>=6
84+
QPair< QString, QString> crses = mTransformContext.coordinateOperations().keys().at( index.row() );
85+
#else
7586
int sourceTransform = -1;
7687
int destinationTransform = -1;
77-
7888
Q_NOWARN_DEPRECATED_PUSH
7989
QPair< QString, QString> crses = mTransformContext.sourceDestinationDatumTransforms().keys().at( index.row() );
8090
Q_NOWARN_DEPRECATED_POP
91+
#endif
8192
sourceCrs = crses.first;
8293
destinationCrs = crses.second;
94+
#if PROJ_VERSION_MAJOR>=6
95+
const QString proj = mTransformContext.coordinateOperations().value( crses );
96+
#else
8397
Q_NOWARN_DEPRECATED_PUSH
8498
const QgsDatumTransform::TransformPair transforms = mTransformContext.sourceDestinationDatumTransforms().value( crses );
8599
Q_NOWARN_DEPRECATED_POP
86100
sourceTransform = transforms.sourceTransformId;
87101
destinationTransform = transforms.destinationTransformId;
102+
#endif
88103

89104
switch ( role )
90105
{
@@ -100,6 +115,13 @@ QVariant QgsDatumTransformTableModel::data( const QModelIndex &index, int role )
100115
{
101116
case SourceCrsColumn:
102117
return sourceCrs;
118+
case DestinationCrsColumn:
119+
return destinationCrs;
120+
121+
#if PROJ_VERSION_MAJOR>=6
122+
case ProjDefinitionColumn:
123+
return proj;
124+
#else
103125
case SourceTransformColumn:
104126
if ( sourceTransform != -1 )
105127
{
@@ -108,8 +130,7 @@ QVariant QgsDatumTransformTableModel::data( const QModelIndex &index, int role )
108130
Q_NOWARN_DEPRECATED_POP
109131
}
110132
break;
111-
case DestinationCrsColumn:
112-
return destinationCrs;
133+
113134
case DestinationTransformColumn:
114135
if ( destinationTransform != -1 )
115136
{
@@ -118,11 +139,16 @@ QVariant QgsDatumTransformTableModel::data( const QModelIndex &index, int role )
118139
Q_NOWARN_DEPRECATED_POP
119140
}
120141
break;
142+
#endif
143+
121144
default:
122145
break;
123146
}
124147
break;
125148
case Qt::UserRole:
149+
#if PROJ_VERSION_MAJOR>=6
150+
return proj;
151+
#else
126152
switch ( index.column() )
127153
{
128154
case SourceTransformColumn:
@@ -133,6 +159,7 @@ QVariant QgsDatumTransformTableModel::data( const QModelIndex &index, int role )
133159
break;
134160
}
135161
break;
162+
#endif
136163
default:
137164
break;
138165
}
@@ -153,12 +180,18 @@ QVariant QgsDatumTransformTableModel::headerData( int section, Qt::Orientation o
153180
{
154181
case SourceCrsColumn :
155182
return tr( "Source CRS" );
156-
case SourceTransformColumn:
157-
return tr( "Source Datum Transform" );
158183
case DestinationCrsColumn:
159184
return tr( "Destination CRS" );
185+
186+
#if PROJ_VERSION_MAJOR>=6
187+
case ProjDefinitionColumn:
188+
return tr( "Operation" );
189+
#else
190+
case SourceTransformColumn:
191+
return tr( "Source Datum Transform" );
160192
case DestinationTransformColumn:
161193
return tr( "Destination Datum Transform" );
194+
#endif
162195
default:
163196
break;
164197
}
@@ -203,6 +236,7 @@ void QgsDatumTransformTableWidget::addDatumTransform()
203236
Q_NOWARN_DEPRECATED_PUSH
204237
context.addSourceDestinationDatumTransform( dt.sourceCrs, dt.destinationCrs, dt.sourceTransformId, dt.destinationTransformId );
205238
Q_NOWARN_DEPRECATED_POP
239+
context.addCoordinateOperation( dt.sourceCrs, dt.destinationCrs, dt.proj );
206240
mModel->setTransformContext( context );
207241
selectionChanged();
208242
}
@@ -225,6 +259,7 @@ void QgsDatumTransformTableWidget::editDatumTransform()
225259
{
226260
QgsCoordinateReferenceSystem sourceCrs;
227261
QgsCoordinateReferenceSystem destinationCrs;
262+
QString proj;
228263
int sourceTransform = -1;
229264
int destinationTransform = -1;
230265
for ( QModelIndexList::const_iterator it = selectedIndexes.constBegin(); it != selectedIndexes.constEnd(); it ++ )
@@ -237,20 +272,31 @@ void QgsDatumTransformTableWidget::editDatumTransform()
237272
case QgsDatumTransformTableModel::DestinationCrsColumn:
238273
destinationCrs = QgsCoordinateReferenceSystem( mModel->data( *it, Qt::DisplayRole ).toString() );
239274
break;
275+
#if PROJ_VERSION_MAJOR>=6
276+
case QgsDatumTransformTableModel::ProjDefinitionColumn:
277+
proj = mModel->data( *it, Qt::UserRole ).toString();
278+
break;
279+
#else
240280
case QgsDatumTransformTableModel::SourceTransformColumn:
241281
sourceTransform = mModel->data( *it, Qt::UserRole ).toInt();
242282
break;
243283
case QgsDatumTransformTableModel::DestinationTransformColumn:
244284
destinationTransform = mModel->data( *it, Qt::UserRole ).toInt();
245285
break;
286+
#endif
246287
default:
247288
break;
248289
}
249290
}
291+
292+
#if PROJ_VERSION_MAJOR>=6
293+
if ( sourceCrs.isValid() && destinationCrs.isValid() && !proj.isEmpty() )
294+
#else
250295
if ( sourceCrs.isValid() && destinationCrs.isValid() &&
251296
( sourceTransform != -1 || destinationTransform != -1 ) )
297+
#endif
252298
{
253-
QgsDatumTransformDialog dlg( sourceCrs, destinationCrs, true, false, false, qMakePair( sourceTransform, destinationTransform ) );
299+
QgsDatumTransformDialog dlg( sourceCrs, destinationCrs, true, false, false, qMakePair( sourceTransform, destinationTransform ), nullptr, nullptr, proj );
254300
if ( dlg.exec() )
255301
{
256302
const QgsDatumTransformDialog::TransformInfo dt = dlg.selectedDatumTransform();
@@ -259,6 +305,7 @@ void QgsDatumTransformTableWidget::editDatumTransform()
259305
Q_NOWARN_DEPRECATED_PUSH
260306
context.addSourceDestinationDatumTransform( sourceCrs, destinationCrs, dt.sourceTransformId, dt.destinationTransformId );
261307
Q_NOWARN_DEPRECATED_POP
308+
context.addCoordinateOperation( sourceCrs, destinationCrs, dt.proj );
262309
mModel->setTransformContext( context );
263310
}
264311
}

‎src/app/qgsdatumtransformtablewidget.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,16 @@ class APP_EXPORT QgsDatumTransformTableModel : public QAbstractTableModel
3737

3838
enum TableColumns
3939
{
40+
#if PROJ_VERSION_MAJOR>=6
41+
SourceCrsColumn = 0,
42+
DestinationCrsColumn,
43+
ProjDefinitionColumn,
44+
#else
4045
SourceCrsColumn = 0,
4146
SourceTransformColumn,
4247
DestinationCrsColumn,
4348
DestinationTransformColumn,
49+
#endif
4450
};
4551

4652
QgsDatumTransformTableModel( QObject *parent = nullptr );

‎src/core/qgscoordinatereferencesystem.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2236,6 +2236,7 @@ int QgsCoordinateReferenceSystem::syncDatabase()
22362236

22372237
#if PROJ_VERSION_MAJOR>=6
22382238
PJ_CONTEXT *pjContext = QgsProjContext::get();
2239+
22392240
PROJ_STRING_LIST authorities = proj_get_authorities_from_database( pjContext );
22402241

22412242
int nextSrId = 520000000;

0 commit comments

Comments
 (0)
Please sign in to comment.