|
@@ -18,8 +18,9 @@
|
|
|
#include <grass/raster.h>
|
|
|
#include <grass/glocale.h>
|
|
|
|
|
|
-#include "cpl_string.h"
|
|
|
-#include "gdal.h"
|
|
|
+#include <gdal.h>
|
|
|
+#include <cpl_string.h>
|
|
|
+#include <cpl_port.h>
|
|
|
#include "local_proto.h"
|
|
|
|
|
|
int exact_range_check(double, double, GDALDataType, const char *);
|
|
@@ -75,17 +76,23 @@ int exact_checks(GDALDataType export_datatype,
|
|
|
|
|
|
Rast_get_row(fd, bufer, row, maptype);
|
|
|
for (col = 0; col < cols; col++) {
|
|
|
- if (Rast_is_f_null_value(&((FCELL *) bufer)[col])) {
|
|
|
+ FCELL fval = ((FCELL *) bufer)[col];
|
|
|
+
|
|
|
+ if (Rast_is_f_null_value(&fval)) {
|
|
|
+ ((FCELL *) bufer)[col] = fnullval;
|
|
|
n_nulls++;
|
|
|
}
|
|
|
else {
|
|
|
- if (((FCELL *) bufer)[col] == fnullval) {
|
|
|
+ if (fval == fnullval) {
|
|
|
nodatavalmatch = 1;
|
|
|
}
|
|
|
- if (dfCellMin > ((FCELL *) bufer)[col])
|
|
|
- dfCellMin = ((FCELL *) bufer)[col];
|
|
|
- if (dfCellMax < ((FCELL *) bufer)[col])
|
|
|
- dfCellMax = ((FCELL *) bufer)[col];
|
|
|
+ if (!CPLIsInf(fval)) {
|
|
|
+ /* ignore inf */
|
|
|
+ if (dfCellMin > fval)
|
|
|
+ dfCellMin = fval;
|
|
|
+ if (dfCellMax < fval)
|
|
|
+ dfCellMax = fval;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
G_percent(row + 1, rows, 2);
|
|
@@ -101,18 +108,23 @@ int exact_checks(GDALDataType export_datatype,
|
|
|
|
|
|
Rast_get_row(fd, bufer, row, maptype);
|
|
|
for (col = 0; col < cols; col++) {
|
|
|
- if (Rast_is_d_null_value(&((DCELL *) bufer)[col])) {
|
|
|
+ DCELL dval = ((DCELL *) bufer)[col];
|
|
|
+
|
|
|
+ if (Rast_is_d_null_value(&dval)) {
|
|
|
((DCELL *) bufer)[col] = dnullval;
|
|
|
n_nulls++;
|
|
|
}
|
|
|
else {
|
|
|
- if (((DCELL *) bufer)[col] == dnullval) {
|
|
|
+ if (dval == dnullval) {
|
|
|
nodatavalmatch = 1;
|
|
|
}
|
|
|
- if (dfCellMin > ((DCELL *) bufer)[col])
|
|
|
- dfCellMin = ((DCELL *) bufer)[col];
|
|
|
- if (dfCellMax < ((DCELL *) bufer)[col])
|
|
|
- dfCellMax = ((DCELL *) bufer)[col];
|
|
|
+ if (!CPLIsInf(dval)) {
|
|
|
+ /* ignore inf */
|
|
|
+ if (dfCellMin > dval)
|
|
|
+ dfCellMin = dval;
|
|
|
+ if (dfCellMax < dval)
|
|
|
+ dfCellMax = dval;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
G_percent(row + 1, rows, 2);
|
|
@@ -229,6 +241,9 @@ int export_band(GDALDatasetH hMEMDS, int band,
|
|
|
return -1;
|
|
|
}
|
|
|
|
|
|
+ if (!no_metadata)
|
|
|
+ GDALSetDescription(hBand, name);
|
|
|
+
|
|
|
/* Get min/max values. */
|
|
|
if (Rast_read_fp_range(name, mapset, &sRange) == -1) {
|
|
|
bHaveMinMax = FALSE;
|