QgsCoordinateReferenceSystem GRASS_EXPORT QgsGrass::crs( QString gisdbase, QString location ) { QgsDebugMsg( QString( "gisdbase = %1 location = %2" ).arg( gisdbase ).arg( location ) ); QgsCoordinateReferenceSystem crs = QgsCoordinateReferenceSystem(); try { QString wkt = QgsGrass::getInfo( "proj", gisdbase, location ); QgsDebugMsg( "wkt: " + wkt ); crs.createFromWkt( wkt ); QgsDebugMsg( "crs.toWkt: " + crs.toWkt() ); } catch ( QgsGrass::Exception &e ) { QMessageBox::warning( 0, QObject::tr( "Warning" ), QObject::tr( "Cannot get projection " ) + "\n" + e.what() ); } return crs; }
QgsCoordinateReferenceSystem GRASS_EXPORT QgsGrass::crsDirect( QString gisdbase, QString location ) { QString Wkt; struct Cell_head cellhd; QgsGrass::resetError(); QgsGrass::setLocation( gisdbase, location ); const char *oldlocale = setlocale( LC_NUMERIC, NULL ); setlocale( LC_NUMERIC, "C" ); try { G_get_default_window( &cellhd ); } catch ( QgsGrass::Exception &e ) { Q_UNUSED( e ); setlocale( LC_NUMERIC, oldlocale ); QgsDebugMsg( QString( "Cannot get default window: %1" ).arg( e.what() ) ); return QgsCoordinateReferenceSystem(); } if ( cellhd.proj != PROJECTION_XY ) { struct Key_Value *projinfo = G_get_projinfo(); struct Key_Value *projunits = G_get_projunits(); char *wkt = GPJ_grass_to_wkt( projinfo, projunits, 0, 0 ); Wkt = QString( wkt ); G_free( wkt ); } setlocale( LC_NUMERIC, oldlocale ); QgsCoordinateReferenceSystem srs; srs.createFromWkt( Wkt ); return srs; }