[GRASS-user] DBMI-DBF driver error

Hi

Can anyone help me on this problem?

On Wed, Jul 14, 2010 at 1:31 PM, Sandile Gumede <akasandile@gmail.com> wrote:

Hi,

I’m using GTOPO30 DEM data and TRMM (rainfall) data, I selected the data for the whole of africa but I’m getting an error when executing v.rast.stats.

Here is a step-by-step of what I did:

  1. GTOPO30 DEM
  • downloaded e020n10,w020s10,e020n40,w020n40 compressed files from “ftp://edcftp.cr.usgs.gov/pub/data/gtopo30/global/”.
  • decompressed all the above files.
  • Added “PIXELTYPE SIGNEDINT” in all .HDR files
  • warp merged all the .DEM file with “gdalwarp *.DEM Africa.tif” command.
  • projected it with “gdal_translate -a_srs EPSG:4326 Africa.tif DEM.tif”
  1. TRMM “rainfall” data
  • downloaded 3B42RT.2010061503.1day.tif,3B42RT.2010061503.1day.tfw from “”.
  • projected it with "gdal_translate -a_srs EPSG:4326 -projwin -20 40 60 -60 3B42RT.2010061503.1day.tif TRMM.tif ".

Then, imported the two data sets:

r.in.gdal in=/home/tgumede1/grassdem/ict4eo/DEM.tif out=dem

Projection of input dataset and current location appear to match
100%
r.in.gdal complete. Raster map created.

g.region rast=dem

r.in.gdal in=/home/tgumede1/grassdem/ict4eo/CapeTown_TRMMs.tif out=rainfall target=CapeTown

Projection of input dataset and current location appear to match
100%
r.in.gdal complete. Raster map created.

r.watershed elevation=dem accumulation=acc drainage=direction stream=str basin=catch memory=300 threshold=100000
SECTION 1a (of 5): Initiating Memory.
SECTION 1b (of 5): Determining Offmap Flow.
100%
SECTION 2: A * Search.
100%
SECTION 3: Accumulating Surface Flow.
100%
SECTION 4: Watershed determination.
100%
SECTION 5: Closing Maps.
100%

Q: How do one really know the exact threshold value?

r.to.vect in=catch out=catchments feature=area

Extracting areas…
100%
100%
Building topology for vector map …
Registering primitives…

134246 primitives registered
701002 vertices registered
Building areas…
100%
44645 areas built

1 isles built
Attaching islands…
100%
Attaching centroids…
100%

Number of nodes: 89602
Number of primitives: 134246

Number of points: 0
Number of lines: 0

Number of boundaries: 89604
Number of centroids: 44642
Number of areas: 44645
Number of isles: 1
Number of areas without centroid: 3
r.to.vect complete.

g.region rast=rainfall

v.rast.stats vector=catchments raster=rainfall colprefix=precip
WARNING: Area without centroid (may be OK for island)
WARNING: Area without centroid (may be OK for island)
WARNING: Area without centroid (may be OK for island)

DBMI-DBF driver error:
SQL parser error: syntax error, unexpected NULL_VALUE processing ‘NULL’
in statement:

UPDATE catchments SET precip_cf_=-NULL WHERE cat=17
Error in db_execute_immediate()

ERROR: Error while executing: ‘UPDATE catchments SET precip_cf_=-NULL WHERE
cat=17’

r.info -g rainfall
north=40
south=-60
east=60
west=-20

v.info -g catchments
north=40
south=-60
east=60
west=-20

top=0.000000
bottom=0.000000

output of r.info

Type of Map: raster Number of Categories: 2559
Data Type: CELL
Rows: 400
Columns: 320
Total Cells: 128000
Projection: Latitude-Longitude
N: 40N S: 60S Res: 0:15
E: 60E W: 20W Res: 0:15
Range of data: min = 0 max = 2559

Data Description:
generated by r.in.gdal

Comments:

r.in.gdal input=“/home/tgumede1/grassdem/ict4eo/CapeTown_TRMMs.tif”
output=“rainfall” target=“CapeTown”

  • output of r.univar

r.univar rainfall
100%
total null and non-null cells: 115200000

total null cells: 0

Of the non-null cells:

n: 115200000
minimum: 0
maximum: 2559
range: 2559
mean: 22.4897
mean of absolute values: 22.4897
standard deviation: 83.1312
variance: 6910.79
variation coefficient: 369.642 %
sum: 2590809300


Kind Regards
TS Gumede
CSIR, Meraka Institute
072 258 1650


Kind Regards
TS Gumede
CSIR, Meraka Institute
072 258 1650

On Thu, Jul 15, 2010 at 1:10 PM, Sandile Gumede <akasandile@gmail.com> wrote:
...

I'm using GTOPO30 DEM data and TRMM (rainfall) data, I selected the data
for the whole of africa but I'm getting an error when executing
v.rast.stats.

...

v.rast.stats vector=catchments raster=rainfall colprefix=precip
WARNING: Area without centroid (may be OK for island)
WARNING: Area without centroid (may be OK for island)
WARNING: Area without centroid (may be OK for island)
DBMI-DBF driver error:
SQL parser error: syntax error, unexpected NULL_VALUE processing 'NULL'
in statement:
UPDATE catchments SET precip_cf_=-NULL WHERE cat=17
Error in db_execute_immediate()

ERROR: Error while executing: 'UPDATE catchments SET precip_cf_=-NULL
WHERE
cat=17'

There is a minus sign in front of NULL - never seen that and likely not
SQL compliant (at least for the DBF driver which is just an enhanced table
driver).

Maybe it comes from here?

[neteler@localhost v.rast.stats]$ grep NULL *
v.rast.stats: eval `r.univar -g $EXTSTAT map="$RASTER"
percentile="$GIS_OPT_PERCENTILE" | sed 's+nan+NULL+g'`

but AFAIK r.univar would not output -nan.

Please edit your v.rast.stats script ("which v.rast.stats") to find
the path if on Unix-like OS)
and change the first line from

#!/bin/sh

to

#!/bin/sh -x

and run it again. From the detailed output you may see where this spurious "-"
comes in and tell us about it.

Markus

Hi Markus

