[QGIS Commit] r15419 - in trunk/qgis: python/core src/app src/core src/gui src/plugins/north_arrow

svn_qgis at osgeo.org svn_qgis at osgeo.org
Thu Mar 10 14:47:59 EST 2011


Author: jef
Date: 2011-03-10 11:47:59 -0800 (Thu, 10 Mar 2011)
New Revision: 15419

Modified:
   trunk/qgis/python/core/qgscoordinatereferencesystem.sip
   trunk/qgis/src/app/qgisapp.cpp
   trunk/qgis/src/app/qgsnewvectorlayerdialog.cpp
   trunk/qgis/src/app/qgsoptions.cpp
   trunk/qgis/src/app/qgswmssourceselect.cpp
   trunk/qgis/src/core/qgscoordinatereferencesystem.cpp
   trunk/qgis/src/core/qgscoordinatereferencesystem.h
   trunk/qgis/src/core/qgsdistancearea.cpp
   trunk/qgis/src/core/qgsvectorlayer.cpp
   trunk/qgis/src/gui/qgsgenericprojectionselector.h
   trunk/qgis/src/plugins/north_arrow/plugin.cpp
Log:
apply #3586

Modified: trunk/qgis/python/core/qgscoordinatereferencesystem.sip
===================================================================
--- trunk/qgis/python/core/qgscoordinatereferencesystem.sip	2011-03-10 18:50:00 UTC (rev 15418)
+++ trunk/qgis/python/core/qgscoordinatereferencesystem.sip	2011-03-10 19:47:59 UTC (rev 15419)
@@ -46,9 +46,7 @@
          *
          * Sets this CRS to the given OGC WMS-format Coordinate Reference Systems.
          *
-         * \note This function only deals with Epsg Id labels only at this time.
-         *
-         * \retval FALSE if not given an Epsg Id label
+         * \retval false if not given an valid label
          */
         bool createFromOgcWmsCrs(QString theCrs);
 

Modified: trunk/qgis/src/app/qgisapp.cpp
===================================================================
--- trunk/qgis/src/app/qgisapp.cpp	2011-03-10 18:50:00 UTC (rev 15418)
+++ trunk/qgis/src/app/qgisapp.cpp	2011-03-10 19:47:59 UTC (rev 15419)
@@ -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/layerDefaultCrs", GEO_EPSG_CRS_AUTHID ).toString() );
     QgisApp::instance()->statusBar()->showMessage( QObject::tr( "CRS undefined - defaulting to default CRS" ) );
   }
 }
@@ -2489,12 +2489,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 )
   {
@@ -4809,12 +4809,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() );

Modified: trunk/qgis/src/app/qgsnewvectorlayerdialog.cpp
===================================================================
--- trunk/qgis/src/app/qgsnewvectorlayerdialog.cpp	2011-03-10 18:50:00 UTC (rev 15418)
+++ trunk/qgis/src/app/qgsnewvectorlayerdialog.cpp	2011-03-10 19:47:59 UTC (rev 15419)
@@ -155,7 +155,7 @@
   if ( mySelector->exec() )
   {
     mCrsId = mySelector->selectedCrsId();
-    leSpatialRefSys->setText( mySelector->selectedProj4String() );
+    leSpatialRefSys->setText( mySelector->selectedAuthId() );
   }
   else
   {

Modified: trunk/qgis/src/app/qgsoptions.cpp
===================================================================
--- trunk/qgis/src/app/qgsoptions.cpp	2011-03-10 18:50:00 UTC (rev 15418)
+++ trunk/qgis/src/app/qgsoptions.cpp	2011-03-10 19:47:59 UTC (rev 15419)
@@ -188,16 +188,16 @@
   {
     radUseGlobalProjection->setChecked( true );
   }
-  QString myLayerDefaultCrsString = settings.value( "/Projections/defaultProjectionString", GEOPROJ4 ).toString();
-  mLayerDefaultCrs.createFromProj4( myLayerDefaultCrsString );
+  QString myLayerDefaultCrs = settings.value( "/Projections/layerDefaultCrs", 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() );
 
@@ -639,11 +639,11 @@
     settings.setValue( "/Projections/defaultBehaviour", "useGlobal" );
   }
 
-  settings.setValue( "/Projections/defaultProjectionString", mLayerDefaultCrs.toProj4() );
+  settings.setValue( "/Projections/layerDefaultCrs", mLayerDefaultCrs.authid() );
 
   // save 'on the fly' CRS transformation settings
   settings.setValue( "/Projections/otfTransformEnabled", chkOtfTransform->isChecked() );
