@@ -95,18 +95,15 @@ class GRASSDataset final: public GDALDataset
95
95
96
96
struct Cell_head sCellInfo ; /* raster region */
97
97
98
- char *pszProjection ;
98
+ OGRSpatialReference m_oSRS{} ;
99
99
100
100
double adfGeoTransform[6 ];
101
101
102
102
public:
103
103
GRASSDataset ();
104
104
~GRASSDataset () override ;
105
105
106
- const char *_GetProjectionRef (void ) override ;
107
- const OGRSpatialReference* GetSpatialRef () const override {
108
- return GetSpatialRefFromOldGetProjectionRef ();
109
- }
106
+ const OGRSpatialReference* GetSpatialRef () const override ;
110
107
CPLErr GetGeoTransform ( double * ) override ;
111
108
112
109
static GDALDataset *Open ( GDALOpenInfo * );
@@ -718,7 +715,7 @@ double GRASSRasterBand::GetNoDataValue( int *pbSuccess )
718
715
719
716
GRASSDataset::GRASSDataset ()
720
717
{
721
- pszProjection = NULL ;
718
+ m_oSRS. SetAxisMappingStrategy (OAMS_TRADITIONAL_GIS_ORDER) ;
722
719
723
720
adfGeoTransform[0 ] = 0.0 ;
724
721
adfGeoTransform[1 ] = 1.0 ;
@@ -746,20 +743,15 @@ GRASSDataset::~GRASSDataset()
746
743
747
744
if ( pszElement )
748
745
G_free ( pszElement );
749
-
750
- G_free ( pszProjection );
751
746
}
752
747
753
748
/* ***********************************************************************/
754
- /* GetProjectionRef() */
749
+ /* GetSpatialRef() */
755
750
/* ***********************************************************************/
756
751
757
- const char *GRASSDataset::_GetProjectionRef ()
752
+ const OGRSpatialReference *GRASSDataset::GetSpatialRef () const
758
753
{
759
- if ( pszProjection == NULL )
760
- return " " ;
761
- else
762
- return pszProjection;
754
+ return m_oSRS.IsEmpty () ? nullptr : &m_oSRS;
763
755
}
764
756
765
757
/* ***********************************************************************/
@@ -974,9 +966,12 @@ GDALDataset *GRASSDataset::Open( GDALOpenInfo * poOpenInfo )
974
966
975
967
projinfo = G_get_projinfo ();
976
968
projunits = G_get_projunits ();
977
- poDS-> pszProjection = GPJ_grass_to_wkt ( projinfo, projunits, 0 , 0 );
969
+ char * pszWKT = GPJ_grass_to_wkt ( projinfo, projunits, 0 , 0 );
978
970
if (projinfo) G_free_key_value (projinfo);
979
971
if (projunits) G_free_key_value (projunits);
972
+ if ( pszWKT )
973
+ poDS->m_oSRS .importFromWkt (pszWKT);
974
+ G_free ( pszWKT );
980
975
981
976
/* -------------------------------------------------------------------- */
982
977
/* Create band information objects. */
0 commit comments