Here is the output:

  • v.db.connect map=catchments -g fs=;
  • grep -w 1
  • TABLE=catchments
  • [ -z catchments ]
  • BASECOLS=n min max range mean stddev variance cf_var sum
  • [ 0 -eq 1 ]
  • EXTRACOLS=
  • unset ADDCOLS
  • [ 1 -eq 1 ]
  • echo prec_n
  • cut -b1-10
  • CURRCOLUMN=prec_n
  • sed s+$+|+g
  • v.info -c catchments --quiet
  • grep |prec_n| --quiet
  • sed s+^+|+g
  • [ 1 -eq 0 ]
  • [ -n ]
  • [ n = n ]
  • COLTYPE=INTEGER
  • ADDCOLS= prec_n INTEGER
  • [ 1 -eq 1 ]
  • echo prec_min
  • cut -b1-10
  • CURRCOLUMN=prec_min
  • sed s+$+|+g
  • v.info -c catchments --quiet
  • grep |prec_min| --quiet
  • sed s+^+|+g
  • [ 1 -eq 0 ]
  • [ -n prec_n INTEGER ]
  • ADDCOLS= prec_n INTEGER,
  • [ min = n ]
  • COLTYPE=DOUBLE PRECISION
  • ADDCOLS= prec_n INTEGER, prec_min DOUBLE PRECISION
  • [ 1 -eq 1 ]
  • echo prec_max
  • cut -b1-10
  • CURRCOLUMN=prec_max
  • grep |prec_max| --quiet
  • sed s+$+|+g
  • v.info -c catchments --quiet
  • sed s+^+|+g
  • [ 1 -eq 0 ]
  • [ -n prec_n INTEGER, prec_min DOUBLE PRECISION ]
  • ADDCOLS= prec_n INTEGER, prec_min DOUBLE PRECISION,
  • [ max = n ]
  • COLTYPE=DOUBLE PRECISION
  • ADDCOLS= prec_n INTEGER, prec_min DOUBLE PRECISION, prec_max DOUBLE PRECISION
  • [ 1 -eq 1 ]
  • echo prec_range
  • cut -b1-10
  • CURRCOLUMN=prec_range
  • sed s+$+|+g
  • v.info -c catchments --quiet
  • grep |prec_range| --quiet
  • sed s+^+|+g
  • [ 1 -eq 0 ]
  • [ -n prec_n INTEGER, prec_min DOUBLE PRECISION, prec_max DOUBLE PRECISION ]
  • ADDCOLS= prec_n INTEGER, prec_min DOUBLE PRECISION, prec_max DOUBLE PRECISION,
  • [ range = n ]
  • COLTYPE=DOUBLE PRECISION
  • ADDCOLS= prec_n INTEGER, prec_min DOUBLE PRECISION, prec_max DOUBLE PRECISION, prec_range DOUBLE PRECISION
  • [ 1 -eq 1 ]
  • cut -b1-10
  • echo prec_mean
  • CURRCOLUMN=prec_mean
  • sed s+$+|+g
  • v.info -c catchments --quiet
  • grep |prec_mean| --quiet
  • sed s+^+|+g
  • [ 1 -eq 0 ]
  • [ -n prec_n INTEGER, prec_min DOUBLE PRECISION, prec_max DOUBLE PRECISION, prec_range DOUBLE PRECISION ]
  • ADDCOLS= prec_n INTEGER, prec_min DOUBLE PRECISION, prec_max DOUBLE PRECISION, prec_range DOUBLE PRECISION,
  • [ mean = n ]
  • COLTYPE=DOUBLE PRECISION
  • ADDCOLS= prec_n INTEGER, prec_min DOUBLE PRECISION, prec_max DOUBLE PRECISION, prec_range DOUBLE PRECISION, prec_mean DOUBLE PRECISION
  • [ 1 -eq 1 ]
  • echo prec_stddev
  • cut -b1-10
  • CURRCOLUMN=prec_stdde
  • sed s+$+|+g
  • v.info -c catchments --quiet
  • grep |prec_stdde| --quiet
  • sed s+^+|+g
  • [ 1 -eq 0 ]
  • [ -n prec_n INTEGER, prec_min DOUBLE PRECISION, prec_max DOUBLE PRECISION, prec_range DOUBLE PRECISION, prec_mean DOUBLE PRECISION ]
  • ADDCOLS= prec_n INTEGER, prec_min DOUBLE PRECISION, prec_max DOUBLE PRECISION, prec_range DOUBLE PRECISION, prec_mean DOUBLE PRECISION,
  • [ stddev = n ]
  • COLTYPE=DOUBLE PRECISION
  • ADDCOLS= prec_n INTEGER, prec_min DOUBLE PRECISION, prec_max DOUBLE PRECISION, prec_range DOUBLE PRECISION, prec_mean DOUBLE PRECISION, prec_stdde DOUBLE PRECISION
  • [ 1 -eq 1 ]
  • echo prec_variance
  • cut -b1-10
  • CURRCOLUMN=prec_varia
  • sed s+$+|+g
  • grep |prec_varia| --quiet
  • v.info -c catchments --quiet
  • sed s+^+|+g
  • [ 1 -eq 0 ]
  • [ -n prec_n INTEGER, prec_min DOUBLE PRECISION, prec_max DOUBLE PRECISION, prec_range DOUBLE PRECISION, prec_mean DOUBLE PRECISION, prec_stdde DOUBLE PRECISION ]
  • ADDCOLS= prec_n INTEGER, prec_min DOUBLE PRECISION, prec_max DOUBLE PRECISION, prec_range DOUBLE PRECISION, prec_mean DOUBLE PRECISION, prec_stdde DOUBLE PRECISION,
  • [ variance = n ]
  • COLTYPE=DOUBLE PRECISION
  • ADDCOLS= prec_n INTEGER, prec_min DOUBLE PRECISION, prec_max DOUBLE PRECISION, prec_range DOUBLE PRECISION, prec_mean DOUBLE PRECISION, prec_stdde DOUBLE PRECISION, prec_varia DOUBLE PRECISION
  • [ 1 -eq 1 ]
  • echo prec_cf_var
  • cut -b1-10
  • CURRCOLUMN=prec_cf_va
  • sed s+$+|+g
  • v.info -c catchments --quiet
  • grep |prec_cf_va| --quiet
  • sed s+^+|+g
  • [ 1 -eq 0 ]
  • [ -n prec_n INTEGER, prec_min DOUBLE PRECISION, prec_max DOUBLE PRECISION, prec_range DOUBLE PRECISION, prec_mean DOUBLE PRECISION, prec_stdde DOUBLE PRECISION, prec_varia DOUBLE PRECISION ]
  • ADDCOLS= prec_n INTEGER, prec_min DOUBLE PRECISION, prec_max DOUBLE PRECISION, prec_range DOUBLE PRECISION, prec_mean DOUBLE PRECISION, prec_stdde DOUBLE PRECISION, prec_varia DOUBLE PRECISION,
  • [ cf_var = n ]
  • COLTYPE=DOUBLE PRECISION
  • ADDCOLS= prec_n INTEGER, prec_min DOUBLE PRECISION, prec_max DOUBLE PRECISION, prec_range DOUBLE PRECISION, prec_mean DOUBLE PRECISION, prec_stdde DOUBLE PRECISION, prec_varia DOUBLE PRECISION, prec_cf_va DOUBLE PRECISION
  • [ 1 -eq 1 ]
  • echo prec_sum
  • cut -b1-10
  • CURRCOLUMN=prec_sum
  • grep |prec_sum| --quiet
  • sed s+^+|+g
  • v.info -c catchments --quiet
  • sed s+$+|+g
  • [ 1 -eq 0 ]
  • [ -n prec_n INTEGER, prec_min DOUBLE PRECISION, prec_max DOUBLE PRECISION, prec_range DOUBLE PRECISION, prec_mean DOUBLE PRECISION, prec_stdde DOUBLE PRECISION, prec_varia DOUBLE PRECISION, prec_cf_va DOUBLE PRECISION ]
  • ADDCOLS= prec_n INTEGER, prec_min DOUBLE PRECISION, prec_max DOUBLE PRECISION, prec_range DOUBLE PRECISION, prec_mean DOUBLE PRECISION, prec_stdde DOUBLE PRECISION, prec_varia DOUBLE PRECISION, prec_cf_va DOUBLE PRECISION,
  • [ sum = n ]
  • COLTYPE=DOUBLE PRECISION
  • ADDCOLS= prec_n INTEGER, prec_min DOUBLE PRECISION, prec_max DOUBLE PRECISION, prec_range DOUBLE PRECISION, prec_mean DOUBLE PRECISION, prec_stdde DOUBLE PRECISION, prec_varia DOUBLE PRECISION, prec_cf_va DOUBLE PRECISION, prec_sum DOUBLE PRECISION
  • g.message -v Adding columns < prec_n INTEGER, prec_min DOUBLE PRECISION, prec_max DOUBLE PRECISION, prec_range DOUBLE PRECISION, prec_mean DOUBLE PRECISION, prec_stdde DOUBLE PRECISION, prec_varia DOUBLE PRECISION, prec_cf_va DOUBLE PRECISION, prec_sum DOUBLE PRECISION>
  • v.db.addcol map=catchments columns= prec_n INTEGER, prec_min DOUBLE PRECISION, prec_max DOUBLE PRECISION, prec_range DOUBLE PRECISION, prec_mean DOUBLE PRECISION, prec_stdde DOUBLE PRECISION, prec_varia DOUBLE PRECISION, prec_cf_va DOUBLE PRECISION, prec_sum DOUBLE PRECISION
  • [ 0 -ne 0 ]
  • g.message -v Processing data …
  • CURRNUM=1
  • rm -f /home/tgumede1/grassdata/Cape_Town/Original/SRTMDEM/PERMANENT/.tmp/tgumede1-desktop/23218.0.sql
  • [ 0 -eq 1 ]
  • EXTSTAT=
  • cat /home/tgumede1/grassdata/Cape_Town/Original/SRTMDEM/PERMANENT/.tmp/tgumede1-desktop/23218.0.cats
  • g.message -v message=Processing category 262 (1/4)
  • g.remove MASK --quiet
  • GRASS_VERBOSE=0 r.mapcalc MASK=if(catchments_23218.0 == 262, 1, null())
  • unset n min max range mean stddev variance cf_var sum
  • r.univar -g map=trmm percentile=90
  • sed s+nan+NULL+g
  • eval n=0 null_cells=12 min=-NULL max=-NULL range=-NULL mean=-NULL mean_of_abs=-NULL stddev=-NULL variance=-NULL coeff_var=-NULL sum=0
  • n=0 null_cells=12 min=-NULL max=-NULL range=-NULL mean=-NULL mean_of_abs=-NULL stddev=-NULL variance=-NULL coeff_var=-NULL sum=0
  • cf_var=-NULL
  • [ 0 -eq 1 ]
  • eval value=${n}
  • value=0
  • [ 1 -eq 1 ]
  • echo prec_n
  • cut -b1-10
  • colname=prec_n
  • echo UPDATE catchments SET prec_n=0 WHERE cat=262;
  • eval value=${min}
  • value=-NULL
  • [ 1 -eq 1 ]
  • echo prec_min
  • cut -b1-10
  • colname=prec_min
  • echo UPDATE catchments SET prec_min=-NULL WHERE cat=262;
  • eval value=${max}
  • value=-NULL
  • [ 1 -eq 1 ]
  • echo prec_max
  • cut -b1-10
  • colname=prec_max
  • echo UPDATE catchments SET prec_max=-NULL WHERE cat=262;
  • eval value=${range}
  • value=-NULL
  • [ 1 -eq 1 ]
  • echo prec_range
  • cut -b1-10
  • colname=prec_range
  • echo UPDATE catchments SET prec_range=-NULL WHERE cat=262;
  • eval value=${mean}
  • value=-NULL
  • [ 1 -eq 1 ]
  • cut -b1-10
  • echo prec_mean
  • colname=prec_mean
  • echo UPDATE catchments SET prec_mean=-NULL WHERE cat=262;
  • eval value=${stddev}
  • value=-NULL
  • [ 1 -eq 1 ]
  • cut -b1-10
  • echo prec_stddev
  • colname=prec_stdde
  • echo UPDATE catchments SET prec_stdde=-NULL WHERE cat=262;
  • eval value=${variance}
  • value=-NULL
  • [ 1 -eq 1 ]
  • cut -b1-10
  • echo prec_variance
  • colname=prec_varia
  • echo UPDATE catchments SET prec_varia=-NULL WHERE cat=262;
  • eval value=${cf_var}
  • value=-NULL
  • [ 1 -eq 1 ]
  • cut -b1-10
  • echo prec_cf_var
  • colname=prec_cf_va
  • echo UPDATE catchments SET prec_cf_va=-NULL WHERE cat=262;
  • eval value=${sum}
  • value=0
  • [ 1 -eq 1 ]
  • cut -b1-10
  • echo prec_sum
  • colname=prec_sum
  • echo UPDATE catchments SET prec_sum=0 WHERE cat=262;
  • expr 1 + 1
  • CURRNUM=2
  • g.message -v message=Processing category 549 (2/4)
  • g.remove MASK --quiet
  • GRASS_VERBOSE=0 r.mapcalc MASK=if(catchments_23218.0 == 549, 1, null())
  • unset n min max range mean stddev variance cf_var sum
  • r.univar -g map=trmm percentile=90
  • sed s+nan+NULL+g
  • eval n=0 null_cells=12 min=-NULL max=-NULL range=-NULL mean=-NULL mean_of_abs=-NULL stddev=-NULL variance=-NULL coeff_var=-NULL sum=0
  • n=0 null_cells=12 min=-NULL max=-NULL range=-NULL mean=-NULL mean_of_abs=-NULL stddev=-NULL variance=-NULL coeff_var=-NULL sum=0
  • cf_var=-NULL
  • [ 0 -eq 1 ]
  • eval value=${n}
  • value=0
  • [ 1 -eq 1 ]
  • echo prec_n
  • cut -b1-10
  • colname=prec_n
  • echo UPDATE catchments SET prec_n=0 WHERE cat=549;
  • eval value=${min}
  • value=-NULL
  • [ 1 -eq 1 ]
  • echo prec_min
  • cut -b1-10
  • colname=prec_min
  • echo UPDATE catchments SET prec_min=-NULL WHERE cat=549;
  • eval value=${max}
  • value=-NULL
  • [ 1 -eq 1 ]
  • echo prec_max
  • cut -b1-10
  • colname=prec_max
  • echo UPDATE catchments SET prec_max=-NULL WHERE cat=549;
  • eval value=${range}
  • value=-NULL
  • [ 1 -eq 1 ]
  • cut -b1-10
  • echo prec_range
  • colname=prec_range
  • echo UPDATE catchments SET prec_range=-NULL WHERE cat=549;
  • eval value=${mean}
  • value=-NULL
  • [ 1 -eq 1 ]
  • echo prec_mean
  • cut -b1-10
  • colname=prec_mean
  • echo UPDATE catchments SET prec_mean=-NULL WHERE cat=549;
  • eval value=${stddev}
  • value=-NULL
  • [ 1 -eq 1 ]
  • echo prec_stddev
  • cut -b1-10
  • colname=prec_stdde
  • echo UPDATE catchments SET prec_stdde=-NULL WHERE cat=549;
  • eval value=${variance}
  • value=-NULL
  • [ 1 -eq 1 ]
  • echo prec_variance
  • cut -b1-10
  • colname=prec_varia
  • echo UPDATE catchments SET prec_varia=-NULL WHERE cat=549;
  • eval value=${cf_var}
  • value=-NULL
  • [ 1 -eq 1 ]
  • echo prec_cf_var
  • cut -b1-10
  • colname=prec_cf_va
  • echo UPDATE catchments SET prec_cf_va=-NULL WHERE cat=549;
  • eval value=${sum}
  • value=0
  • [ 1 -eq 1 ]
  • echo prec_sum
  • cut -b1-10
  • colname=prec_sum
  • echo UPDATE catchments SET prec_sum=0 WHERE cat=549;
  • expr 2 + 1
  • CURRNUM=3
  • g.message -v message=Processing category 724 (3/4)
  • g.remove MASK --quiet
  • GRASS_VERBOSE=0 r.mapcalc MASK=if(catchments_23218.0 == 724, 1, null())
  • unset n min max range mean stddev variance cf_var sum
  • r.univar -g map=trmm percentile=90
  • sed s+nan+NULL+g
  • eval n=0 null_cells=12 min=-NULL max=-NULL range=-NULL mean=-NULL mean_of_abs=-NULL stddev=-NULL variance=-NULL coeff_var=-NULL sum=0
  • n=0 null_cells=12 min=-NULL max=-NULL range=-NULL mean=-NULL mean_of_abs=-NULL stddev=-NULL variance=-NULL coeff_var=-NULL sum=0
  • cf_var=-NULL
  • [ 0 -eq 1 ]
  • eval value=${n}
  • value=0
  • [ 1 -eq 1 ]
  • cut -b1-10
  • echo prec_n
  • colname=prec_n
  • echo UPDATE catchments SET prec_n=0 WHERE cat=724;
  • eval value=${min}
  • value=-NULL
  • [ 1 -eq 1 ]
  • echo prec_min
  • cut -b1-10
  • colname=prec_min
  • echo UPDATE catchments SET prec_min=-NULL WHERE cat=724;
  • eval value=${max}
  • value=-NULL
  • [ 1 -eq 1 ]
  • echo prec_max
  • cut -b1-10
  • colname=prec_max
  • echo UPDATE catchments SET prec_max=-NULL WHERE cat=724;
  • eval value=${range}
  • value=-NULL
  • [ 1 -eq 1 ]
  • echo prec_range
  • cut -b1-10
  • colname=prec_range
  • echo UPDATE catchments SET prec_range=-NULL WHERE cat=724;
  • eval value=${mean}
  • value=-NULL
  • [ 1 -eq 1 ]
  • echo prec_mean
  • cut -b1-10
  • colname=prec_mean
  • echo UPDATE catchments SET prec_mean=-NULL WHERE cat=724;
  • eval value=${stddev}
  • value=-NULL
  • [ 1 -eq 1 ]
  • echo prec_stddev
  • cut -b1-10
  • colname=prec_stdde
  • echo UPDATE catchments SET prec_stdde=-NULL WHERE cat=724;
  • eval value=${variance}
  • value=-NULL
  • [ 1 -eq 1 ]
  • echo prec_variance
  • cut -b1-10
  • colname=prec_varia
  • echo UPDATE catchments SET prec_varia=-NULL WHERE cat=724;
  • eval value=${cf_var}
  • value=-NULL
  • [ 1 -eq 1 ]
  • echo prec_cf_var
  • cut -b1-10
  • colname=prec_cf_va
  • echo UPDATE catchments SET prec_cf_va=-NULL WHERE cat=724;
  • eval value=${sum}
  • value=0
  • [ 1 -eq 1 ]
  • echo prec_sum
  • cut -b1-10
  • colname=prec_sum
  • echo UPDATE catchments SET prec_sum=0 WHERE cat=724;
  • expr 3 + 1
  • CURRNUM=4
  • g.message -v message=Processing category 733 (4/4)
  • g.remove MASK --quiet
  • GRASS_VERBOSE=0 r.mapcalc MASK=if(catchments_23218.0 == 733, 1, null())
  • unset n min max range mean stddev variance cf_var sum
  • r.univar -g map=trmm percentile=90
  • sed s+nan+NULL+g
  • eval n=0 null_cells=12 min=-NULL max=-NULL range=-NULL mean=-NULL mean_of_abs=-NULL stddev=-NULL variance=-NULL coeff_var=-NULL sum=0
  • n=0 null_cells=12 min=-NULL max=-NULL range=-NULL mean=-NULL mean_of_abs=-NULL stddev=-NULL variance=-NULL coeff_var=-NULL sum=0
  • cf_var=-NULL
  • [ 0 -eq 1 ]
  • eval value=${n}
  • value=0
  • [ 1 -eq 1 ]
  • echo prec_n
  • cut -b1-10
  • colname=prec_n
  • echo UPDATE catchments SET prec_n=0 WHERE cat=733;
  • eval value=${min}
  • value=-NULL
  • [ 1 -eq 1 ]
  • echo prec_min
  • cut -b1-10
  • colname=prec_min
  • echo UPDATE catchments SET prec_min=-NULL WHERE cat=733;
  • eval value=${max}
  • value=-NULL
  • [ 1 -eq 1 ]
  • echo prec_max
  • cut -b1-10
  • colname=prec_max
  • echo UPDATE catchments SET prec_max=-NULL WHERE cat=733;
  • eval value=${range}
  • value=-NULL
  • [ 1 -eq 1 ]
  • echo prec_range
  • cut -b1-10
  • colname=prec_range
  • echo UPDATE catchments SET prec_range=-NULL WHERE cat=733;
  • eval value=${mean}
  • value=-NULL
  • [ 1 -eq 1 ]
  • echo prec_mean
  • cut -b1-10
  • colname=prec_mean
  • echo UPDATE catchments SET prec_mean=-NULL WHERE cat=733;
  • eval value=${stddev}
  • value=-NULL
  • [ 1 -eq 1 ]
  • echo prec_stddev
  • cut -b1-10
  • colname=prec_stdde
  • echo UPDATE catchments SET prec_stdde=-NULL WHERE cat=733;
  • eval value=${variance}
  • value=-NULL
  • [ 1 -eq 1 ]
  • echo prec_variance
  • cut -b1-10
  • colname=prec_varia
  • echo UPDATE catchments SET prec_varia=-NULL WHERE cat=733;
  • eval value=${cf_var}
  • value=-NULL
  • [ 1 -eq 1 ]
  • echo prec_cf_var
  • cut -b1-10
  • colname=prec_cf_va
  • echo UPDATE catchments SET prec_cf_va=-NULL WHERE cat=733;
  • eval value=${sum}
  • value=0
  • [ 1 -eq 1 ]
  • echo prec_sum
  • cut -b1-10
  • colname=prec_sum
  • echo UPDATE catchments SET prec_sum=0 WHERE cat=733;
  • expr 4 + 1
  • CURRNUM=5
  • g.message -v Updating the database …
  • db.execute input=/home/tgumede1/grassdata/Cape_Town/Original/SRTMDEM/PERMANENT/.tmp/tgumede1-desktop/23218.0.sql database=/home/tgumede1/grassdata/Cape_Town/Original/SRTMDEM/PERMANENT/dbf/ driver=dbf
    DBMI-DBF driver error:
    SQL parser error: syntax error, unexpected NULL_VALUE processing ‘NULL’
    in statement:
    UPDATE catchments SET prec_min=-NULL WHERE cat=262
    Error in db_execute_immediate()