-  settings.setValue( "/Projections/projectDefaultProjectionString", mDefaultCrs.toProj4() );
+  settings.setValue( "/Projections/projectDefaultCrs", mDefaultCrs.authid() );
 
   settings.setValue( "/qgis/measure/ellipsoid", getEllipsoidAcronym( cmbEllipsoid->currentText() ) );
 
@@ -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

Modified: trunk/qgis/src/app/qgswmssourceselect.cpp
===================================================================
--- trunk/qgis/src/app/qgswmssourceselect.cpp	2011-03-10 18:50:00 UTC (rev 15418)
+++ trunk/qgis/src/app/qgswmssourceselect.cpp	2011-03-10 19:47:59 UTC (rev 15419)
@@ -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() );
   }

Modified: trunk/qgis/src/core/qgscoordinatereferencesystem.cpp
===================================================================
--- trunk/qgis/src/core/qgscoordinatereferencesystem.cpp	2011-03-10 18:50:00 UTC (rev 15418)
+++ trunk/qgis/src/core/qgscoordinatereferencesystem.cpp	2011-03-10 19:47:59 UTC (rev 15419)
@@ -128,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;
 
@@ -184,7 +190,7 @@
 
   if ( !mIsValidFlag )
     // set the default
-    createFromProj4( GEOPROJ4 );
+    createFromOgcWmsCrs( GEO_EPSG_CRS_AUTHID );
 }
 
 bool QgsCoordinateReferenceSystem::createFromSrid( long id )
@@ -199,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 )
@@ -251,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();
   }
@@ -274,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();
 
@@ -611,9 +622,6 @@
 #endif
 
   return myMap;
-
-
-
 }
 
 // Accessors -----------------------------------

Modified: trunk/qgis/src/core/qgscoordinatereferencesystem.h
===================================================================
--- trunk/qgis/src/core/qgscoordinatereferencesystem.h	2011-03-10 18:50:00 UTC (rev 15418)
+++ trunk/qgis/src/core/qgscoordinatereferencesystem.h	2011-03-10 19:47:59 UTC (rev 15419)
@@ -87,9 +87,7 @@
      *
      * Sets this CRS to the given OGC WMS-format Coordinate Reference Systems.
      *
-     * \note This function only deals with EpsgCrsId labels only at this time.
-     *
-     * \retval false if not given an EpsgCrsId label
+     * \retval false if not given an valid label
      */
     bool createFromOgcWmsCrs( QString theCrs );
 

Modified: trunk/qgis/src/core/qgsdistancearea.cpp
===================================================================
--- trunk/qgis/src/core/qgsdistancearea.cpp	2011-03-10 18:50:00 UTC (rev 15418)
+++ trunk/qgis/src/core/qgsdistancearea.cpp	2011-03-10 19:47:59 UTC (rev 15419)
@@ -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 );
 

Modified: trunk/qgis/src/core/qgsvectorlayer.cpp
===================================================================
--- trunk/qgis/src/core/qgsvectorlayer.cpp	2011-03-10 18:50:00 UTC (rev 15418)
+++ trunk/qgis/src/core/qgsvectorlayer.cpp	2011-03-10 19:47:59 UTC (rev 15419)
@@ -4282,7 +4282,7 @@
     }
     else
     {
-      mCRS->createFromProj4( GEOPROJ4 );
+      mCRS->createFromOgcWmsCrs( GEO_EPSG_CRS_AUTHID );
     }
   }
 }

Modified: trunk/qgis/src/gui/qgsgenericprojectionselector.h
===================================================================
--- trunk/qgis/src/gui/qgsgenericprojectionselector.h	2011-03-10 18:50:00 UTC (rev 15418)
+++ trunk/qgis/src/gui/qgsgenericprojectionselector.h	2011-03-10 19:47:59 UTC (rev 15419)
@@ -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 );

Modified: trunk/qgis/src/plugins/north_arrow/plugin.cpp
===================================================================
--- trunk/qgis/src/plugins/north_arrow/plugin.cpp	2011-03-10 18:50:00 UTC (rev 15418)
+++ trunk/qgis/src/plugins/north_arrow/plugin.cpp	2011-03-10 19:47:59 UTC (rev 15419)
@@ -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 );



More information about the QGIS-commit mailing list