Statistics
| Revision:

root / org.gvsig.toolbox / trunk / org.gvsig.toolbox / org.gvsig.toolbox.algorithm / src / main / java / es / unex / sextante / gridCategorical / fragstatsArea / ClassInfo.java @ 59

History | View | Annotate | Download (2.55 KB)

1 59 nbrodin
package es.unex.sextante.gridCategorical.fragstatsArea;
2
3
import es.unex.sextante.math.simpleStats.SimpleStats;
4
5
public class ClassInfo {
6
7
   private double            m_dArea               = 0;
8
   private int               m_iAreaInCells        = 0;
9
   private double            m_dPerimeter          = 0;
10
   private int               m_iPerimeterInCells   = 0;
11
   private double            m_dLargestPatchArea   = 0;
12
   private double            m_dTotalLandscapeArea = 0;
13
   private int               m_iPatches            = 0;
14
   private final SimpleStats m_Area;
15
   private final SimpleStats m_RadiusOfGyration;
16
17
18
   public ClassInfo() {
19
20
      m_Area = new SimpleStats();
21
      m_RadiusOfGyration = new SimpleStats();
22
23
   }
24
25
26
   public void setTotalLandscapeArea(final double dArea) {
27
28
      m_dTotalLandscapeArea = dArea;
29
30
   }
31
32
33
   public void add(final PatchInfo info) {
34
35
      m_iPatches++;
36
      m_dArea += info.getArea();
37
      m_iAreaInCells += info.getAreaInCells();
38
      m_dPerimeter += info.getPerimeter();
39
      m_iPerimeterInCells += info.getPerimeterInCells();
40
      m_dLargestPatchArea = Math.max(m_dLargestPatchArea, info.getArea());
41
      m_Area.addValue(info.getArea());
42
      m_RadiusOfGyration.addValue(info.getRadiusOfGyration());
43
44
   }
45
46
47
   public double getTotalArea() {
48
49
      return m_dArea;
50
51
   }
52
53
54
   public double getPercentageOfLandscape() {
55
56
      return m_dArea / m_dTotalLandscapeArea * 100;
57
58
   }
59
60
61
   public int getPatchesCount() {
62
63
      return m_iPatches;
64
65
   }
66
67
68
   public double getPatchDensity() {
69
70
      return m_iPatches * 10000. / m_dTotalLandscapeArea * 100;
71
72
   }
73
74
75
   public double getTotalEdge() {
76
77
      return m_dPerimeter;
78
79
   }
80
81
82
   public double getEdgeDensity() {
83
84
      return m_dPerimeter * 10000. / m_dTotalLandscapeArea;
85
86
   }
87
88
89
   public double getLandscapeShapeIndex() {
90
91
      int min;
92
      final int n = (int) Math.floor(Math.sqrt(m_dArea));
93
      final double m = m_dArea - n * n;
94
95
      if (m == 0) {
96
         min = 4 * n;
97
      }
98
      else if (m_dArea > n * (n + 1)) {
99
         min = 4 * n + 4;
100
      }
101
      else {
102
         min = 4 * n + 2;
103
      }
104
105
      return (double) m_iPerimeterInCells / (double) min;
106
   }
107
108
109
   public double getLargestPatchIndex() {
110
111
      return m_dLargestPatchArea / m_dTotalLandscapeArea * 100;
112
113
   }
114
115
116
   public SimpleStats getPatchAreaDistribution() {
117
118
      return m_Area;
119
120
   }
121
122
123
   public SimpleStats getRadiusOfGyrationDistribution() {
124
125
      return m_RadiusOfGyration;
126
127
   }
128
129
}