ERROR: Error while executing: ‘UPDATE catchments SET prec_min=-NULL WHERE
cat=262’

  • EXITCODE=1
  • g.remove MASK --quiet
  • cleanup
  • g.region region=23218.0
  • g.remove region=23218.0 --quiet
  • g.remove rast=catchments_23218.0 --quiet
  • g.remove MASK --quiet
  • [ 0 -eq 1 ]
  • rm -f /home/tgumede1/grassdata/Cape_Town/Original/SRTMDEM/PERMANENT/.tmp/tgumede1-desktop/23218.0 23218.0 /home/tgumede1/grassdata/Cape_Town/Original/SRTMDEM/PERMANENT/.tmp/tgumede1-desktop/23218.0.cats /home/tgumede1/grassdata/Cape_Town/Original/SRTMDEM/PERMANENT/.tmp/tgumede1-desktop/23218.0.sql
  • [ 1 -eq 0 ]
  • exit 1

On Fri, Jul 16, 2010 at 10:12 PM, Markus Neteler <neteler@osgeo.org> wrote:

On Thu, Jul 15, 2010 at 1:10 PM, Sandile Gumede <akasandile@gmail.com> wrote:

I’m using GTOPO30 DEM data and TRMM (rainfall) data, I selected the data
for the whole of africa but I’m getting an error when executing
v.rast.stats.

