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 |
} |