Index: src/app/qgsoptions.cpp =================================================================== --- src/app/qgsoptions.cpp (revision 15405) +++ src/app/qgsoptions.cpp (working copy) @@ -188,16 +188,16 @@ { radUseGlobalProjection->setChecked( true ); } - QString myLayerDefaultCrsString = settings.value( "/Projections/defaultProjectionString", GEOPROJ4 ).toString(); - mLayerDefaultCrs.createFromProj4( myLayerDefaultCrsString ); + QString myLayerDefaultCrs = settings.value( "/Projections/defaultCrs", GEO_EPSG_CRS_AUTHID ).toString(); + mLayerDefaultCrs.createFromOgcWmsCrs( myLayerDefaultCrs ); //display the crs as friendly text rather than in wkt leLayerGlobalCrs->setText( mLayerDefaultCrs.authid() + " - " + mLayerDefaultCrs.description() ); //on the fly CRS transformation settings chkOtfTransform->setChecked( settings.value( "/Projections/otfTransformEnabled", 0 ).toBool() ); - - QString myDefaultCrsString = settings.value( "/Projections/projectDefaultProjectionString", GEOPROJ4 ).toString(); - mDefaultCrs.createFromProj4( myDefaultCrsString ); + + QString myDefaultCrs = settings.value( "/Projections/projectDefaultCrs", GEO_EPSG_CRS_AUTHID ).toString(); + mDefaultCrs.createFromOgcWmsCrs( myDefaultCrs ); //display the crs as friendly text rather than in wkt leProjectGlobalCrs->setText( mDefaultCrs.authid() + " - " + mDefaultCrs.description() ); @@ -758,10 +758,9 @@ if ( mySelector->exec() ) { - mLayerDefaultCrs.createFromProj4( mySelector->selectedProj4String() ); - QgsDebugMsg( QString( "Setting default project CRS to : %1").arg( mySelector->selectedProj4String() ) ); - leLayerGlobalCrs->setText( mLayerDefaultCrs.authid() + " - " + - mLayerDefaultCrs.description() ); + mLayerDefaultCrs.createFromOgcWmsCrs( mySelector->selectedAuthId() ); + QgsDebugMsg( QString( "Setting default project CRS to : %1" ).arg( mySelector->selectedAuthId() ) ); + leLayerGlobalCrs->setText( mLayerDefaultCrs.authid() + " - " + mLayerDefaultCrs.description() ); QgsDebugMsg( QString( "------ Global Layer Default Projection Selection set to ----------\n%1" ).arg( leLayerGlobalCrs->text() ) ); } else @@ -782,10 +781,9 @@ if ( mySelector->exec() ) { - mDefaultCrs.createFromProj4( mySelector->selectedProj4String() ); - QgsDebugMsg( QString( "Setting default project CRS to : %1").arg( mySelector->selectedProj4String() ) ); - leProjectGlobalCrs->setText( mDefaultCrs.authid() + " - " + - mDefaultCrs.description() ); + mDefaultCrs.createFromOgcWmsCrs( mySelector->selectedAuthId() ); + QgsDebugMsg( QString( "Setting default project CRS to : %1" ).arg( mySelector->selectedAuthId() ) ); + leProjectGlobalCrs->setText( mDefaultCrs.authid() + " - " + mDefaultCrs.description() ); QgsDebugMsg( QString( "------ Global OTF Projection Selection set to ----------\n%1" ).arg( leProjectGlobalCrs->text() ) ); } else Index: src/app/qgsnewvectorlayerdialog.cpp =================================================================== --- src/app/qgsnewvectorlayerdialog.cpp (revision 15405) +++ src/app/qgsnewvectorlayerdialog.cpp (working copy) @@ -155,7 +155,7 @@ if ( mySelector->exec() ) { mCrsId = mySelector->selectedCrsId(); - leSpatialRefSys->setText( mySelector->selectedProj4String() ); + leSpatialRefSys->setText( mySelector->selectedAuthId() ); } else { Index: src/app/qgswmssourceselect.cpp =================================================================== --- src/app/qgswmssourceselect.cpp (revision 15405) +++ src/app/qgswmssourceselect.cpp (working copy) @@ -654,9 +654,9 @@ mySelector->setMessage(); mySelector->setOgcWmsCrsFilter( mCRSs ); - QString myDefaultProjString = QgsProject::instance()->readEntry( "SpatialRefSys", "/ProjectCRSProj4String", GEOPROJ4 ); + QString myDefaultCrs = QgsProject::instance()->readEntry( "SpatialRefSys", "/ProjectCrs", GEO_EPSG_CRS_AUTHID ); QgsCoordinateReferenceSystem defaultCRS; - if ( defaultCRS.createFromProj4( myDefaultProjString ) ) + if ( defaultCRS.createFromOgcWmsCrs( myDefaultCrs ) ) { mySelector->setSelectedCrsId( defaultCRS.srsid() ); } Index: src/app/qgisapp.cpp =================================================================== --- src/app/qgisapp.cpp (revision 15405) +++ src/app/qgisapp.cpp (working copy) @@ -319,7 +319,7 @@ */ static void customSrsValidation_( QgsCoordinateReferenceSystem* srs ) { - QString toProj4; + QString authid; QSettings mySettings; QString myDefaultProjectionOption = mySettings.value( "/Projections/defaultBehaviour" ).toString(); if ( myDefaultProjectionOption == "prompt" ) @@ -327,13 +327,13 @@ //@note this class is not a descendent of QWidget so we cant pass //it in the ctor of the layer projection selector - QgsGenericProjectionSelector * mySelector = new QgsGenericProjectionSelector(); + QgsGenericProjectionSelector *mySelector = new QgsGenericProjectionSelector(); mySelector->setMessage( srs->validationHint() ); //shows a generic message, if not specified - toProj4 = QgsProject::instance()->readEntry( "SpatialRefSys", "//ProjectCRSProj4String", GEOPROJ4 ); - QgsCoordinateReferenceSystem defaultCRS; - if ( defaultCRS.createFromProj4( toProj4 ) ) + authid = QgsProject::instance()->readEntry( "SpatialRefSys", "/ProjectCrs", GEO_EPSG_CRS_AUTHID ); + QgsCoordinateReferenceSystem defaultCrs; + if ( defaultCrs.createFromOgcWmsCrs( authid ) ) { - mySelector->setSelectedCrsId( defaultCRS.srsid() ); + mySelector->setSelectedCrsId( defaultCrs.srsid() ); } QApplication::setOverrideCursor( Qt::ArrowCursor ); @@ -341,7 +341,7 @@ if ( mySelector->exec() ) { QgsDebugMsg( "Layer srs set from dialog: " + QString::number( mySelector->selectedCrsId() ) ); - srs->createFromProj4( mySelector->selectedProj4String() ); + srs->createFromOgcWmsCrs( mySelector->selectedAuthId() ); } QApplication::restoreOverrideCursor(); @@ -351,14 +351,14 @@ else if ( myDefaultProjectionOption == "useProject" ) { // XXX TODO: Change project to store selected CS as 'projectCRS' not 'selectedWkt' - toProj4 = QgsProject::instance()->readEntry( "SpatialRefSys", "//ProjectCRSProj4String", GEOPROJ4 ); - QgsDebugMsg( "Layer srs set from project: " + toProj4 ); + authid = QgsProject::instance()->readEntry( "SpatialRefSys", "/ProjectCrs", GEO_EPSG_CRS_AUTHID ); + QgsDebugMsg( "Layer srs set from project: " + authid ); QgisApp::instance()->statusBar()->showMessage( QObject::tr( "CRS undefined - defaulting to project CRS" ) ); - srs->createFromProj4( toProj4 ); + srs->createFromOgcWmsCrs( authid ); } else ///Projections/defaultBehaviour==useGlobal { - srs->createFromProj4( mySettings.value( "/Projections/defaultProjectionString", GEOPROJ4 ).toString() ); + srs->createFromOgcWmsCrs( mySettings.value( "/Projections/defaultCrs", GEO_EPSG_CRS_AUTHID ).toString() ); QgisApp::instance()->statusBar()->showMessage( QObject::tr( "CRS undefined - defaulting to default CRS" ) ); } } @@ -2476,12 +2476,12 @@ // set project CRS QgsMapRenderer* myRenderer = mMapCanvas->mapRenderer(); - QString projString = settings.value( "/Projections/projectDefaultProjectionString", GEOPROJ4 ).toString(); + QString defCrs = settings.value( "/Projections/projectDefaultCrs", GEO_EPSG_CRS_AUTHID ).toString(); QgsCoordinateReferenceSystem srs; - srs.createFromProj4( projString ); + srs.createFromOgcWmsCrs( defCrs ); myRenderer->setDestinationSrs( srs ); // write the projections _proj string_ to project settings - prj->writeEntry( "SpatialRefSys", "/ProjectCRSProj4String", projString ); + prj->writeEntry( "SpatialRefSys", "/ProjectCrs", defCrs ); prj->dirty( false ); if ( srs.mapUnits() != QGis::UnknownUnit ) { @@ -4777,12 +4777,12 @@ // set project CRS QgsMapRenderer* myRenderer = mMapCanvas->mapRenderer(); - QString projString = mySettings.value( "/Projections/projectDefaultProjectionString", GEOPROJ4 ).toString(); + QString defCrs = mySettings.value( "/Projections/projectDefaultCrs", GEO_EPSG_CRS_AUTHID ).toString(); QgsCoordinateReferenceSystem srs; - srs.createFromProj4( projString ); + srs.createFromOgcWmsCrs( defCrs ); myRenderer->setDestinationSrs( srs ); // write the projections _proj string_ to project settings - QgsProject::instance()->writeEntry( "SpatialRefSys", "/ProjectCRSProj4String", projString ); + QgsProject::instance()->writeEntry( "SpatialRefSys", "/ProjectCrs", defCrs ); if ( srs.mapUnits() != QGis::UnknownUnit ) { myRenderer->setMapUnits( srs.mapUnits() ); Index: src/plugins/north_arrow/plugin.cpp =================================================================== --- src/plugins/north_arrow/plugin.cpp (revision 15405) +++ src/plugins/north_arrow/plugin.cpp (working copy) @@ -308,7 +308,7 @@ { // Use a geographic CRS to get lat/long to work out direction QgsCoordinateReferenceSystem ourCRS; - ourCRS.createFromProj4( "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs" ); + ourCRS.createFromOgcWmsCrs( GEO_EPSG_CRS_AUTHID ); assert( ourCRS.isValid() ); QgsCoordinateTransform transform( outputCRS, ourCRS ); Index: src/gui/qgsgenericprojectionselector.h =================================================================== --- src/gui/qgsgenericprojectionselector.h (revision 15405) +++ src/gui/qgsgenericprojectionselector.h (working copy) @@ -61,13 +61,17 @@ * 'define the CRS for this layer'. */ void setMessage( QString theMessage = "" ); - QString selectedProj4String(); long selectedCrsId(); QString selectedAuthId(); #ifndef Q_MOC_RUN QGISDEPRECATED #endif + QString selectedProj4String(); + +#ifndef Q_MOC_RUN + QGISDEPRECATED +#endif long selectedEpsg(); void setSelectedCrsName( QString theName ); Index: src/core/qgsdistancearea.cpp =================================================================== --- src/core/qgsdistancearea.cpp (revision 15405) +++ src/core/qgsdistancearea.cpp (working copy) @@ -162,9 +162,7 @@ // get spatial ref system for ellipsoid - QString proj4 = "+proj=longlat +ellps="; - proj4 += ellipsoid; - proj4 += " +no_defs"; + QString proj4 = "+proj=longlat +ellps=" + ellipsoid + " +no_defs"; QgsCoordinateReferenceSystem destCRS; destCRS.createFromProj4( proj4 ); Index: src/core/qgscoordinatereferencesystem.cpp =================================================================== --- src/core/qgscoordinatereferencesystem.cpp (revision 15405) +++ src/core/qgscoordinatereferencesystem.cpp (working copy) @@ -37,7 +37,6 @@ #include #include #include -#include "qgslogger.h" CUSTOM_CRS_VALIDATION QgsCoordinateReferenceSystem::mCustomSrsValidation = NULL; @@ -129,6 +128,12 @@ bool QgsCoordinateReferenceSystem::createFromOgcWmsCrs( QString theCrs ) { + QRegExp re( "(user|custom|qgis):(\\d+)", Qt::CaseInsensitive ); + if ( re.exactMatch( theCrs ) && createFromSrsId( re.cap( 2 ).toInt() ) ) + { + return true; + } + if ( loadFromDb( QgsApplication::srsDbFilePath(), "lower(auth_name||':'||auth_id)", theCrs.toLower() ) ) return true; @@ -185,7 +190,7 @@ if ( !mIsValidFlag ) // set the default - createFromProj4( GEOPROJ4 ); + createFromOgcWmsCrs( GEO_EPSG_CRS_AUTHID ); } bool QgsCoordinateReferenceSystem::createFromSrid( long id ) @@ -200,8 +205,8 @@ bool QgsCoordinateReferenceSystem::createFromSrsId( long id ) { - return loadFromDb( id < USER_CRS_START_ID ? QgsApplication::srsDbFilePath() : - QgsApplication::qgisUserDbFilePath(), "srs_id", QString::number( id ) ); + return loadFromDb( id < USER_CRS_START_ID ? QgsApplication::srsDbFilePath() : QgsApplication::qgisUserDbFilePath(), + "srs_id", QString::number( id ) ); } bool QgsCoordinateReferenceSystem::loadFromDb( QString db, QString expression, QString value ) @@ -252,8 +257,13 @@ QString toProj4 = QString::fromUtf8(( char * )sqlite3_column_text( myPreparedStatement, 4 ) ); mSRID = QString::fromUtf8(( char * )sqlite3_column_text( myPreparedStatement, 5 ) ).toLong(); mAuthId = QString::fromUtf8(( char * )sqlite3_column_text( myPreparedStatement, 6 ) ); - int geo = QString::fromUtf8(( char * )sqlite3_column_text( myPreparedStatement, 7 ) ).toInt(); - mGeoFlag = ( geo == 0 ? false : true ); + mGeoFlag = QString::fromUtf8(( char * )sqlite3_column_text( myPreparedStatement, 7 ) ).toInt() != 0; + + if( mSrsId >= USER_CRS_START_ID && mAuthId.isEmpty() ) + { + mAuthId = QString( "USER:%1" ).arg( mSrsId ); + } + setProj4String( toProj4 ); setMapUnits(); } @@ -275,7 +285,7 @@ QgsDebugMsg( "theWkt is uninitialised, operation failed" ); return mIsValidFlag; } - QgsDebugMsg( "QgsCoordinateReferenceSystem::createFromWkt(QString theWkt) using: " + theWkt ); + QgsDebugMsg( "wkt: " + theWkt ); QByteArray ba = theWkt.toLatin1(); const char *pWkt = ba.data(); @@ -612,9 +622,6 @@ #endif return myMap; - - - } // Accessors ----------------------------------- Index: src/core/qgsvectorlayer.cpp =================================================================== --- src/core/qgsvectorlayer.cpp (revision 15405) +++ src/core/qgsvectorlayer.cpp (working copy) @@ -4283,7 +4283,7 @@ } else { - mCRS->createFromProj4( GEOPROJ4 ); + mCRS->createFromOgcWmsCrs( GEO_EPSG_CRS_AUTHID ); } } }