@@ -396,12 +396,13 @@ bool QgsCoordinateReferenceSystem::createFromProj4( const QString theProj4String
396
396
// +proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=2.337229166666664 +k_0=0.99987742
397
397
// +x_0=600000 +y_0=2200000 +a=6378249.2 +b=6356515.000000472 +units=m +no_defs
398
398
//
399
- QgsDebugMsg ( " proj4: " + theProj4String );
399
+ QString myProj4String = theProj4String.trimmed ();
400
+ QgsDebugMsg ( " proj4: " + myProj4String );
400
401
mIsValidFlag = false ;
401
402
mWkt .clear ();
402
403
403
404
QRegExp myProjRegExp ( " \\ +proj=(\\ S+)" );
404
- int myStart = myProjRegExp.indexIn ( theProj4String );
405
+ int myStart = myProjRegExp.indexIn ( myProj4String );
405
406
if ( myStart == -1 )
406
407
{
407
408
QgsDebugMsg ( " proj string supplied has no +proj argument" );
@@ -411,7 +412,7 @@ bool QgsCoordinateReferenceSystem::createFromProj4( const QString theProj4String
411
412
mProjectionAcronym = myProjRegExp.cap ( 1 );
412
413
413
414
QRegExp myEllipseRegExp ( " \\ +ellps=(\\ S+)" );
414
- myStart = myEllipseRegExp.indexIn ( theProj4String );
415
+ myStart = myEllipseRegExp.indexIn ( myProj4String );
415
416
if ( myStart == -1 )
416
417
{
417
418
QgsDebugMsg ( " proj string supplied has no +ellps argument" );
@@ -423,7 +424,7 @@ bool QgsCoordinateReferenceSystem::createFromProj4( const QString theProj4String
423
424
}
424
425
425
426
QRegExp myAxisRegExp ( " \\ +a=(\\ S+)" );
426
- myStart = myAxisRegExp.indexIn ( theProj4String );
427
+ myStart = myAxisRegExp.indexIn ( myProj4String );
427
428
if ( myStart == -1 )
428
429
{
429
430
QgsDebugMsg ( " proj string supplied has no +a argument" );
@@ -444,7 +445,7 @@ bool QgsCoordinateReferenceSystem::createFromProj4( const QString theProj4String
444
445
* - if the above does not match perform a whole text search on proj4 string (if not null)
445
446
*/
446
447
// QgsDebugMsg( "wholetext match on name failed, trying proj4string match" );
447
- myRecord = getRecord ( " select * from tbl_srs where parameters=" + quotedValue ( theProj4String. trimmed () ) + " order by deprecated" );
448
+ myRecord = getRecord ( " select * from tbl_srs where parameters=" + quotedValue ( myProj4String ) + " order by deprecated" );
448
449
if ( myRecord.empty () )
449
450
{
450
451
// Ticket #722 - aaronr
@@ -458,20 +459,20 @@ bool QgsCoordinateReferenceSystem::createFromProj4( const QString theProj4String
458
459
int myLength2 = 0 ;
459
460
QString lat1Str = " " ;
460
461
QString lat2Str = " " ;
461
- myStart1 = myLat1RegExp.indexIn ( theProj4String , myStart1 );
462
- myStart2 = myLat2RegExp.indexIn ( theProj4String , myStart2 );
462
+ myStart1 = myLat1RegExp.indexIn ( myProj4String , myStart1 );
463
+ myStart2 = myLat2RegExp.indexIn ( myProj4String , myStart2 );
463
464
if ( myStart1 != -1 && myStart2 != -1 )
464
465
{
465
466
myLength1 = myLat1RegExp.matchedLength ();
466
467
myLength2 = myLat2RegExp.matchedLength ();
467
- lat1Str = theProj4String .mid ( myStart1 + LAT_PREFIX_LEN, myLength1 - LAT_PREFIX_LEN );
468
- lat2Str = theProj4String .mid ( myStart2 + LAT_PREFIX_LEN, myLength2 - LAT_PREFIX_LEN );
468
+ lat1Str = myProj4String .mid ( myStart1 + LAT_PREFIX_LEN, myLength1 - LAT_PREFIX_LEN );
469
+ lat2Str = myProj4String .mid ( myStart2 + LAT_PREFIX_LEN, myLength2 - LAT_PREFIX_LEN );
469
470
}
470
471
// If we found the lat_1 and lat_2 we need to swap and check to see if we can find it...
471
472
if ( lat1Str != " " && lat2Str != " " )
472
473
{
473
474
// Make our new string to check...
474
- QString theProj4StringModified = theProj4String ;
475
+ QString theProj4StringModified = myProj4String ;
475
476
// First just swap in the lat_2 value for lat_1 value
476
477
theProj4StringModified.replace ( myStart1 + LAT_PREFIX_LEN, myLength1 - LAT_PREFIX_LEN, lat2Str );
477
478
// Now we have to find the lat_2 location again since it has potentially moved...
@@ -497,7 +498,7 @@ bool QgsCoordinateReferenceSystem::createFromProj4( const QString theProj4String
497
498
// split on spaces followed by a plus sign (+) to deal
498
499
// also with parameters containing spaces (e.g. +nadgrids)
499
500
// make sure result is trimmed (#5598)
500
- foreach ( QString param, theProj4String .split ( QRegExp ( " \\ s+(?=\\ +)" ), QString::SkipEmptyParts ) )
501
+ foreach ( QString param, myProj4String .split ( QRegExp ( " \\ s+(?=\\ +)" ), QString::SkipEmptyParts ) )
501
502
{
502
503
QString arg = QString ( " ' '||parameters||' ' LIKE %1" ).arg ( quotedValue ( QString ( " % %1 %" ).arg ( param.trimmed () ) ) );
503
504
if ( param.startsWith ( " +datum=" ) )
@@ -536,7 +537,7 @@ bool QgsCoordinateReferenceSystem::createFromProj4( const QString theProj4String
536
537
{
537
538
// Last ditch attempt to piece together what we know of the projection to find a match...
538
539
QgsDebugMsg ( " globbing search for srsid from this proj string" );
539
- setProj4String ( theProj4String );
540
+ setProj4String ( myProj4String );
540
541
mySrsId = findMatchingProj ();
541
542
QgsDebugMsg ( " globbing search for srsid returned srsid: " + QString::number ( mySrsId ) );
542
543
if ( mySrsId > 0 )
@@ -553,7 +554,7 @@ bool QgsCoordinateReferenceSystem::createFromProj4( const QString theProj4String
553
554
if ( !mIsValidFlag )
554
555
{
555
556
QgsDebugMsg ( " Projection is not found in databases." );
556
- setProj4String ( theProj4String );
557
+ setProj4String ( myProj4String );
557
558
558
559
// Is the SRS is valid now, we know it's a decent +proj string that can be entered into the srs.db
559
560
if ( mIsValidFlag )
@@ -815,7 +816,7 @@ void QgsCoordinateReferenceSystem::setProj4String( QString theProj4String )
815
816
OSRDestroySpatialReference ( mCRS );
816
817
mCRS = OSRNewSpatialReference ( NULL );
817
818
mIsValidFlag =
818
- OSRImportFromProj4 ( mCRS , theProj4String.toLatin1 ().constData () )
819
+ OSRImportFromProj4 ( mCRS , theProj4String.trimmed (). toLatin1 ().constData () )
819
820
== OGRERR_NONE;
820
821
mWkt .clear ();
821
822
setMapUnits ();
@@ -1516,6 +1517,7 @@ int QgsCoordinateReferenceSystem::syncDb()
1516
1517
if ( proj4.startsWith ( input ) )
1517
1518
{
1518
1519
proj4 = proj4.mid ( input.size () );
1520
+ proj4 = proj4.trimmed ();
1519
1521
}
1520
1522
}
1521
1523
else
0 commit comments