[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