v.rast.stats vector=catchments raster=rainfall colprefix=precip
WARNING: Area without centroid (may be OK for island)
WARNING: Area without centroid (may be OK for island)
WARNING: Area without centroid (may be OK for island)
DBMI-DBF driver error:
SQL parser error: syntax error, unexpected NULL_VALUE processing ‘NULL’
in statement:
UPDATE catchments SET precip_cf_=-NULL WHERE cat=17
Error in db_execute_immediate()

ERROR: Error while executing: ‘UPDATE catchments SET precip_cf_=-NULL
WHERE
cat=17’

There is a minus sign in front of NULL - never seen that and likely not
SQL compliant (at least for the DBF driver which is just an enhanced table
driver).

Maybe it comes from here?

[neteler@localhost v.rast.stats]$ grep NULL *
v.rast.stats: eval r.univar -g $EXTSTAT map="$RASTER" percentile="$GIS_OPT_PERCENTILE" | sed 's+nan+NULL+g'

but AFAIK r.univar would not output -nan.

Please edit your v.rast.stats script (“which v.rast.stats”) to find
the path if on Unix-like OS)
and change the first line from

#!/bin/sh

to

#!/bin/sh -x

and run it again. From the detailed output you may see where this spurious “-”
comes in and tell us about it.

Markus


