GRASS Programmer's Manual  6.4.2(2012)
c_reclass.c
Go to the documentation of this file.
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 }
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines