Statistics
| Revision:

root / trunk / extensions / extGeoreferencing / src / org / gvsig / georeferencing / process / geotransform / GeoTransformDataResult.java @ 18530

History | View | Annotate | Download (4.6 KB)

1
package org.gvsig.georeferencing.process.geotransform;
2

    
3
import org.gvsig.raster.datastruct.GeoPoint;
4

    
5
/**
6
 *  Clase que representa el resultado de un GeoTransformProcess. Recoge todos los calculos realizados en
7
 *  un GeoTransformProcess y que la UI va a consumir.
8
 *  @author Alejandro Mu?oz Sanchez (alejandro.munoz@uclm.es)
9
 *         @version 20/1/2008
10
 **/
11

    
12
public class GeoTransformDataResult {
13
        
14
        private double polxCoef []= null;
15
        private double polyCoef []= null;
16
        private double xError [] = null;
17
        private double yError [] = null;
18
        private GeoPoint gpcs[]= null;
19
        private double rms[]=null;
20
        private double rmsXTotal=0;
21
        private double rmsYTotal=0;
22
        private double rmsTotal=0;
23
        private double xEvaluate[] = null;
24
        private double yEvaluate[] = null;
25
        private int polynomialorden= 0;
26
        private int exp [][]=null;
27

    
28
        public GeoTransformDataResult(){}
29
        
30
        
31
        /** @return lista de GeoPoint con que se efectuo la transformacion */        
32
        public GeoPoint[] getGpcs() {
33
                return gpcs;
34
        }
35
        
36
        /**Asignaci?n de la lista de puntos*/
37
        public void setGpcs(GeoPoint[] gpcs) {
38
                this.gpcs = gpcs;
39
        }
40
        
41
        /**
42
         * @retrun array con los coeficientes para las x.
43
         * */
44
        public double[] getPolxCoef() {
45
                return polxCoef;
46
        }
47
        
48
        /**
49
         * array con los coeficientes para las x.
50
         * */
51
        public void setPolxCoef(double[] polxCoef) {
52
                this.polxCoef = polxCoef;
53
        }
54
        
55
        /**
56
         * @retrun array con los coeficientes para las y.
57
         * */
58
        public double[] getPolyCoef() {
59
                return polyCoef;
60
        }
61
        
62
        /**
63
         * array con los coeficientes para las y.
64
         * */
65
        public void setPolyCoef(double[] polyCoef) {
66
                this.polyCoef = polyCoef;
67
        }
68
        
69
        /**
70
         * @return array con los rms para cada punto.
71
         * */
72
        public double[] getRms() {
73
                return rms;
74
        }
75
        
76
        /**
77
         * asignacion del vector con los rms para cada punto
78
         * */
79
        public void setRms(double[] rms) {
80
                this.rms = rms;
81
        }
82
        
83
        /**
84
         * @return array con los rms para cada punto
85
         * */
86
        public double getRmsTotal() {
87
                return rmsTotal;
88
        }
89
        
90
        
91
        public void setRmsTotal(double rmsTotal) {
92
                this.rmsTotal = rmsTotal;
93
        }
94
        
95
        
96
        /**
97
         * @return error total cometido para las x
98
         * */
99
        public double getRmsXTotal() {
100
                return rmsXTotal;
101
        }
102
        
103
        /**
104
         * return error total cometido para las x
105
         * */
106
        public void setRmsXTotal(double rmsXTotal) {
107
                this.rmsXTotal = rmsXTotal;
108
        }
109
        
110
        /**
111
         * error total cometido para las y
112
         * */
113
        public double getRmsYTotal() {
114
                return rmsYTotal;
115
        }
116
        
117
        /**
118
         * return error total cometido para las y
119
         * */
120
        public void setRmsYTotal(double rmsYTotal) {
121
                this.rmsYTotal = rmsYTotal;
122
        }
123
        
124
        /**
125
         * @array con los errores cometidos para cada x
126
         * */
127
        public double[] getXError() {
128
                return xError;
129
        }
130
        
131
        /**
132
         * @array con los errores cometidos para cada x
133
         * */
134
        public void setXError(double[] error) {
135
                xError = error;
136
        }
137
        
138
        
139
        /**
140
         *@return array con evaluacion de las coordenadas y de la lista de 
141
         *puntos de control. 
142
         * */
143
        public double[] getXEvaluate() {
144
                return xEvaluate;
145
        }
146
        
147

    
148
        /**
149
         * resultado de la evaluacion del polinomio en las coord x de la lista de 
150
         * los puntos de control
151
         * */
152
        public void setXEvaluate(double[] evaluate) {
153
                xEvaluate = evaluate;
154
        }
155
        
156
        /**
157
         * @array con los errores cometidos para cada y
158
         * */
159
        public double[] getYError() {
160
                return yError;
161
        }
162
        
163
        /**
164
         * array con los errores cometidos para cada x
165
         * */
166
        public void setYError(double[] error) {
167
                yError = error;
168
        }
169
        
170
        /**
171
         *@return array con evaluacion de las coordenadas y de la lista de 
172
         *puntos de control. 
173
         * */
174
        public double[] getYEvaluate() {
175
                return yEvaluate;
176
        }
177
        
178
        /**
179
         * resultado de la evaluacion del polinomio en las coord y de la lista de 
180
         * los puntos de control
181
         * */
182
        public void setYEvaluate(double[] evaluate) {
183
                yEvaluate = evaluate;
184
        }
185
        
186

    
187
        public int getPolynomialOrden() {
188
                return polynomialorden;
189
        }
190

    
191

    
192
        public void setPolynomialOrden(int polynomialorden) {
193
                this.polynomialorden = polynomialorden;
194
        }
195
        
196
        
197
        /**
198
         *  Funci?n que evalua el polinomio de transformaci?n para un punto especifico
199
         * @param x coordenada x del punto
200
         * @param y coordenada y del punto
201
         * @return resultado de la evaluaci?n para x e y
202
         * */
203
        public double[] evaluate(double x, double y){
204
                setExpPolinomial();
205
                double eval[]= new double [2];        
206
                for(int i=0; i<polxCoef.length;i++)
207
                {
208
                        eval[0]+=polxCoef[i] * Math.pow(x, exp[i][0]) * Math.pow(y,exp[i][1]);
209
                        eval[1]+=polyCoef[i] * Math.pow(x, exp[i][0]) * Math.pow(y, exp[i][0]);
210
                }        
211
                return eval;
212
        }
213

    
214

    
215
        private void setExpPolinomial(){
216
                if(exp==null)
217
                        {
218
                                int minGPC=(getPolynomialOrden()+1)*(getPolynomialOrden()+2)/2;
219
                                exp=new int[minGPC][2];
220
                                for(int k=0; k<minGPC;k++)
221
                                        for (int i=0; i<=minGPC; i++)
222
                                                for(int j=0; j<=i; j++){
223
                                                        exp[k][0]=i-j;
224
                                                        exp[k][1]=j;
225
                                                }
226
        
227
                        }        
228
        }
229
        
230
}