@@ -1807,6 +1807,44 @@ QGISEXTERN bool createEmptyDataSource( const QString &uri,
1807
1807
return true ;
1808
1808
}
1809
1809
1810
+ bool QgsOgrProvider::crsFromWkt ( QgsCoordinateReferenceSystem &srs, const char *wkt )
1811
+ {
1812
+ void *hCRS = OSRNewSpatialReference ( NULL );
1813
+
1814
+ if ( OSRImportFromWkt ( hCRS, ( char ** ) &wkt ) == OGRERR_NONE )
1815
+ {
1816
+ if ( OSRAutoIdentifyEPSG ( hCRS ) == OGRERR_NONE )
1817
+ {
1818
+ QString authid = QString ( " %1:%2" )
1819
+ .arg ( OSRGetAuthorityName ( hCRS, NULL ) )
1820
+ .arg ( OSRGetAuthorityCode ( hCRS, NULL ) );
1821
+ QgsDebugMsg ( " authid recognized as " + authid );
1822
+ srs.createFromOgcWmsCrs ( authid );
1823
+ }
1824
+ else
1825
+ {
1826
+ // get the proj4 text
1827
+ char *pszProj4;
1828
+ OSRExportToProj4 ( hCRS, &pszProj4 );
1829
+ QgsDebugMsg ( pszProj4 );
1830
+ OGRFree ( pszProj4 );
1831
+
1832
+ char *pszWkt = NULL ;
1833
+ OSRExportToWkt ( hCRS, &pszWkt );
1834
+ QString myWktString = QString ( pszWkt );
1835
+ OGRFree ( pszWkt );
1836
+
1837
+ // create CRS from Wkt
1838
+ srs.createFromWkt ( myWktString );
1839
+ }
1840
+ }
1841
+
1842
+ OSRRelease ( hCRS );
1843
+
1844
+ return srs.isValid ();
1845
+ }
1846
+
1847
+
1810
1848
QgsCoordinateReferenceSystem QgsOgrProvider::crs ()
1811
1849
{
1812
1850
QgsDebugMsg ( " entering." );
@@ -1827,29 +1865,14 @@ QgsCoordinateReferenceSystem QgsOgrProvider::crs()
1827
1865
QString myWktString = prjStream.readLine ();
1828
1866
prjFile.close ();
1829
1867
1830
- // create CRS from Wkt
1831
- srs.createFromWkt ( myWktString );
1832
-
1833
- if ( srs.isValid () )
1868
+ if ( crsFromWkt ( srs, myWktString.toUtf8 ().constData () ) )
1834
1869
return srs;
1835
1870
}
1836
1871
}
1837
1872
}
1838
1873
1839
1874
OGRSpatialReferenceH mySpatialRefSys = OGR_L_GetSpatialRef ( ogrLayer );
1840
- if ( mySpatialRefSys == NULL )
1841
- {
1842
- QgsDebugMsg ( " no spatial reference found" );
1843
- }
1844
- else if ( OSRAutoIdentifyEPSG ( mySpatialRefSys ) == OGRERR_NONE )
1845
- {
1846
- QString authid = QString ( " %1:%2" )
1847
- .arg ( OSRGetAuthorityName ( mySpatialRefSys, NULL ) )
1848
- .arg ( OSRGetAuthorityCode ( mySpatialRefSys, NULL ) );
1849
- QgsDebugMsg ( " authid recognized as " + authid );
1850
- srs.createFromOgcWmsCrs ( authid );
1851
- }
1852
- else
1875
+ if ( mySpatialRefSys )
1853
1876
{
1854
1877
// get the proj4 text
1855
1878
char *pszProj4;
@@ -1859,11 +1882,12 @@ QgsCoordinateReferenceSystem QgsOgrProvider::crs()
1859
1882
1860
1883
char *pszWkt = NULL ;
1861
1884
OSRExportToWkt ( mySpatialRefSys, &pszWkt );
1862
- QString myWktString = QString ( pszWkt );
1885
+ crsFromWkt ( srs, pszWkt );
1863
1886
OGRFree ( pszWkt );
1864
-
1865
- // create CRS from Wkt
1866
- srs.createFromWkt ( myWktString );
1887
+ }
1888
+ else
1889
+ {
1890
+ QgsDebugMsg ( " no spatial reference found" );
1867
1891
}
1868
1892
1869
1893
return srs;
0 commit comments