|
@@ -229,6 +229,7 @@ int export_band(GDALDatasetH hMEMDS, int band,
|
|
|
int rows = cellhead->rows;
|
|
|
int ret = 0;
|
|
|
char value[200];
|
|
|
+ char *units;
|
|
|
|
|
|
/* Open GRASS raster */
|
|
|
fd = Rast_open_old(name, mapset);
|
|
@@ -244,6 +245,10 @@ int export_band(GDALDatasetH hMEMDS, int band,
|
|
|
if (!no_metadata)
|
|
|
GDALSetDescription(hBand, name);
|
|
|
|
|
|
+ units = Rast_read_units(name, mapset);
|
|
|
+ if (units)
|
|
|
+ GDALSetRasterUnitType(hBand, units);
|
|
|
+
|
|
|
/* Get min/max values. */
|
|
|
if (Rast_read_fp_range(name, mapset, &sRange) == -1) {
|
|
|
bHaveMinMax = FALSE;
|
|
@@ -536,9 +541,11 @@ int exact_range_check(double min, double max, GDALDataType datatype,
|
|
|
|
|
|
case GDT_Float32:
|
|
|
case GDT_CFloat32:
|
|
|
- if (min < TYPE_FLOAT32_MIN || max > TYPE_FLOAT32_MAX) {
|
|
|
+ /* support export of inf / -inf ? */
|
|
|
+ if ((float)min !=TYPE_FLOAT32_MIN && (float)max != TYPE_FLOAT32_MAX &&
|
|
|
+ (min < TYPE_FLOAT32_MIN || max > TYPE_FLOAT32_MAX)) {
|
|
|
G_warning(_("Selected GDAL datatype does not cover data range."));
|
|
|
- G_warning(_("GDAL datatype: %s, range: %g - %g"),
|
|
|
+ G_warning(_("GDAL datatype: %s, range: %.7g - %.7g"),
|
|
|
GDALGetDataTypeName(datatype), TYPE_FLOAT32_MIN,
|
|
|
TYPE_FLOAT32_MAX);
|
|
|
G_warning(_("Raster map <%s> range: %g - %g"), name, min, max);
|
|
@@ -550,9 +557,10 @@ int exact_range_check(double min, double max, GDALDataType datatype,
|
|
|
case GDT_Float64:
|
|
|
case GDT_CFloat64:
|
|
|
/* not possible because DCELL is FLOAT64, not 128bit floating point, but anyway... */
|
|
|
+ /* support export of inf / -inf ? */
|
|
|
if (min < TYPE_FLOAT64_MIN || max > TYPE_FLOAT64_MAX) {
|
|
|
G_warning(_("Selected GDAL datatype does not cover data range."));
|
|
|
- G_warning(_("GDAL datatype: %s, range: %g - %g"),
|
|
|
+ G_warning(_("GDAL datatype: %s, range: %.16g - %.16g"),
|
|
|
GDALGetDataTypeName(datatype), TYPE_FLOAT64_MIN,
|
|
|
TYPE_FLOAT64_MAX);
|
|
|
G_warning(_("Raster map <%s> range: %g - %g"), name, min, max);
|