GRASS 8 Programmer's Manual
8.6.0dev(2026)-1d1e47ad9d
Loading...
Searching...
No Matches
cellstats_eq.c
Go to the documentation of this file.
1
#include <
grass/gis.h
>
2
#include <
grass/raster.h
>
3
4
int
Rast_cell_stats_histo_eq
(
struct
Cell_stats
*statf,
CELL
min1
,
5
CELL
max1
,
/* input range to be rescaled */
6
CELL
min2,
CELL
max2
,
/* output range */
7
int
zero
,
/* include zero if min1 <= 0 <= min2 ? */
8
void
(*func)(
CELL
,
CELL
,
CELL
))
9
{
10
long
count
, total;
11
CELL
prev = 0;
12
CELL
cat;
13
CELL
x
;
14
CELL
newcat
= 0;
15
int
first;
16
double
span
, sum;
17
double
range2
;
18
19
if
(
min1
>
max1
|| min2 >
max2
)
20
return
0;
21
22
total = 0;
23
Rast_rewind_cell_stats
(statf);
24
while
(
Rast_next_cell_stat
(&cat, &
count
, statf)) {
25
if
(cat <
min1
)
26
continue
;
27
if
(cat >
max1
)
28
break
;
29
if
(cat == 0 && !
zero
)
30
continue
;
31
32
total +=
count
;
33
}
34
if
(total <= 0)
35
return
0;
36
37
range2
=
max2
- min2 + 1;
38
span
= total /
range2
;
39
40
first = 1;
41
sum = 0;
42
43
Rast_rewind_cell_stats
(statf);
44
while
(
Rast_next_cell_stat
(&cat, &
count
, statf)) {
45
if
(cat <
min1
)
46
continue
;
47
if
(cat >
max1
)
48
break
;
49
if
(cat == 0 && !
zero
)
50
continue
;
51
52
x
= (sum + (
count
/ 2.0)) /
span
;
53
if
(
x
< 0)
54
x
= 0;
55
x
+= min2;
56
sum +=
count
;
57
58
if
(first) {
59
prev = cat;
60
newcat
=
x
;
61
first = 0;
62
}
63
else
if
(
newcat
!=
x
) {
64
func(prev, cat - 1,
newcat
);
65
newcat
=
x
;
66
prev = cat;
67
}
68
}
69
if
(!first) {
70
func(prev, cat,
newcat
);
71
if
(!
zero
&&
min1 <= 0 && max1 >
= 0)
72
func((
CELL
)0, (
CELL
)0, (
CELL
)0);
73
}
74
75
return
first == 0;
76
}
Rast_cell_stats_histo_eq
int Rast_cell_stats_histo_eq(struct Cell_stats *statf, CELL min1, CELL max1, CELL min2, CELL max2, int zero, void(*func)(CELL, CELL, CELL))
Definition
cellstats_eq.c:4
AMI_STREAM
Definition
ami_stream.h:153
Rast_rewind_cell_stats
int Rast_rewind_cell_stats(struct Cell_stats *)
Reset/rewind cell stats.
Definition
cell_stats.c:248
Rast_next_cell_stat
int Rast_next_cell_stat(CELL *, long *, struct Cell_stats *)
Retrieve sorted cell stats.
Definition
cell_stats.c:312
gis.h
CELL
int CELL
Definition
gis.h:634
max1
int max1(int, int)
Definition
minmax.c:30
min1
int min1(int, int)
Definition
minmax.c:17
count
int count
raster.h
Cell_stats
Definition
raster.h:181
x
#define x
lib
raster
cellstats_eq.c
Generated on Fri Apr 3 2026 06:59:55 for GRASS 8 Programmer's Manual by
1.9.8