diff --git a/src/providers/grass/qgsgrassgislib.cpp b/src/providers/grass/qgsgrassgislib.cpp index 960c3a281702..4da4e571945f 100644 --- a/src/providers/grass/qgsgrassgislib.cpp +++ b/src/providers/grass/qgsgrassgislib.cpp @@ -605,21 +605,7 @@ int QgsGrassGisLib::G_open_raster_new( const char *name, RASTER_MAP_TYPE wr_type } raster.band = 1; - double noDataValue = std::numeric_limits::quiet_NaN(); - switch ( wr_type ) - { - case CELL_TYPE: - noDataValue = -1 * std::numeric_limits::max(); - break; - case FCELL_TYPE: - noDataValue = std::numeric_limits::quiet_NaN(); - break; - case DCELL_TYPE: - noDataValue = std::numeric_limits::quiet_NaN(); - break; - default: - break; - } + double noDataValue = noDataValueForGrassType( wr_type ); QgsDebugMsg( QString( "noDataValue = %1" ).arg(( int )noDataValue ) ); raster.provider->setNoDataValue( raster.band, noDataValue ); @@ -1286,6 +1272,26 @@ RASTER_MAP_TYPE QgsGrassGisLib::grassRasterType( QGis::DataType qgisType ) } } +double QgsGrassGisLib::noDataValueForGrassType( RASTER_MAP_TYPE grassType ) +{ + double noDataValue = std::numeric_limits::quiet_NaN(); + switch ( grassType ) + { + case CELL_TYPE: + noDataValue = -1 * std::numeric_limits::max(); + break; + case FCELL_TYPE: + noDataValue = std::numeric_limits::quiet_NaN(); + break; + case DCELL_TYPE: + noDataValue = std::numeric_limits::quiet_NaN(); + break; + default: + break; + } + return noDataValue; +} + typedef int G_vasprintf_type( char **, const char *, va_list ); int G_vasprintf( char **out, const char *fmt, va_list ap ) { diff --git a/src/providers/grass/qgsgrassgislib.h b/src/providers/grass/qgsgrassgislib.h index 1928ded54342..d7930a70c7be 100644 --- a/src/providers/grass/qgsgrassgislib.h +++ b/src/providers/grass/qgsgrassgislib.h @@ -107,6 +107,9 @@ class GRASS_LIB_EXPORT QgsGrassGisLib /** Get GRASS raster type for QGIS raster type */ RASTER_MAP_TYPE grassRasterType( QGis::DataType qgisType ); + /** Get no data value for GRASS data type */ + double noDataValueForGrassType( RASTER_MAP_TYPE grassType ); + /** Grass does not seem to have any function to init Cell_head, * initialisation is done in G__read_Cell_head_array */ void initCellHead( struct Cell_head *cellhd );