Kind Regards
TS Gumede
CSIR, Meraka Institute
072 258 1650

Hi Markus

Here is the output:

  • v.db.connect map=catchments -g fs=;
  • grep -w 1
  • TABLE=catchments
  • [ -z catchments ]
  • BASECOLS=n min max range mean stddev variance cf_var sum
  • [ 0 -eq 1 ]
  • EXTRACOLS=
  • unset ADDCOLS
  • [ 1 -eq 1 ]
  • echo prec_n
  • cut -b1-10
  • CURRCOLUMN=prec_n
  • sed s+$+|+g
  • v.info -c catchments --quiet
  • grep |prec_n| --quiet
  • sed s+^+|+g
  • [ 1 -eq 0 ]
  • [ -n ]
  • [ n = n ]
  • COLTYPE=INTEGER
  • ADDCOLS= prec_n INTEGER
  • [ 1 -eq 1 ]
  • echo prec_min
  • cut -b1-10
  • CURRCOLUMN=prec_min
  • sed s+$+|+g
  • v.info -c catchments --quiet
  • grep |prec_min| --quiet
  • sed s+^+|+g
  • [ 1 -eq 0 ]
  • [ -n prec_n INTEGER ]
  • ADDCOLS= prec_n INTEGER,
  • [ min = n ]
  • COLTYPE=DOUBLE PRECISION
  • ADDCOLS= prec_n INTEGER, prec_min DOUBLE PRECISION
  • [ 1 -eq 1 ]
  • echo prec_max
  • cut -b1-10
  • CURRCOLUMN=prec_max
  • grep |prec_max| --quiet
  • sed s+$+|+g
  • v.info -c catchments --quiet
  • sed s+^+|+g
  • [ 1 -eq 0 ]
  • [ -n prec_n INTEGER, prec_min DOUBLE PRECISION ]
  • ADDCOLS= prec_n INTEGER, prec_min DOUBLE PRECISION,
  • [ max = n ]
  • COLTYPE=DOUBLE PRECISION
  • ADDCOLS= prec_n INTEGER, prec_min DOUBLE PRECISION, prec_max DOUBLE PRECISION
  • [ 1 -eq 1 ]
  • echo prec_range
  • cut -b1-10
  • CURRCOLUMN=prec_range
  • sed s+$+|+g
  • v.info -c catchments --quiet
  • grep |prec_range| --quiet
  • sed s+^+|+g
  • [ 1 -eq 0 ]
  • [ -n prec_n INTEGER, prec_min DOUBLE PRECISION, prec_max DOUBLE PRECISION ]
  • ADDCOLS= prec_n INTEGER, prec_min DOUBLE PRECISION, prec_max DOUBLE PRECISION,
  • [ range = n ]
  • COLTYPE=DOUBLE PRECISION
  • ADDCOLS= prec_n INTEGER, prec_min DOUBLE PRECISION, prec_max DOUBLE PRECISION, prec_range DOUBLE PRECISION
  • [ 1 -eq 1 ]
  • cut -b1-10
  • echo prec_mean
  • CURRCOLUMN=prec_mean
  • sed s+$+|+g
  • v.info -c catchments --quiet
  • grep |prec_mean| --quiet
  • sed s+^+|+g
  • [ 1 -eq 0 ]
  • [ -n prec_n INTEGER, prec_min DOUBLE PRECISION, prec_max DOUBLE PRECISION, prec_range DOUBLE PRECISION ]
  • ADDCOLS= prec_n INTEGER, prec_min DOUBLE PRECISION, prec_max DOUBLE PRECISION, prec_range DOUBLE PRECISION,
  • [ mean = n ]
  • COLTYPE=DOUBLE PRECISION
  • ADDCOLS= prec_n INTEGER, prec_min DOUBLE PRECISION, prec_max DOUBLE PRECISION, prec_range DOUBLE PRECISION, prec_mean DOUBLE PRECISION
  • [ 1 -eq 1 ]
  • echo prec_stddev
  • cut -b1-10
  • CURRCOLUMN=prec_stdde
  • sed s+$+|+g
  • v.info -c catchments --quiet
  • grep |prec_stdde| --quiet
  • sed s+^+|+g
  • [ 1 -eq 0 ]
  • [ -n prec_n INTEGER, prec_min DOUBLE PRECISION, prec_max DOUBLE PRECISION, prec_range DOUBLE PRECISION, prec_mean DOUBLE PRECISION ]
  • ADDCOLS= prec_n INTEGER, prec_min DOUBLE PRECISION, prec_max DOUBLE PRECISION, prec_range DOUBLE PRECISION, prec_mean DOUBLE PRECISION,
  • [ stddev = n ]
  • COLTYPE=DOUBLE PRECISION
  • ADDCOLS= prec_n INTEGER, prec_min DOUBLE PRECISION, prec_max DOUBLE PRECISION, prec_range DOUBLE PRECISION, prec_mean DOUBLE PRECISION, prec_stdde DOUBLE PRECISION
  • [ 1 -eq 1 ]
  • echo prec_variance
  • cut -b1-10
  • CURRCOLUMN=prec_varia
  • sed s+$+|+g
  • grep |prec_varia| --quiet
  • v.info -c catchments --quiet
  • sed s+^+|+g
  • [ 1 -eq 0 ]
  • [ -n prec_n INTEGER, prec_min DOUBLE PRECISION, prec_max DOUBLE PRECISION, prec_range DOUBLE PRECISION, prec_mean DOUBLE PRECISION, prec_stdde DOUBLE PRECISION ]
  • ADDCOLS= prec_n INTEGER, prec_min DOUBLE PRECISION, prec_max DOUBLE PRECISION, prec_range DOUBLE PRECISION, prec_mean DOUBLE PRECISION, prec_stdde DOUBLE PRECISION,
  • [ variance = n ]
  • COLTYPE=DOUBLE PRECISION
  • ADDCOLS= prec_n INTEGER, prec_min DOUBLE PRECISION, prec_max DOUBLE PRECISION, prec_range DOUBLE PRECISION, prec_mean DOUBLE PRECISION, prec_stdde DOUBLE PRECISION, prec_varia DOUBLE PRECISION
  • [ 1 -eq 1 ]
  • echo prec_cf_var
  • cut -b1-10
  • CURRCOLUMN=prec_cf_va
  • sed s+$+|+g
  • v.info -c catchments --quiet
  • grep |prec_cf_va| --quiet
  • sed s+^+|+g
  • [ 1 -eq 0 ]
  • [ -n prec_n INTEGER, prec_min DOUBLE PRECISION, prec_max DOUBLE PRECISION, prec_range DOUBLE PRECISION, prec_mean DOUBLE PRECISION, prec_stdde DOUBLE PRECISION, prec_varia DOUBLE PRECISION ]
  • ADDCOLS= prec_n INTEGER, prec_min DOUBLE PRECISION, prec_max DOUBLE PRECISION, prec_range DOUBLE PRECISION, prec_mean DOUBLE PRECISION, prec_stdde DOUBLE PRECISION, prec_varia DOUBLE PRECISION,
  • [ cf_var = n ]
  • COLTYPE=DOUBLE PRECISION
  • ADDCOLS= prec_n INTEGER, prec_min DOUBLE PRECISION, prec_max DOUBLE PRECISION, prec_range DOUBLE PRECISION, prec_mean DOUBLE PRECISION, prec_stdde DOUBLE PRECISION, prec_varia DOUBLE PRECISION, prec_cf_va DOUBLE PRECISION
  • [ 1 -eq 1 ]
  • echo prec_sum
  • cut -b1-10
  • CURRCOLUMN=prec_sum
  • grep |prec_sum| --quiet
  • sed s+^+|+g
  • v.info -c catchments --quiet
  • sed s+$+|+g
  • [ 1 -eq 0 ]
  • [ -n prec_n INTEGER, prec_min DOUBLE PRECISION, prec_max DOUBLE PRECISION, prec_range DOUBLE PRECISION, prec_mean DOUBLE PRECISION, prec_stdde DOUBLE PRECISION, prec_varia DOUBLE PRECISION, prec_cf_va DOUBLE PRECISION ]
  • ADDCOLS= prec_n INTEGER, prec_min DOUBLE PRECISION, prec_max DOUBLE PRECISION, prec_range DOUBLE PRECISION, prec_mean DOUBLE PRECISION, prec_stdde DOUBLE PRECISION, prec_varia DOUBLE PRECISION, prec_cf_va DOUBLE PRECISION,
  • [ sum = n ]
  • COLTYPE=DOUBLE PRECISION
  • ADDCOLS= prec_n INTEGER, prec_min DOUBLE PRECISION, prec_max DOUBLE PRECISION, prec_range DOUBLE PRECISION, prec_mean DOUBLE PRECISION, prec_stdde DOUBLE PRECISION, prec_varia DOUBLE PRECISION, prec_cf_va DOUBLE PRECISION, prec_sum DOUBLE PRECISION
  • g.message -v Adding columns < prec_n INTEGER, prec_min DOUBLE PRECISION, prec_max DOUBLE PRECISION, prec_range DOUBLE PRECISION, prec_mean DOUBLE PRECISION, prec_stdde DOUBLE PRECISION, prec_varia DOUBLE PRECISION, prec_cf_va DOUBLE PRECISION, prec_sum DOUBLE PRECISION>
  • v.db.addcol map=catchments columns= prec_n INTEGER, prec_min DOUBLE PRECISION, prec_max DOUBLE PRECISION, prec_range DOUBLE PRECISION, prec_mean DOUBLE PRECISION, prec_stdde DOUBLE PRECISION, prec_varia DOUBLE PRECISION, prec_cf_va DOUBLE PRECISION, prec_sum DOUBLE PRECISION
  • [ 0 -ne 0 ]
  • g.message -v Processing data …
  • CURRNUM=1
  • rm -f /home/tgumede1/grassdata/Cape_
    Town/Original/SRTMDEM/PERMANENT/.tmp/tgumede1-desktop/23218.0.sql
  • [ 0 -eq 1 ]
  • EXTSTAT=
  • cat /home/tgumede1/grassdata/Cape_Town/Original/SRTMDEM/PERMANENT/.tmp/tgumede1-desktop/23218.0.cats
  • g.message -v message=Processing category 262 (1/4)
  • g.remove MASK --quiet
  • GRASS_VERBOSE=0 r.mapcalc MASK=if(catchments_23218.0 == 262, 1, null())
  • unset n min max range mean stddev variance cf_var sum
  • r.univar -g map=trmm percentile=90
  • sed s+nan+NULL+g
  • eval n=0 null_cells=12 min=-NULL max=-NULL range=-NULL mean=-NULL mean_of_abs=-NULL stddev=-NULL variance=-NULL coeff_var=-NULL sum=0
  • n=0 null_cells=12 min=-NULL max=-NULL range=-NULL mean=-NULL mean_of_abs=-NULL stddev=-NULL variance=-NULL coeff_var=-NULL sum=0
  • cf_var=-NULL
  • [ 0 -eq 1 ]
  • eval value=${n}
  • value=0
  • [ 1 -eq 1 ]
  • echo prec_n
  • cut -b1-10
  • colname=prec_n
  • echo UPDATE catchments SET prec_n=0 WHERE cat=262;
  • eval value=${min}
  • value=-NULL
  • [ 1 -eq 1 ]
  • echo prec_min
  • cut -b1-10
  • colname=prec_min
  • echo UPDATE catchments SET prec_min=-NULL WHERE cat=262;
  • eval value=${max}
  • value=-NULL
  • [ 1 -eq 1 ]
  • echo prec_max
  • cut -b1-10
  • colname=prec_max
  • echo UPDATE catchments SET prec_max=-NULL WHERE cat=262;
  • eval value=${range}
  • value=-NULL
  • [ 1 -eq 1 ]
  • echo prec_range
  • cut -b1-10
  • colname=prec_range
  • echo UPDATE catchments SET prec_range=-NULL WHERE cat=262;
  • eval value=${mean}
  • value=-NULL
  • [ 1 -eq 1 ]
  • cut -b1-10
  • echo prec_mean
  • colname=prec_mean
  • echo UPDATE catchments SET prec_mean=-NULL WHERE cat=262;
  • eval value=${stddev}
  • value=-NULL
  • [ 1 -eq 1 ]
  • cut -b1-10
  • echo prec_stddev
  • colname=prec_stdde
  • echo UPDATE catchments SET prec_stdde=-NULL WHERE cat=262;
  • eval value=${variance}
  • value=-NULL
  • [ 1 -eq 1 ]
  • cut -b1-10
  • echo prec_variance
  • colname=prec_varia
  • echo UPDATE catchments SET prec_varia=-NULL WHERE cat=262;
  • eval value=${cf_var}
  • value=-NULL
  • [ 1 -eq 1 ]
  • cut -b1-10
  • echo prec_cf_var
  • colname=prec_cf_va
  • echo UPDATE catchments SET prec_cf_va=-NULL WHERE cat=262;
  • eval value=${sum}
  • value=0
  • [ 1 -eq 1 ]
  • cut -b1-10
  • echo prec_sum
  • colname=prec_sum
  • echo UPDATE catchments SET prec_sum=0 WHERE cat=262;
  • expr 1 + 1
  • CURRNUM=2
  • g.message -v message=Processing category 549 (2/4)
  • g.remove MASK --quiet
  • GRASS_VERBOSE=0 r.mapcalc MASK=if(catchments_23218.0 == 549, 1, null())
  • unset n min max range mean stddev variance cf_var sum
  • r.univar -g map=trmm percentile=90
  • sed s+nan+NULL+g
  • eval n=0 null_cells=12 min=-NULL max=-NULL range=-NULL mean=-NULL mean_of_abs=-NULL stddev=-NULL variance=-NULL coeff_var=-NULL sum=0
  • n=0 null_cells=12 min=-NULL max=-NULL range=-NULL mean=-NULL mean_of_abs=-NULL stddev=-NULL variance=-NULL coeff_var=-NULL sum=0
  • cf_var=-NULL
  • [ 0 -eq 1 ]
  • eval value=${n}
  • value=0
  • [ 1 -eq 1 ]
  • echo prec_n
  • cut -b1-10
  • colname=prec_n
  • echo UPDATE catchments SET prec_n=0 WHERE cat=549;
  • eval value=${min}
  • value=-NULL
  • [ 1 -eq 1 ]
  • echo prec_min
  • cut -b1-10
  • colname=prec_min
  • echo UPDATE catchments SET prec_min=-NULL WHERE cat=549;
  • eval value=${max}
  • value=-NULL
  • [ 1 -eq 1 ]
  • echo prec_max
  • cut -b1-10
  • colname=prec_max
  • echo UPDATE catchments SET prec_max=-NULL WHERE cat=549;
  • eval value=${range}
  • value=-NULL
  • [ 1 -eq 1 ]
  • cut -b1-10
  • echo prec_range
  • colname=prec_range
  • echo UPDATE catchments SET prec_range=-NULL WHERE cat=549;
  • eval value=${mean}
  • value=-NULL
  • [ 1 -eq 1 ]
  • echo prec_mean
  • cut -b1-10
  • colname=prec_mean
  • echo UPDATE catchments SET prec_mean=-NULL WHERE cat=549;
  • eval value=${stddev}
  • value=-NULL
  • [ 1 -eq 1 ]
  • echo prec_stddev
  • cut -b1-10
  • colname=prec_stdde
  • echo UPDATE catchments SET prec_stdde=-NULL WHERE cat=549;
  • eval value=${variance}
  • value=-NULL
  • [ 1 -eq 1 ]
  • echo prec_variance
  • cut -b1-10
  • colname=prec_varia
  • echo UPDATE catchments SET prec_varia=-NULL WHERE cat=549;
  • eval value=${cf_var}
  • value=-NULL
  • [ 1 -eq 1 ]
  • echo prec_cf_var
  • cut -b1-10
  • colname=prec_cf_va
  • echo UPDATE catchments SET prec_cf_va=-NULL WHERE cat=549;
  • eval value=${sum}
  • value=0
  • [ 1 -eq 1 ]
  • echo prec_sum
  • cut -b1-10
  • colname=prec_sum
  • echo UPDATE catchments SET prec_sum=0 WHERE cat=549;
  • expr 2 + 1
  • CURRNUM=3
  • g.message -v message=Processing category 724 (3/4)
  • g.remove MASK --quiet
  • GRASS_VERBOSE=0 r.mapcalc MASK=if(catchments_23218.0 == 724, 1, null())
  • unset n min max range mean stddev variance cf_var sum
  • r.univar -g map=trmm percentile=90
  • sed s+nan+NULL+g
  • eval n=0 null_cells=12 min=-NULL max=-NULL range=-NULL mean=-NULL mean_of_abs=-NULL stddev=-NULL variance=-NULL coeff_var=-NULL sum=0
  • n=0 null_cells=12 min=-NULL max=-NULL range=-NULL mean=-NULL mean_of_abs=-NULL stddev=-NULL variance=-NULL coeff_var=-NULL sum=0
  • cf_var=-NULL
  • [ 0 -eq 1 ]
  • eval value=${n}
  • value=0
  • [ 1 -eq 1 ]
  • cut -b1-10
  • echo prec_n
  • colname=prec_n
  • echo UPDATE catchments SET prec_n=0 WHERE cat=724;
  • eval value=${min}
  • value=-NULL
  • [ 1 -eq 1 ]
  • echo prec_min
  • cut -b1-10
  • colname=prec_min
  • echo UPDATE catchments SET prec_min=-NULL WHERE cat=724;
  • eval value=${max}
  • value=-NULL
  • [ 1 -eq 1 ]
  • echo prec_max
  • cut -b1-10
  • colname=prec_max
  • echo UPDATE catchments SET prec_max=-NULL WHERE cat=724;
  • eval value=${range}
  • value=-NULL
  • [ 1 -eq 1 ]
  • echo prec_range
  • cut -b1-10
  • colname=prec_range
  • echo UPDATE catchments SET prec_range=-NULL WHERE cat=724;
  • eval value=${mean}
  • value=-NULL
  • [ 1 -eq 1 ]
  • echo prec_mean
  • cut -b1-10
  • colname=prec_mean
  • echo UPDATE catchments SET prec_mean=-NULL WHERE cat=724;
  • eval value=${stddev}
  • value=-NULL
  • [ 1 -eq 1 ]
  • echo prec_stddev
  • cut -b1-10
  • colname=prec_stdde
  • echo UPDATE catchments SET prec_stdde=-NULL WHERE cat=724;
  • eval value=${variance}
  • value=-NULL
  • [ 1 -eq 1 ]
  • echo prec_variance
  • cut -b1-10
  • colname=prec_varia
  • echo UPDATE catchments SET prec_varia=-NULL WHERE cat=724;
  • eval value=${cf_var}
  • value=-NULL
  • [ 1 -eq 1 ]
  • echo prec_cf_var
  • cut -b1-10
  • colname=prec_cf_va
  • echo UPDATE catchments SET prec_cf_va=-NULL WHERE cat=724;
  • eval value=${sum}
  • value=0
  • [ 1 -eq 1 ]
  • echo prec_sum
  • cut -b1-10
  • colname=prec_sum
  • echo UPDATE catchments SET prec_sum=0 WHERE cat=724;
  • expr 3 + 1
  • CURRNUM=4
  • g.message -v message=Processing category 733 (4/4)
  • g.remove MASK --quiet
  • GRASS_VERBOSE=0 r.mapcalc MASK=if(catchments_23218.0 == 733, 1, null())
  • unset n min max range mean stddev variance cf_var sum
  • r.univar -g map=trmm percentile=90
  • sed s+nan+NULL+g
  • eval n=0 null_cells=12 min=-NULL max=-NULL range=-NULL mean=-NULL mean_of_abs=-NULL stddev=-NULL variance=-NULL coeff_var=-NULL sum=0
  • n=0 null_cells=12 min=-NULL max=-NULL range=-NULL mean=-NULL mean_of_abs=-NULL stddev=-NULL variance=-NULL coeff_var=-NULL sum=0
  • cf_var=-NULL
  • [ 0 -eq 1 ]
  • eval value=${n}
  • value=0
  • [ 1 -eq 1 ]
  • echo prec_n
  • cut -b1-10
  • colname=prec_n
  • echo UPDATE catchments SET prec_n=0 WHERE cat=733;
  • eval value=${min}
  • value=-NULL
  • [ 1 -eq 1 ]
  • echo prec_min
  • cut -b1-10
  • colname=prec_min
  • echo UPDATE catchments SET prec_min=-NULL WHERE cat=733;
  • eval value=${max}
  • value=-NULL
  • [ 1 -eq 1 ]
  • echo prec_max
  • cut -b1-10
  • colname=prec_max
  • echo UPDATE catchments SET prec_max=-NULL WHERE cat=733;
  • eval value=${range}
  • value=-NULL
  • [ 1 -eq 1 ]
  • echo prec_range
  • cut -b1-10
  • colname=prec_range
  • echo UPDATE catchments SET prec_range=-NULL WHERE cat=733;
  • eval value=${mean}
  • value=-NULL
  • [ 1 -eq 1 ]
  • echo prec_mean
  • cut -b1-10
  • colname=prec_mean
  • echo UPDATE catchments SET prec_mean=-NULL WHERE cat=733;
  • eval value=${stddev}
  • value=-NULL
  • [ 1 -eq 1 ]
  • echo prec_stddev
  • cut -b1-10
  • colname=prec_stdde
  • echo UPDATE catchments SET prec_stdde=-NULL WHERE cat=733;
  • eval value=${variance}
  • value=-NULL
  • [ 1 -eq 1 ]
  • echo prec_variance
  • cut -b1-10
  • colname=prec_varia
  • echo UPDATE catchments SET prec_varia=-NULL WHERE cat=733;
  • eval value=${cf_var}
  • value=-NULL
  • [ 1 -eq 1 ]
  • echo prec_cf_var
  • cut -b1-10
  • colname=prec_cf_va
  • echo UPDATE catchments SET prec_cf_va=-NULL WHERE cat=733;
  • eval value=${sum}
  • value=0
  • [ 1 -eq 1 ]
  • echo prec_sum
  • cut -b1-10
  • colname=prec_sum
  • echo UPDATE catchments SET prec_sum=0 WHERE cat=733;
  • expr 4 + 1
  • CURRNUM=5
  • g.message -v Updating the database …
  • db.execute input=/home/tgumede1/grassdata/Cape_Town/Original/SRTMDEM/PERMANENT/.tmp/tgumede1-desktop/23218.0.sql database=/home/tgumede1/grassdata/Cape_Town/Original/SRTMDEM/PERMANENT/dbf/ driver=dbf

