Skip to content
Permalink
Browse files

GRASS direct no data for type

  • Loading branch information
blazek committed Apr 10, 2013
1 parent 9e82df8 commit a7e1d40e8ad58fe13b81862ecb13d6eabbc01783
Showing with 24 additions and 15 deletions.
  1. +21 −15 src/providers/grass/qgsgrassgislib.cpp
  2. +3 −0 src/providers/grass/qgsgrassgislib.h
@@ -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<double>::quiet_NaN();
switch ( wr_type )
{
case CELL_TYPE:
noDataValue = -1 * std::numeric_limits<int>::max();
break;
case FCELL_TYPE:
noDataValue = std::numeric_limits<float>::quiet_NaN();
break;
case DCELL_TYPE:
noDataValue = std::numeric_limits<double>::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<double>::quiet_NaN();
switch ( grassType )
{
case CELL_TYPE:
noDataValue = -1 * std::numeric_limits<int>::max();
break;
case FCELL_TYPE:
noDataValue = std::numeric_limits<float>::quiet_NaN();
break;
case DCELL_TYPE:
noDataValue = std::numeric_limits<double>::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 )
{
@@ -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 );

0 comments on commit a7e1d40

Please sign in to comment.
You can’t perform that action at this time.