GRASS Programmer's Manual
6.4.2(2012)
|
00001 #include <grass/cluster.h> 00002 00003 int I_cluster_reclass(struct Cluster *C, int minsize) 00004 { 00005 int band, c, hole, move, p; 00006 00007 for (c = 0; c < C->nclasses; c++) 00008 C->reclass[c] = c; 00009 00010 /* find first `empty' class */ 00011 for (hole = 0; hole < C->nclasses; hole++) 00012 if (C->count[hole] < minsize) 00013 break; 00014 00015 /* if none, just return */ 00016 if (hole >= C->nclasses) 00017 return 1; 00018 00019 for (move = hole; move < C->nclasses; move++) 00020 if (C->count[move] >= minsize) { 00021 C->reclass[move] = hole; 00022 C->count[hole] = C->count[move]; 00023 for (band = 0; band < C->nbands; band++) 00024 C->sum[band][hole] = C->sum[band][move]; 00025 hole++; 00026 } 00027 else 00028 C->reclass[move] = -1; /* eliminate this class */ 00029 00030 for (p = 0; p < C->npoints; p++) 00031 C->class[p] = C->reclass[C->class[p]]; 00032 C->nclasses = hole; 00033 00034 return 0; 00035 }