DBMI-DBF driver error:
SQL parser error: syntax error, unexpected NULL_VALUE processing ‘NULL’
in statement:

UPDATE catchments SET prec_min=-NULL WHERE cat=262
Error in db_execute_immediate()

ERROR: Error while executing: ‘UPDATE catchments SET prec_min=-NULL WHERE
cat=262’

  • EXITCODE=1
  • g.remove MASK --quiet
  • cleanup
  • g.region region=23218.0
  • g.remove region=23218.0 --quiet
  • g.remove rast=catchments_23218.0 --quiet
  • g.remove MASK --quiet
  • [ 0 -eq 1 ]
  • rm -f /home/tgumede1/grassdata/Cape_Town/Original/SRTMDEM/PERMANENT/.tmp/tgumede1-desktop/23218.0 23218.0 /home/tgumede1/grassdata/Cape_Town/Original/SRTMDEM/PERMANENT/.tmp/tgumede1-desktop/23218.0.cats /home/tgumede1/grassdata/Cape_Town/Original/SRTMDEM/PERMANENT/.tmp/tgumede1-desktop/23218.0.sql
  • [ 1 -eq 0 ]
  • exit 1

On Fri, Jul 16, 2010 at 10:12 PM, Markus Neteler <neteler@osgeo.org> wrote:

