@@ -593,7 +593,6 @@ bool QgsCoordinateReferenceSystem::createFromProj4( const QString theProj4String
593
593
}
594
594
}
595
595
596
- QStringList myParam;
597
596
if ( myRecord.empty () )
598
597
{
599
598
// match all parameters individually:
@@ -608,6 +607,7 @@ bool QgsCoordinateReferenceSystem::createFromProj4( const QString theProj4String
608
607
// split on spaces followed by a plus sign (+) to deal
609
608
// also with parameters containing spaces (e.g. +nadgrids)
610
609
// make sure result is trimmed (#5598)
610
+ QStringList myParams;
611
611
foreach ( QString param, myProj4String.split ( QRegExp ( " \\ s+(?=\\ +)" ), QString::SkipEmptyParts ) )
612
612
{
613
613
QString arg = QString ( " ' '||parameters||' ' LIKE %1" ).arg ( quotedValue ( QString ( " % %1 %" ).arg ( param.trimmed () ) ) );
@@ -619,7 +619,7 @@ bool QgsCoordinateReferenceSystem::createFromProj4( const QString theProj4String
619
619
{
620
620
sql += delim + arg;
621
621
delim = " AND " ;
622
- myParam. append (param );
622
+ myParams << param. trimmed ( );
623
623
}
624
624
}
625
625
@@ -633,32 +633,34 @@ bool QgsCoordinateReferenceSystem::createFromProj4( const QString theProj4String
633
633
// datum might have disappeared in definition - retry without it
634
634
myRecord = getRecord ( sql + " order by deprecated" );
635
635
}
636
+
637
+ if ( !myRecord.empty () )
638
+ {
639
+ // Bugfix 8487 : test param lists are equal, except for +datum
640
+ QStringList foundParams;
641
+ foreach ( QString param, myRecord[" parameters" ].split ( QRegExp ( " \\ s+(?=\\ +)" ), QString::SkipEmptyParts ) )
642
+ {
643
+ if ( !param.startsWith ( " +datum=" ) )
644
+ foundParams << param.trimmed ();
645
+ }
646
+
647
+ myParams.sort ();
648
+ foundParams.sort ();
649
+
650
+ if ( myParams != foundParams )
651
+ {
652
+ myRecord.clear ();
653
+ }
654
+ }
636
655
}
637
656
638
657
if ( !myRecord.empty () )
639
658
{
640
659
mySrsId = myRecord[" srs_id" ].toLong ();
641
660
QgsDebugMsg ( " proj4string param match search for srsid returned srsid: " + QString::number ( mySrsId ) );
642
- // Bugfix 8487 : test param lists are equal, except for +datum
643
- myParam.sort ();
644
- QStringList foundParam;
645
- foreach ( QString paramfound, myRecord[" parameters" ].split ( QRegExp ( " \\ s+(?=\\ +)" ), QString::SkipEmptyParts ) )
646
- {
647
- if ( !paramfound.startsWith ( " +datum=" ) )
648
- foundParam.append (paramfound);
649
- }
650
- foundParam.sort ();
651
- if ( myParam == foundParam)
652
- {
653
- if ( mySrsId > 0 )
654
- {
655
- createFromSrsId ( mySrsId );
656
- }
657
- }
658
- else
661
+ if ( mySrsId > 0 )
659
662
{
660
- // Params differ
661
- mIsValidFlag = false ;
663
+ createFromSrsId ( mySrsId );
662
664
}
663
665
}
664
666
else
0 commit comments