diff --git a/resources/srs.db b/resources/srs.db index b6c8b28f491..2ba2d8679f4 100644 Binary files a/resources/srs.db and b/resources/srs.db differ diff --git a/src/app/qgisapp.cpp b/src/app/qgisapp.cpp index 6125a2cb67c..3abe0011149 100644 --- a/src/app/qgisapp.cpp +++ b/src/app/qgisapp.cpp @@ -265,13 +265,17 @@ static void customSrsValidation_(QgsSpatialRefSys* srs) //it in the ctor of the layer projection selector QgsLayerProjectionSelector * mySelector = new QgsLayerProjectionSelector(); - long myDefaultSRS = - QgsProject::instance()->readNumEntry("SpatialRefSys","/ProjectSRSID",GEOSRS_ID); - mySelector->setSelectedSRSID(myDefaultSRS); + proj4String = QgsProject::instance()->readEntry("SpatialRefSys","//ProjectSRSProj4String",GEOPROJ4); + QgsSpatialRefSys defaultSRS; + if(defaultSRS.createFromProj4(proj4String)) + { + mySelector->setSelectedSRSID(defaultSRS.srsid()); + } + if(mySelector->exec()) { QgsDebugMsg("Layer srs set from dialog: " + QString::number(mySelector->getCurrentSRSID())); - srs->createFromSrsId(mySelector->getCurrentSRSID()); + srs->createFromProj4(mySelector->getCurrentProj4String()); srs->debugPrint(); } else @@ -290,10 +294,7 @@ static void customSrsValidation_(QgsSpatialRefSys* srs) } else ///Projections/defaultBehaviour==useGlobal { - // XXX TODO: Change global settings to store default CS as 'defaultSRS' not 'defaultProjectionWKT' - int srs_id = mySettings.value("/Projections/defaultProjectionSRSID",(int)GEOSRS_ID).toInt(); - QgsDebugMsg("Layer srs set from global: " + proj4String); - srs->createFromSrsId(srs_id); + srs->createFromProj4(mySettings.value("/Projections/defaultProjectionString",GEOPROJ4).toString()); srs->debugPrint(); } diff --git a/src/app/qgsoptions.cpp b/src/app/qgsoptions.cpp index aeffc6e1bce..42d7fa40c62 100644 --- a/src/app/qgsoptions.cpp +++ b/src/app/qgsoptions.cpp @@ -84,10 +84,8 @@ QgsOptions::QgsOptions(QWidget *parent, Qt::WFlags fl) : { radUseGlobalProjection->setChecked(true); } - mGlobalSRSID = settings.value("/Projections/defaultProjectionSRSID",(int)GEOSRS_ID).toInt(); - //! @todo changes this control name in gui to txtGlobalProjString - QString myProjString = QgsSpatialRefSys::getProj4FromSrsId(mGlobalSRSID); - txtGlobalWKT->setText(myProjString); + + txtGlobalWKT->setText(settings.value("/Projections/defaultProjectionString",GEOPROJ4).toString()); // populate combo box with ellipsoids getEllipsoidList(); @@ -293,7 +291,8 @@ void QgsOptions::saveOptions() // settings.setValue("/Projections/defaultBehaviour", "useGlobal"); } - settings.setValue("/Projections/defaultProjectionSRSID",(int)mGlobalSRSID); + + settings.setValue("/Projections/defaultProjectionString", txtGlobalWKT->toPlainText()); settings.setValue("/qgis/measure/ellipsoid", getEllipsoidAcronym(cmbEllipsoid->currentText())); @@ -367,13 +366,19 @@ void QgsOptions::on_pbnSelectProjection_clicked() { QSettings settings; QgsLayerProjectionSelector * mySelector = new QgsLayerProjectionSelector(this); - mySelector->setSelectedSRSID(mGlobalSRSID); + + //find out srs id of current proj4 string + QgsSpatialRefSys refSys; + if(refSys.createFromProj4(txtGlobalWKT->toPlainText())) + { + mySelector->setSelectedSRSID(refSys.srsid()); + } + if(mySelector->exec()) { #ifdef QGISDEBUG std::cout << "------ Global Default Projection Selection Set ----------" << std::endl; -#endif - mGlobalSRSID = mySelector->getCurrentSRSID(); +#endif //! @todo changes this control name in gui to txtGlobalProjString txtGlobalWKT->setText(mySelector->getCurrentProj4String()); #ifdef QGISDEBUG diff --git a/src/app/qgsoptions.h b/src/app/qgsoptions.h index b8553436004..0ae5c34ae44 100644 --- a/src/app/qgsoptions.h +++ b/src/app/qgsoptions.h @@ -97,7 +97,10 @@ class QgsOptions :public QDialog, private Ui::QgsOptionsBase QWidget *qparent; //!Global default projection used for new layers added that have no projection - long mGlobalSRSID; + //long mGlobalSRSID; + + //!Default proj4 string used for new layers added that have no projection + QString mGlobalProj4String; }; diff --git a/src/app/qgsserversourceselect.cpp b/src/app/qgsserversourceselect.cpp index 3efa52cc82e..4ed8b4818bf 100644 --- a/src/app/qgsserversourceselect.cpp +++ b/src/app/qgsserversourceselect.cpp @@ -434,9 +434,12 @@ void QgsServerSourceSelect::on_btnChangeSpatialRefSys_clicked() mySelector->setOgcWmsCrsFilter(crsFilter); - long myDefaultSRS = QgsProject::instance()->readNumEntry("SpatialRefSys", "/ProjectSRSID", GEOSRS_ID); - - mySelector->setSelectedSRSID(myDefaultSRS); + QString myDefaultProjString = QgsProject::instance()->readEntry("SpatialRefSys", "/ProjectSRSProj4String", GEOPROJ4); + QgsSpatialRefSys defaultSRS; + if(defaultSRS.createFromProj4(myDefaultProjString)) + { + mySelector->setSelectedSRSID(defaultSRS.srsid()); + } if (mySelector->exec()) {