On Thu, Jul 15, 2010 at 1:10 PM, Sandile Gumede <akasandile@gmail.com> wrote:

I’m using GTOPO30 DEM data and TRMM (rainfall) data, I selected the data
for the whole of africa but I’m getting an error when executing
v.rast.stats.

v.rast.stats vector=catchments raster=rainfall colprefix=precip
WARNING: Area without centroid (may be OK for island)
WARNING: Area without centroid (may be OK for island)
WARNING: Area without centroid (may be OK for island)
DBMI-DBF driver error:
SQL parser error: syntax error, unexpected NULL_VALUE processing ‘NULL’
in statement:
UPDATE catchments SET precip_cf_=-NULL WHERE cat=17
Error in db_execute_immediate()

ERROR: Error while executing: ‘UPDATE catchments SET precip_cf_=-NULL
WHERE
cat=17’

There is a minus sign in front of NULL - never seen that and likely not
SQL compliant (at least for the DBF driver which is just an enhanced table
driver).

Maybe it comes from here?

[neteler@localhost v.rast.stats]$ grep NULL *
v.rast.stats: eval r.univar -g $EXTSTAT map="$RASTER" percentile="$GIS_OPT_PERCENTILE" | sed 's+nan+NULL+g'

but AFAIK r.univar would not output -nan.

Please edit your v.rast.stats script (“which v.rast.stats”) to find
the path if on Unix-like OS)
and change the first line from

#!/bin/sh

to

#!/bin/sh -x

and run it again. From the detailed output you may see where this spurious “-”
comes in and tell us about it.

Markus


Kind Regards
TS Gumede
CSIR, Meraka Institute
072 258 1650

Hi Sandile,

update for the list. From your prompt
GRASS 6.4.0RC5+39438 (SRTMDEM):~ >

I see that you installation is older than my version (6.4 from SVN)
where the problem
has already been solved.

I tried with Spearfish:

# go into no-data area of raster:
g.region n=4919210 s=4919070 w=589620 e=589830 nsres=10 ewres=10 -p
g.copy vect=fields,myfields
v.db.addcol myfields col="precip double precision"
v.rast.stats vector=myfields raster=elevation.10m colprefix=precip
... works ok in SVN.

Cheers
Markus

On Mon, Jul 19, 2010 at 8:53 AM, Sandile Gumede <akasandile@gmail.com> wrote:

Hi Markus

Here is the output:

...

+ g.message -v message=Processing category 262 (1/4)
+ g.remove MASK --quiet
+ GRASS_VERBOSE=0 r.mapcalc MASK=if(catchments_23218.0 == 262, 1, null())
+ unset n min max range mean stddev variance cf_var sum
+ r.univar -g map=trmm percentile=90
+ sed s+nan+NULL+g
+ eval n=0 null_cells=12 min=-NULL max=-NULL range=-NULL mean=-NULL
mean_of_abs=-NULL stddev=-NULL variance=-NULL coeff_var=-NULL sum=0
+ n=0 null_cells=12 min=-NULL max=-NULL range=-NULL mean=-NULL
mean_of_abs=-NULL stddev=-NULL variance=-NULL coeff_var=-NULL sum=0
+ cf_var=-NULL
+ [ 0 -eq 1 ]
+ eval value=${n}
+ value=0
+ [ 1 -eq 1 ]
+ echo prec_n

...

+ echo UPDATE catchments SET prec_sum=0 WHERE cat=733;
+ expr 4 + 1
+ CURRNUM=5
+ g.message -v Updating the database ...
+ db.execute
input=/home/tgumede1/grassdata/Cape_Town/Original/SRTMDEM/PERMANENT/.tmp/tgumede1-desktop/23218.0.sql
database=/home/tgumede1/grassdata/Cape_Town/Original/SRTMDEM/PERMANENT/dbf/
driver=dbf
DBMI-DBF driver error:
SQL parser error: syntax error, unexpected NULL_VALUE processing 'NULL'
in statement:
UPDATE catchments SET prec_min=-NULL WHERE cat=262
Error in db_execute_immediate()

ERROR: Error while executing: 'UPDATE catchments SET prec_min=-NULL WHERE
cat=262'

...