Revision 5482 org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.buffer/org.gvsig.raster.lib.buffer.impl/src/main/java/org/gvsig/raster/lib/buffer/impl/statistics/DefaultStatisticsBand.java

View differences:

DefaultStatisticsBand.java
5 5
import org.gvsig.raster.lib.buffer.api.statistics.StatisticsBand;
6 6
import org.gvsig.tools.task.SimpleTaskStatus;
7 7

  
8
/**
9
 * @author fdiaz
10
 *
11
 */
8 12
public class DefaultStatisticsBand implements StatisticsBand{
9 13

  
10 14
    Band band;
11 15

  
12
    long bandLength;
13
    double secondMax;
14 16
    boolean calculated;
15
    //TODO el resto de datos
16 17

  
18
    private double mean;
19
    private double max;
20
    private double secondMax;
21
    private double min;
22
    private double secondMin;
23
    private double variance;
24
    private HistogramBand histogramBand;
17 25

  
26

  
27
    /**
28
     * @param band
29
     */
18 30
    public DefaultStatisticsBand(Band band) {
19 31
        this.band=band;
20 32
        this.calculated=false;
......
28 40

  
29 41
    @Override
30 42
    public void calculate(double scale, SimpleTaskStatus status) {
43
        calculated = false;
31 44

  
45
        MeanOperation meanOperation = new MeanOperation();
46
        MaxOperation maxOperation = new MaxOperation();
47
        MinOperation minOperation = new MinOperation();
48
        SecondMaxOperation secondMaxOperation = new SecondMaxOperation();
49
        SecondMinOperation secondMinOperation = new SecondMinOperation();
50
        VarianceOperation varianceOperation = new VarianceOperation();
51
        //TODO: CovarianceOperation
32 52

  
53
        meanOperation.pre();
54
        maxOperation.pre();
55
        minOperation.pre();
56
        secondMaxOperation.pre();
57
        secondMinOperation.pre();
58
        varianceOperation.pre();
33 59

  
60
        for(int row=0; row<band.getRows(); row++){
61
            for(int column=0; column<band.getColumns(); column++){
62
                Object obj = band.get(row, column);
63
                if(obj instanceof Number){
64
                    double value = ((Number)obj).doubleValue();
65
                    meanOperation.addValue(value);
66
                    maxOperation.addValue(value);
67
                    minOperation.addValue(value);
68
                    secondMaxOperation.addValue(value);
69
                    secondMinOperation.addValue(value);
70
                    varianceOperation.addValue(value);
71
                }
72
            }
73
        }
74
        meanOperation.post();
75
        maxOperation.post();
76
        minOperation.post();
77
        secondMaxOperation.post();
78
        secondMinOperation.post();
79
        varianceOperation.post();
80

  
81
        this.mean = ((Number)meanOperation.getResult()).doubleValue();
82
        this.max = ((Number)maxOperation.getResult()).doubleValue();
83
        this.min = ((Number)minOperation.getResult()).doubleValue();
84
        this.secondMax = ((Number)secondMaxOperation.getResult()).doubleValue();
85
        this.secondMin = ((Number)secondMinOperation.getResult()).doubleValue();
86
        this.variance = ((Number)varianceOperation.getResult()).doubleValue();
87
        HistogramOperation histogramOperation = new HistogramOperation(this, this.band);
88
        histogramOperation.pre();
89
        for(int row=0; row<band.getRows(); row++){
90
            for(int column=0; column<band.getColumns(); column++){
91
                Object obj = band.get(row, column);
92
                if(obj instanceof Number){
93
                    double value = ((Number)obj).doubleValue();
94
                    histogramOperation.addValue(value);
95
                }
96
            }
97
        }
98
        histogramOperation.post();
99
        this.histogramBand = ((HistogramBand)histogramOperation.getResult());
100

  
34 101
        status.terminate();
35 102
        calculated=true;
36 103
    }
37 104

  
38 105
    @Override
106
    public int getDataType() {
107
        return this.band.getDataType();
108
    }
109

  
110
    @Override
39 111
    public long getBandLenght() {
40
        // TODO Auto-generated method stub
41
        return 0;
112
        return band.getRows()*band.getColumns();
42 113
    }
43 114

  
44 115
    @Override
45 116
    public double getSecondMax() {
46
        // TODO Auto-generated method stub
47
        return 0;
117
        //TODO ??? y si no est? calculado???
118
        return this.secondMax;
48 119
    }
49 120

  
50 121
    @Override
51 122
    public double getSecondMin() {
52
        // TODO Auto-generated method stub
53
        return 0;
123
        return this.secondMin;
54 124
    }
55 125

  
56 126
    @Override
57 127
    public double getMaximum() {
58
        // TODO Auto-generated method stub
59
        return 0;
128
        return this.max;
60 129
    }
61 130

  
62 131
    @Override
63
    public double getMinimun() {
64
        // TODO Auto-generated method stub
65
        return 0;
132
    public double getMinimum() {
133
        return this.min;
66 134
    }
67 135

  
68 136
    @Override
69 137
    public double getMean() {
70
        // TODO Auto-generated method stub
71
        return 0;
138
        return this.mean;
72 139
    }
73 140

  
74 141
    @Override
75 142
    public double getVariance() {
76
        // TODO Auto-generated method stub
77
        return 0;
143
        return this.variance;
78 144
    }
79 145

  
80 146
    @Override
......
95 161
        return 0;
96 162
    }
97 163

  
98
    @Override
99
    public long getNumberOfCells() {
100
        // TODO Auto-generated method stub
101
        return 0;
102
    }
164
//    @Override
165
//    public long getNumberOfCells() {
166
//        // TODO Auto-generated method stub
167
//        return 0;
168
//    }
103 169

  
104 170
    @Override
105
    public double[] getVarianceCovarianceMatrix() {
106
        // TODO Auto-generated method stub
107
        return null;
171
    public HistogramBand getHistogramBand() {
172
        return this.histogramBand;
108 173
    }
109 174

  
110 175

  
111
    @Override
112
    public HistogramBand getHistogramBand() {
113
        // TODO Auto-generated method stub
114
        return null;
115
    }
116 176

  
117 177
}

Also available in: Unified diff