Statistics
| Revision:

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

History | View | Annotate | Download (6.64 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 pixelToMapCoefX []= null;
15
        private double pixelToMapCoefY []= null;        
16
        private double mapToPixelCoefX[]=null;
17
        private double mapToPixelCoefY[]=null;
18
        private double xError [] = null;
19
        private double yError [] = null;
20
        private GeoPoint gpcs[]= null;
21
        private double rms[]=null;
22
        private double rmsXTotal=0;
23
        private double rmsYTotal=0;
24
        private double rmsTotal=0;
25
        private double xEvaluate[] = null;
26
        private double yEvaluate[] = null;
27
        private int polynomialorden= 0;
28
        private int exp [][]=null;
29

    
30
        public GeoTransformDataResult(){}
31
        
32
        
33
        /** @return lista de GeoPoint con que se efectuo la transformacion */        
34
        public GeoPoint[] getGpcs() {
35
                return gpcs;
36
        }
37
        
38
        /**Asignaci?n de la lista de puntos*/
39
        public void setGpcs(GeoPoint[] gpcs) {
40
                this.gpcs = gpcs;
41
        }
42
        
43
        /**
44
         * @retrun array con los coeficientes para la transformacion a coord mapas de 
45
         * unas coordenadas pixel. (para las x)
46
         * */
47
        public double[] getPixelToMapCoefX() {
48
                return pixelToMapCoefX;
49
        }
50
        
51
        /**
52
         * @param con los coeficientes para las x en transformacion a coordenadas mapa de unas 
53
         * coordenadas pixel. (para las x)
54
         * */
55
        public void setPixelToMapCoefX(double[] polxCoef) {
56
                this.pixelToMapCoefX = polxCoef;
57
        }
58
        
59
        /**
60
         * @retrun array con los coeficientes para la transformacion a coord mapas de 
61
         * unas coordenadas pixel. (para las y)
62
         * */
63
        public double[] getPixelToMapCoefY() {
64
                return pixelToMapCoefY;
65
        }
66
        
67
        /**
68
         * @param con los coeficientes para las x en transformacion a coordenadas mapa de unas 
69
         * coordenadas pixel. (para las y)
70
         * */
71
        public void setPixelToMapCoefY(double[] polyCoef) {
72
                this.pixelToMapCoefY = polyCoef;
73
        }
74
        
75
        
76
        /**
77
         * @retrun array con los coeficientes para la transformacion a coord pixel de 
78
         * unas coordenadas map. (para las x)
79
         * */
80
        public double[] getMapToPixelCoefX() {
81
                return mapToPixelCoefX;
82
        }
83

    
84

    
85
        /**
86
         * @param con los coeficientes para las x en transformacion a coordenadas mapa de unas 
87
         * coordenadas pixel. (para las x)
88
         * */
89
        public void setMapToPixelCoefX(double[] mapToPixelCoefX) {
90
                this.mapToPixelCoefX = mapToPixelCoefX;
91
        }
92

    
93

    
94
        /**
95
         * @retrun array con los coeficientes para la transformacion a coord pixel de 
96
         * unas coordenadas map. (para las y)
97
         * */
98
        public double[] getMapToPixelCoefY() {
99
                return mapToPixelCoefY;
100
        }
101

    
102

    
103
        /**
104
         * @retrun array con los coeficientes para la transformacion a coord pixel de 
105
         * unas coordenadas mapa. (para las y)
106
         * */
107
        public void setMapToPixelCoefY(double[] mapToPixelCoefY) {
108
                this.mapToPixelCoefY = mapToPixelCoefY;
109
        }
110
        
111
        
112
        /**
113
         * @return array con los rms para cada punto.
114
         * */
115
        public double[] getRms() {
116
                return rms;
117
        }
118
        
119
        /**
120
         * asignacion del vector con los rms para cada punto
121
         * */
122
        public void setRms(double[] rms) {
123
                this.rms = rms;
124
        }
125
        
126
        /**
127
         * @return array con los rms para cada punto
128
         * */
129
        public double getRmsTotal() {
130
                return rmsTotal;
131
        }
132
        
133
        
134
        public void setRmsTotal(double rmsTotal) {
135
                this.rmsTotal = rmsTotal;
136
        }
137
        
138
        
139
        /**
140
         * @return error total cometido para las x
141
         * */
142
        public double getRmsXTotal() {
143
                return rmsXTotal;
144
        }
145
        
146
        /**
147
         * return error total cometido para las x
148
         * */
149
        public void setRmsXTotal(double rmsXTotal) {
150
                this.rmsXTotal = rmsXTotal;
151
        }
152
        
153
        /**
154
         * error total cometido para las y
155
         * */
156
        public double getRmsYTotal() {
157
                return rmsYTotal;
158
        }
159
        
160
        /**
161
         * return error total cometido para las y
162
         * */
163
        public void setRmsYTotal(double rmsYTotal) {
164
                this.rmsYTotal = rmsYTotal;
165
        }
166
        
167
        /**
168
         * @array con los errores cometidos para cada x
169
         * */
170
        public double[] getXError() {
171
                return xError;
172
        }
173
        
174
        /**
175
         * @array con los errores cometidos para cada x
176
         * */
177
        public void setXError(double[] error) {
178
                xError = error;
179
        }
180
        
181
        
182
        /**
183
         *@return array con evaluacion de las coordenadas y de la lista de 
184
         *puntos de control. 
185
         * */
186
        public double[] getXEvaluate() {
187
                return xEvaluate;
188
        }
189
        
190

    
191
        /**
192
         * resultado de la evaluacion del polinomio en las coord x de la lista de 
193
         * los puntos de control
194
         * */
195
        public void setXEvaluate(double[] evaluate) {
196
                xEvaluate = evaluate;
197
        }
198
        
199
        /**
200
         * @array con los errores cometidos para cada y
201
         * */
202
        public double[] getYError() {
203
                return yError;
204
        }
205
        
206
        /**
207
         * array con los errores cometidos para cada x
208
         * */
209
        public void setYError(double[] error) {
210
                yError = error;
211
        }
212
        
213
        /**
214
         *@return array con evaluacion de las coordenadas y de la lista de 
215
         *puntos de control. 
216
         * */
217
        public double[] getYEvaluate() {
218
                return yEvaluate;
219
        }
220
        
221
        /**
222
         * resultado de la evaluacion del polinomio en las coord y de la lista de 
223
         * los puntos de control
224
         * */
225
        public void setYEvaluate(double[] evaluate) {
226
                yEvaluate = evaluate;
227
        }
228
        
229

    
230
        public int getPolynomialOrden() {
231
                return polynomialorden;
232
        }
233

    
234

    
235
        public void setPolynomialOrden(int polynomialorden) {
236
                this.polynomialorden = polynomialorden;
237
        }
238
        
239
        
240
        /**
241
         *  Funci?n que evalua el polinomio de transformaci?n para obtener las coordenadas
242
         *  reales de unas coordenadas pixeles que se pasan como parametros.
243
         * @param x coordenada x del punto
244
         * @param y coordenada y del punto
245
         * @return resultado de la evaluaci?n para x e y
246
         * */
247
        public double[] getCoordMap(double x, double y){
248
                setExpPolinomial();
249
                double eval[]= new double [2];        
250
                for(int i=0; i<pixelToMapCoefX.length;i++)
251
                {
252
                        eval[0]+=pixelToMapCoefX[i] * Math.pow(x, exp[i][0]) * Math.pow(y,exp[i][1]);
253
                        eval[1]+=pixelToMapCoefY[i] * Math.pow(x, exp[i][0]) * Math.pow(y, exp[i][0]);
254
                }        
255
                return eval;
256
        }
257

    
258
        
259
        /**
260
         *  Funci?n que evalua el polinomio de transformaci?n para obtener las coordenadas
261
         *  pixeles de unas coordenadas mapa en un proceso de transformacion.
262
         * @param x coordenada x del punto
263
         * @param y coordenada y del punto
264
         * @return resultado de la evaluaci?n para x e y
265
         * */
266
        public double[] getCoordPixel(double x, double y){
267
                setExpPolinomial();
268
                double eval[]= new double [2];        
269
                for(int i=0; i<pixelToMapCoefX.length;i++)
270
                {
271
                        eval[0]+=mapToPixelCoefX[i] * Math.pow(x, exp[i][0]) * Math.pow(y,exp[i][1]);
272
                        eval[1]+=mapToPixelCoefY[i] * Math.pow(x, exp[i][0]) * Math.pow(y, exp[i][0]);
273
                }        
274
                return eval;
275
        }
276

    
277
        
278
        private void setExpPolinomial(){
279
                if(exp==null)
280
                        {
281
                                int minGPC=(getPolynomialOrden()+1)*(getPolynomialOrden()+2)/2;
282
                                exp=new int[minGPC][2];
283
                                int k=-1;
284
                                for (int i=0; i<=getPolynomialOrden(); i++){
285
                                        for(int j=0; j<=i; j++){
286
                                                k++;
287
                                                exp[k][0]=i-j;
288
                                                exp[k][1]=j;
289
                                        }
290
                                }
291
                        }        
292
        }
293
        
294
        
295
}