Revision 5550
trunk/extensions/extGeoreferencing/src/com/iver/cit/gvsig/fmap/layers/IGeoUi.java | ||
---|---|---|
43 | 43 |
public int getSelectedPoint(); |
44 | 44 |
public int getWidth(); |
45 | 45 |
public int getHeight(); |
46 |
|
|
46 | 47 |
/** |
47 |
* |
|
48 |
* Obtiene el viewPort inicial de la miniimagen de la izquierda. Esta es la que tiene |
|
49 |
* las coordenadas en pixeles. |
|
48 | 50 |
* @param vp |
49 | 51 |
* @param p |
50 | 52 |
* @param initVp |
53 |
* @param zoom |
|
51 | 54 |
* @return |
52 | 55 |
*/ |
53 |
public ViewPort getLeftInitViewport(ViewPort vp, Point2D center, ViewPort initVp); |
|
56 |
public ViewPort getLeftInitViewport(ViewPort vp, Point2D center, ViewPort initVp, double zoom);
|
|
54 | 57 |
|
55 | 58 |
/** |
56 | 59 |
* A partir de nuevas coordenadas actualiza la vista, minimagen, capa de puntos el |
trunk/extensions/extGeoreferencing/src/com/iver/cit/gvsig/fmap/layers/GeoPoint.java | ||
---|---|---|
37 | 37 |
public Point2D mapPoint = null; |
38 | 38 |
public ViewPort leftViewPort = null, rightViewPort = null; |
39 | 39 |
public Point2D leftCenterPoint = null, rightCenterPoint = null; |
40 |
public double zoomLeft = 1, zoomRight = 1; |
|
40 | 41 |
public boolean active = true; |
41 | 42 |
|
42 | 43 |
/** |
... | ... | |
100 | 101 |
System.out.println("Left Zoom Center: "+leftCenterPoint); |
101 | 102 |
System.out.println("Right Zoom Center: "+rightCenterPoint); |
102 | 103 |
System.out.println("Active: "+active); |
104 |
System.out.println("ZoomLeft: "+zoomLeft); |
|
105 |
System.out.println("ZoomRight: "+zoomRight); |
|
103 | 106 |
System.out.println("******End GeoPoint********"); |
104 | 107 |
} |
105 | 108 |
} |
trunk/extensions/extGeoreferencing/src/com/iver/cit/gvsig/fmap/layers/FLyrPoints.java | ||
---|---|---|
517 | 517 |
* Muestra en consola los puntos de la capa |
518 | 518 |
*/ |
519 | 519 |
public void showPoints(){ |
520 |
for(int i=0;i<pointList.size();i++){ |
|
521 |
if(((GeoPoint)pointList.get(i)).pixelPoint != null && ((GeoPoint)pointList.get(i)).mapPoint != null){ |
|
522 |
System.out.println("PUNTO "+i+": "); |
|
523 |
System.out.println("pix->"+((GeoPoint)pointList.get(i)).pixelPoint.getX()+" "+((GeoPoint)pointList.get(i)).pixelPoint.getY()); |
|
524 |
System.out.println("map->"+((GeoPoint)pointList.get(i)).mapPoint.getX()+" "+((GeoPoint)pointList.get(i)).mapPoint.getY()); |
|
525 |
System.out.println("extRight->"+((GeoPoint)pointList.get(i)).rightViewPort.getExtent()); |
|
526 |
System.out.println("extLeft->"+((GeoPoint)pointList.get(i)).leftViewPort.getExtent()); |
|
527 |
}else |
|
528 |
System.out.println("PUNTO "+i+": NULL"); |
|
529 |
} |
|
520 |
for(int i=0;i<pointList.size();i++) |
|
521 |
((GeoPoint)pointList.get(i)).show(); |
|
530 | 522 |
} |
531 | 523 |
|
532 | 524 |
/** |
... | ... | |
703 | 695 |
* @param p Punto asignado |
704 | 696 |
*/ |
705 | 697 |
public void setLeftCenterPoint(int pos, Point2D p){ |
706 |
getPoint(pos).leftCenterPoint = p; |
|
698 |
try{ |
|
699 |
getPoint(pos).leftCenterPoint = p; |
|
700 |
}catch(NullPointerException ex){ |
|
701 |
//Si getPoint devuelve null es que hemos intentado acceder a una posici?n que no |
|
702 |
//existe por lo que no asignamos ningun valor. |
|
703 |
} |
|
707 | 704 |
} |
708 | 705 |
|
709 | 706 |
/** |
... | ... | |
713 | 710 |
* @param p Punto asignado |
714 | 711 |
*/ |
715 | 712 |
public void setRightCenterPoint(int pos, Point2D p){ |
716 |
getPoint(pos).rightCenterPoint = p; |
|
713 |
try{ |
|
714 |
getPoint(pos).rightCenterPoint = p; |
|
715 |
}catch(NullPointerException ex){ |
|
716 |
//Si getPoint devuelve null es que hemos intentado acceder a una posici?n que no |
|
717 |
//existe por lo que no asignamos ningun valor. |
|
718 |
} |
|
717 | 719 |
} |
718 | 720 |
|
719 | 721 |
/** |
... | ... | |
723 | 725 |
* @param vp ViewPort asignado |
724 | 726 |
*/ |
725 | 727 |
public void setLeftViewPort(int pos, ViewPort vp){ |
726 |
getPoint(pos).leftViewPort = vp; |
|
728 |
try{ |
|
729 |
getPoint(pos).leftViewPort = vp; |
|
730 |
}catch(NullPointerException ex){ |
|
731 |
//Si getPoint devuelve null es que hemos intentado acceder a una posici?n que no |
|
732 |
//existe por lo que no asignamos ningun valor. |
|
733 |
} |
|
727 | 734 |
} |
728 | 735 |
|
729 | 736 |
/** |
737 |
* Asigna el zoom al punto de una posici?n. Este zoom es el que corresponde |
|
738 |
* a la miniimagen de la izquierda, es decir la que tiene las coordenadas en pixeles. |
|
739 |
* @param pos Posici?n del punto a asignar el zoom |
|
740 |
* @param zoom Zoom a asignar. |
|
741 |
*/ |
|
742 |
public void setZoomLeft(int pos, double zoom){ |
|
743 |
try{ |
|
744 |
getPoint(pos).zoomLeft = zoom; |
|
745 |
}catch(NullPointerException ex){ |
|
746 |
//Si getPoint devuelve null es que hemos intentado acceder a una posici?n que no |
|
747 |
//existe por lo que no asignamos ningun valor. |
|
748 |
} |
|
749 |
} |
|
750 |
|
|
751 |
/** |
|
752 |
* Asigna el zoom al punto de una posici?n. Este zoom es el que corresponde |
|
753 |
* a la miniimagen de la derecha, es decir la que tiene las coordenadas relativas |
|
754 |
* al mundo real. |
|
755 |
* @param pos Posici?n del punto a asignar el zoom |
|
756 |
* @param zoom Zoom a asignar. |
|
757 |
*/ |
|
758 |
public void setZoomRight(int pos, double zoom){ |
|
759 |
try{ |
|
760 |
getPoint(pos).zoomRight = zoom; |
|
761 |
}catch(NullPointerException ex){ |
|
762 |
//Si getPoint devuelve null es que hemos intentado acceder a una posici?n que no |
|
763 |
//existe por lo que no asignamos ningun valor. |
|
764 |
} |
|
765 |
} |
|
766 |
|
|
767 |
/** |
|
768 |
* Obtiene el zoom de un punto y posici?n. Este zoom es el que corresponde |
|
769 |
* a la miniimagen de la izquierda, es decir la que tiene las coordenadas en pixeles. |
|
770 |
* @param pos Posici?n del punto a asignar el zoom |
|
771 |
* @return Zoom a asignado. |
|
772 |
*/ |
|
773 |
public double getZoomLeft(int pos){ |
|
774 |
try{ |
|
775 |
return getPoint(pos).zoomLeft; |
|
776 |
}catch(NullPointerException ex){ |
|
777 |
//Si getPoint devuelve null es que hemos intentado acceder a una posici?n que no |
|
778 |
//existe por lo que devolvemos un zoom de 1.0. |
|
779 |
return 1.0; |
|
780 |
} |
|
781 |
} |
|
782 |
|
|
783 |
/** |
|
784 |
* Obtiene el zoom de un punto y posici?n. Este zoom es el que corresponde |
|
785 |
* a la miniimagen de la derecha, es decir la que tiene las coordenadas relativas |
|
786 |
* al mundo real. |
|
787 |
* @param pos Posici?n del punto a asignar el zoom |
|
788 |
* @return Zoom a asignado. |
|
789 |
*/ |
|
790 |
public double getZoomRight(int pos){ |
|
791 |
try{ |
|
792 |
return getPoint(pos).zoomRight; |
|
793 |
}catch(NullPointerException ex){ |
|
794 |
//Si getPoint devuelve null es que hemos intentado acceder a una posici?n que no |
|
795 |
//existe por lo que devolvemos un zoom de 1.0. |
|
796 |
return 1.0; |
|
797 |
} |
|
798 |
} |
|
799 |
|
|
800 |
/** |
|
730 | 801 |
* Devuelve el n?mero de puntos de la lista |
731 | 802 |
* @return entero que representa el n?mero de puntos |
732 | 803 |
*/ |
... | ... | |
802 | 873 |
*un punto |
803 | 874 |
*/ |
804 | 875 |
public void setMiniExtent(int nPoint, Point2D centerPoint, ViewPort vp, boolean isRight){ |
876 |
ViewPort viewPortBlock = new ViewPort(vp.getProjection()); |
|
877 |
viewPortBlock.setExtent(vp.getExtent()); |
|
878 |
viewPortBlock.setImageSize(vp.getImageSize()); |
|
879 |
viewPortBlock.setScale(); |
|
880 |
|
|
805 | 881 |
if(isRight){ |
806 |
((GeoPoint)pointList.get(nPoint)).rightCenterPoint = centerPoint;
|
|
807 |
((GeoPoint)pointList.get(nPoint)).rightViewPort = vp;
|
|
882 |
((GeoPoint)pointList.get(nPoint)).rightCenterPoint = (Point2D)centerPoint.clone();
|
|
883 |
((GeoPoint)pointList.get(nPoint)).rightViewPort = viewPortBlock;
|
|
808 | 884 |
}else{ |
809 |
((GeoPoint)pointList.get(nPoint)).leftCenterPoint = centerPoint; |
|
810 |
((GeoPoint)pointList.get(nPoint)).leftViewPort = vp;
|
|
885 |
((GeoPoint)pointList.get(nPoint)).leftCenterPoint = (Point2D)centerPoint;
|
|
886 |
((GeoPoint)pointList.get(nPoint)).leftViewPort = viewPortBlock;
|
|
811 | 887 |
} |
812 | 888 |
} |
813 | 889 |
|
... | ... | |
821 | 897 |
return ((GeoPoint)pointList.get(nPoint)).rightViewPort; |
822 | 898 |
else |
823 | 899 |
return ((GeoPoint)pointList.get(nPoint)).leftViewPort; |
824 |
|
|
825 | 900 |
} |
826 | 901 |
|
827 | 902 |
/** |
trunk/extensions/extGeoreferencing/src/com/iver/cit/gvsig/fmap/tools/Behavior/GeoRedimBehavior.java | ||
---|---|---|
218 | 218 |
double maxX = lyrGeoRaster.getAssignExtent().getMax().getX(); |
219 | 219 |
double maxY = lyrGeoRaster.getAssignExtent().getMax().getY(); |
220 | 220 |
|
221 |
|
|
222 | 221 |
if(iconActive[0]){//Estirar en horizontal activado |
223 | 222 |
if(wcX > (maxX - WIDTH_BORDER) && wcX < maxX) |
224 | 223 |
redimActive[0] = true; |
... | ... | |
236 | 235 |
pointInit = e.getPoint(); |
237 | 236 |
rectInit = new Rectangle2D.Double(tmpUl.getX(), tmpUl.getY(), tmpLr.getX() - tmpUl.getX(), tmpLr.getY() - tmpUl.getY()); |
238 | 237 |
} |
239 |
|
|
240 | 238 |
} |
241 | 239 |
|
242 |
if (listener.cancelDrawing()) {
|
|
240 |
if (listener.cancelDrawing()) |
|
243 | 241 |
getMapControl().cancelDrawing(); |
244 |
} |
|
245 |
|
|
246 |
//getMapControl().repaint(); |
|
247 |
//getMapControl().drawMap(true); |
|
248 | 242 |
} |
249 | 243 |
|
250 | 244 |
/** |
... | ... | |
278 | 272 |
//Si la capa tiene puntos de control hacemos un update de estos |
279 | 273 |
//a su posici?n para que se actualicen los controles |
280 | 274 |
for(int i=0; i<lyrGeoRaster.getFLyrPoints().getCountPoints(); i++){ |
281 |
|
|
282 | 275 |
Point2D center = lyrGeoRaster.img2World(lyrGeoRaster.getFLyrPoints().getPoint(i).pixelPoint); |
283 | 276 |
lyrGeoRaster.getFLyrPoints().setMiniExtent( i, |
284 | 277 |
center, |
285 | 278 |
//lyrGeoRaster.getGeoDialog().getZoomControlLeft().getCanvas().initViewPort(vp, center, lyrGeoRaster.getFLyrPoints().getPoint(i).leftViewPort), |
286 |
lyrGeoRaster.getGeoDialog().getLeftInitViewport(vp, center, lyrGeoRaster.getFLyrPoints().getPoint(i).leftViewPort), |
|
279 |
lyrGeoRaster.getGeoDialog().getLeftInitViewport(vp, center, lyrGeoRaster.getFLyrPoints().getPoint(i).leftViewPort, 1),
|
|
287 | 280 |
false); |
281 |
if(i == lyrGeoRaster.getGeoDialog().getSelectedPoint()){ |
|
282 |
lyrGeoRaster.updateData(i + 1, lyrGeoRaster.getFLyrPoints().getPoint(i).pixelPoint, null, theView); |
|
283 |
theView.getMapControl().getMapContext().invalidate(); |
|
284 |
} |
|
288 | 285 |
} |
289 |
|
|
290 |
//Repintamos la vista y las mini im?genes |
|
291 |
int selection = lyrGeoRaster.getGeoDialog().getSelectedPoint(); |
|
292 |
GeoPoint gp = lyrGeoRaster.getFLyrPoints().getPoint(selection); |
|
293 |
Point2D px = null; |
|
294 |
Point2D map = null; |
|
295 |
if(gp != null){ |
|
296 |
px = gp.pixelPoint; |
|
297 |
map = gp.mapPoint; |
|
298 |
} |
|
299 |
|
|
300 |
lyrGeoRaster.updateData(selection + 1, px, map, theView); |
|
301 |
if(px == null && map == null) |
|
302 |
theView.getMapControl().getMapContext().invalidate(); |
|
303 |
|
|
286 |
|
|
304 | 287 |
tmpUl = null; |
305 | 288 |
tmpLr = null; |
306 | 289 |
|
trunk/extensions/extGeoreferencing/src/com/iver/cit/gvsig/fmap/tools/Behavior/GeoMoveBehavior.java | ||
---|---|---|
263 | 263 |
//Si la capa tiene puntos de control actualizamos el punto que tiene coordenadas |
264 | 264 |
//en pixeles de la imagen. |
265 | 265 |
for(int i=0; i<lyrGeoRaster.getFLyrPoints().getCountPoints(); i++){ |
266 |
|
|
267 | 266 |
Point2D center = lyrGeoRaster.img2World(lyrGeoRaster.getFLyrPoints().getPoint(i).pixelPoint); |
268 | 267 |
lyrGeoRaster.getFLyrPoints().setMiniExtent( i, |
269 | 268 |
center, |
270 |
//lyrGeoRaster.getGeoDialog().getZoomControlLeft().getCanvas().initViewPort(vp, center, lyrGeoRaster.getFLyrPoints().getPoint(i).leftViewPort), |
|
271 |
lyrGeoRaster.getGeoDialog().getLeftInitViewport(vp, center, lyrGeoRaster.getFLyrPoints().getPoint(i).leftViewPort), |
|
269 |
lyrGeoRaster.getGeoDialog().getLeftInitViewport(vp, center, lyrGeoRaster.getFLyrPoints().getPoint(i).leftViewPort, 1), |
|
272 | 270 |
false); |
271 |
if(i == lyrGeoRaster.getGeoDialog().getSelectedPoint()){ |
|
272 |
lyrGeoRaster.updateData(i + 1, lyrGeoRaster.getFLyrPoints().getPoint(i).pixelPoint, null, theView); |
|
273 |
theView.getMapControl().getMapContext().invalidate(); |
|
274 |
} |
|
273 | 275 |
} |
274 |
|
|
275 |
//Repintamos la vista y las mini im?genes |
|
276 |
int selection = lyrGeoRaster.getGeoDialog().getSelectedPoint(); |
|
277 |
GeoPoint gp = lyrGeoRaster.getFLyrPoints().getPoint(selection); |
|
278 |
Point2D px = null; |
|
279 |
Point2D map = null; |
|
280 |
if(gp != null){ |
|
281 |
px = gp.pixelPoint; |
|
282 |
map = gp.mapPoint; |
|
283 |
} |
|
284 |
|
|
285 |
lyrGeoRaster.updateData(selection + 1, px, map, theView); |
|
286 |
if(px == null && map == null) |
|
287 |
theView.getMapControl().getMapContext().invalidate(); |
|
288 |
|
|
276 |
|
|
289 | 277 |
} |
290 | 278 |
isMoveable = false; |
291 |
//getMapControl().repaint(); |
|
292 |
//getMapControl().drawMap(true); |
|
293 | 279 |
} |
294 | 280 |
this.lyrGeoRaster = null; |
295 | 281 |
} |
trunk/extensions/extGeoreferencing/src/org/gvsig/georeferencing/utils/PointManager.java | ||
---|---|---|
175 | 175 |
|
176 | 176 |
if(pixel != null){ |
177 | 177 |
dialog.getZoomControlLeft().setCenterPoint(lyrPoints.getLyrGeoRaster().img2World(pixel)); |
178 |
dialog.getConectorPanel().getAdjustGeorefPanel().setViewPort(viewPort); |
|
178 |
dialog.getConectorPanel().getAdjustGeorefPanel().setViewPort(viewPort, lyrPoints.getPoint(nPunto - 1).zoomLeft);
|
|
179 | 179 |
//Si est? extendido hacemos un draw corriente sino es q est? plegado y tocar? asignar el extent de la miniimagen |
180 | 180 |
if(dialog.isEnlarge()) |
181 | 181 |
dialog.getConectorPanel().getAdjustGeorefPanel().getZoomLeft().draw(); |
182 | 182 |
else |
183 | 183 |
lyrPoints.setMiniExtent(nPunto - 1, |
184 | 184 |
lyrPoints.getLyrGeoRaster().img2World(pixel), |
185 |
dialog.getConectorPanel().getAdjustGeorefPanel().getZoomLeft().getCanvas().initViewPort(viewPort, lyrPoints.getLyrGeoRaster().img2World(pixel), null), |
|
185 |
dialog.getConectorPanel().getAdjustGeorefPanel().getZoomLeft().getCanvas().initViewPort(viewPort, lyrPoints.getLyrGeoRaster().img2World(pixel), null, lyrPoints.getPoint(nPunto - 1).zoomLeft),
|
|
186 | 186 |
false); |
187 | 187 |
} |
188 | 188 |
|
189 | 189 |
if(map != null){ |
190 | 190 |
dialog.getZoomControlRight().setCenterPoint(map); |
191 |
dialog.getConectorPanel().getAdjustGeorefPanel().setViewPort(viewPort); |
|
191 |
dialog.getConectorPanel().getAdjustGeorefPanel().setViewPort(viewPort, lyrPoints.getPoint(nPunto - 1).zoomRight);
|
|
192 | 192 |
//Si est? extendido hacemos un draw corriente sino es q est? plegado y tocar? asignar el extent de la miniimagen |
193 | 193 |
if(dialog.isEnlarge()) |
194 | 194 |
dialog.getConectorPanel().getAdjustGeorefPanel().getZoomRight().draw(); |
195 | 195 |
else |
196 | 196 |
lyrPoints.setMiniExtent(nPunto - 1, |
197 | 197 |
map, |
198 |
dialog.getConectorPanel().getAdjustGeorefPanel().getZoomRight().getCanvas().initViewPort(viewPort, map, null), |
|
198 |
dialog.getConectorPanel().getAdjustGeorefPanel().getZoomRight().getCanvas().initViewPort(viewPort, map, null, lyrPoints.getPoint(nPunto - 1).zoomRight),
|
|
199 | 199 |
true); |
200 | 200 |
} |
201 | 201 |
|
... | ... | |
289 | 289 |
|
290 | 290 |
//Cargamos las mini imagenes |
291 | 291 |
dialog.getZoomControlLeft().setCenterPoint(lyrPoints.getCenterPoint(pos, false)); |
292 |
dialog.getZoomControlLeft().setNewViewPort(lyrPoints.getMiniExtent(pos, false)); |
|
293 |
dialog.getZoomControlLeft().draw(); |
|
292 |
|
|
293 |
try{ |
|
294 |
ViewPort vpL = MathUtils.calcZoom(lyrPoints.getMiniExtent(pos, false), lyrPoints.getZoomLeft(pos)); |
|
295 |
dialog.getZoomControlLeft().setNewViewPort(vpL); |
|
296 |
dialog.getZoomControlLeft().draw(); |
|
297 |
}catch(NullPointerException ex){ |
|
298 |
//Todavia no hay un viewPort por lo que dar? una excepci?n. |
|
299 |
} |
|
294 | 300 |
|
295 | 301 |
dialog.getZoomControlRight().setCenterPoint(lyrPoints.getCenterPoint(pos, true)); |
296 |
dialog.getZoomControlRight().setNewViewPort(lyrPoints.getMiniExtent(pos, true)); |
|
297 |
dialog.getZoomControlRight().draw(); |
|
302 |
try{ |
|
303 |
ViewPort vpR = MathUtils.calcZoom(lyrPoints.getMiniExtent(pos, true), lyrPoints.getZoomRight(pos)); |
|
304 |
dialog.getZoomControlRight().setNewViewPort(vpR); |
|
305 |
dialog.getZoomControlRight().draw(); |
|
306 |
}catch(NullPointerException ex){ |
|
307 |
//Todavia no hay un viewPort por lo que dar? una excepci?n |
|
308 |
} |
|
298 | 309 |
|
299 | 310 |
//Calculamos los errores |
300 | 311 |
if(pto.pixelPoint != null && pto.mapPoint != null) |
trunk/extensions/extGeoreferencing/src/org/gvsig/georeferencing/utils/GeoPointPersistence.java | ||
---|---|---|
106 | 106 |
} |
107 | 107 |
} |
108 | 108 |
} |
109 |
|
|
109 | 110 |
} catch (ParserConfigurationException e) { |
110 | 111 |
return; |
111 | 112 |
} catch (SAXException e1) { |
... | ... | |
186 | 187 |
* original ha cambiado o no. Si la capa FLyrGeoRaster cargada tiene un extent |
187 | 188 |
* distinto al que se ha salvado en el fichero de puntos esto significa que el |
188 | 189 |
* extent de la miniimagen que tiene los puntos relativos a las coordenadas de la |
189 |
* imagen en pixels ha de sufrir un desplazamiento. |
|
190 |
* imagen en pixels ha de sufrir un desplazamiento. Este cambio puede producirse |
|
191 |
* cuando el usuario carga un proyecto con una capa a georreferenciar y la desplaza de |
|
192 |
* sitio con las herramientas. Posteriormente puede cargar los puntos del fichero .rmf |
|
190 | 193 |
* @param imgExtent Extent de la imagen |
191 | 194 |
* @param miniExtent ViewPor del miniextent a transformar |
192 | 195 |
* @return ViewPort ViewPort del miniextent transformado |
... | ... | |
232 | 235 |
for(int j=0;j<nl.getLength();j++){ |
233 | 236 |
Node geoNode = nl.item(j); |
234 | 237 |
if(geoNode.getNodeName().equals(RasterMetaFileTags.POINTS_VP)){ |
235 |
res = new double[6];
|
|
238 |
res = new double[7];
|
|
236 | 239 |
NodeList vpChildNodes = geoNode.getChildNodes(); |
237 | 240 |
for(int i=0;i<vpChildNodes.getLength();i++){ |
238 | 241 |
Node vpNode = vpChildNodes.item(i); |
... | ... | |
274 | 277 |
private void processGeoPointNodeValue(NodeList nl){ |
275 | 278 |
Point2D leftCenter = null, rightCenter = null; |
276 | 279 |
ViewPort leftViewPort = null, rightViewPort = null; |
280 |
double zoomLeft = 1, zoomRight = 1; |
|
277 | 281 |
double pX = 0D, pY = 0D, mX = 0D, mY = 0D; |
278 | 282 |
boolean active = false; |
279 | 283 |
for(int j=0;j<nl.getLength();j++){ |
... | ... | |
292 | 296 |
leftCenter = processCenterPoint(geoNode.getChildNodes()); |
293 | 297 |
if(geoNode.getNodeName().equals(RasterMetaFileTags.GEOPOINT_RCENTER)) |
294 | 298 |
rightCenter = processCenterPoint(geoNode.getChildNodes()); |
295 |
if(geoNode.getNodeName().equals(RasterMetaFileTags.GEOPOINT_LVP)) |
|
296 |
leftViewPort = processViewPort(geoNode.getChildNodes()); |
|
297 |
if(geoNode.getNodeName().equals(RasterMetaFileTags.GEOPOINT_RVP)) |
|
298 |
rightViewPort = processViewPort(geoNode.getChildNodes()); |
|
299 |
if(geoNode.getNodeName().equals(RasterMetaFileTags.GEOPOINT_LVP)){ |
|
300 |
Object[] obj = processViewPort(geoNode.getChildNodes()); |
|
301 |
leftViewPort = (ViewPort)obj[0]; |
|
302 |
zoomLeft = ((Double)obj[1]).doubleValue(); |
|
303 |
} |
|
304 |
if(geoNode.getNodeName().equals(RasterMetaFileTags.GEOPOINT_RVP)){ |
|
305 |
Object[] obj = processViewPort(geoNode.getChildNodes()); |
|
306 |
rightViewPort = (ViewPort)obj[0]; |
|
307 |
zoomRight = ((Double)obj[1]).doubleValue(); |
|
308 |
} |
|
299 | 309 |
} |
300 | 310 |
|
301 | 311 |
Point2D p = new Point2D.Double(); |
... | ... | |
322 | 332 |
lyrPoints.setLeftViewPort(pos, leftViewPort); |
323 | 333 |
lyrPoints.setRightViewPort(pos, rightViewPort); |
324 | 334 |
lyrPoints.getPointManager().updateData(pos + 1, p, m, lyrPoints.getPointManager().getDialog(), theView); |
325 |
|
|
335 |
lyrPoints.setZoomLeft(pos, zoomLeft); |
|
336 |
lyrPoints.setZoomRight(pos, zoomRight); |
|
326 | 337 |
if(lyrPoints.getCountPoints() > 0){ |
327 | 338 |
GeoreferencingDialog grd = lyrPoints.getPointManager().getDialog(); |
328 | 339 |
grd.getConectorPanel().getDataPointsTabPanel(). |
... | ... | |
381 | 392 |
* @param nodeList Lista de nodos |
382 | 393 |
* @return ViewPort obtenido |
383 | 394 |
*/ |
384 |
private ViewPort processViewPort(NodeList nodeList){ |
|
395 |
private Object[] processViewPort(NodeList nodeList){ |
|
396 |
Object[] obj = new Object[2]; |
|
385 | 397 |
ViewPort vp = new ViewPort(null); |
398 |
Double zoom = new Double(1); |
|
386 | 399 |
for(int j=0;j<nodeList.getLength();j++){ |
387 | 400 |
Node node = nodeList.item(j); |
388 | 401 |
if(node.getNodeName().equals(RasterMetaFileTags.POINTS_PROJ)) |
... | ... | |
391 | 404 |
vp.setExtent(processExtent(node.getChildNodes())); |
392 | 405 |
if(node.getNodeName().equals(RasterMetaFileTags.POINTS_DIM)) |
393 | 406 |
vp.setImageSize(processImageSize(node.getChildNodes())); |
407 |
if(node.getNodeName().equals(RasterMetaFileTags.POINTS_ZOOM)) |
|
408 |
zoom = new Double(node.getFirstChild().getNodeValue()); |
|
394 | 409 |
} |
410 |
obj[0] = vp; |
|
411 |
obj[1] = zoom; |
|
395 | 412 |
vp.setScale(); |
396 |
return vp;
|
|
413 |
return obj;
|
|
397 | 414 |
} |
398 | 415 |
|
399 | 416 |
/** |
... | ... | |
452 | 469 |
itemlevel2 = xmlDoc.createElement(RasterMetaFileTags.POINTS_DIM); |
453 | 470 |
createSimpleElement(itemlevel2, RasterMetaFileTags.WIDTH, values[4]); |
454 | 471 |
createSimpleElement(itemlevel2, RasterMetaFileTags.HEIGHT, values[5]); |
455 |
itemlevel1.appendChild(itemlevel2); |
|
472 |
itemlevel1.appendChild(itemlevel2); |
|
473 |
if(values.length == 8) |
|
474 |
createSimpleElement(itemlevel1, RasterMetaFileTags.POINTS_ZOOM, values[7]); |
|
456 | 475 |
parent.appendChild(itemlevel1); |
457 | 476 |
} |
458 | 477 |
|
... | ... | |
472 | 491 |
String.valueOf(lyrGeo.getHeight()), |
473 | 492 |
String.valueOf(lyrGeo.getImageWidth()), |
474 | 493 |
String.valueOf(lyrGeo.getImageHeight()), |
475 |
lyrGeo.getProjection().getAbrev()}; |
|
494 |
lyrGeo.getProjection().getAbrev(), |
|
495 |
}; |
|
476 | 496 |
createViewPortNode(xmlGeoPoint, RasterMetaFileTags.POINTS_VP, vpData); |
477 | 497 |
} |
478 | 498 |
|
... | ... | |
512 | 532 |
String.valueOf(geoPoint.leftViewPort.getExtent().getHeight()), |
513 | 533 |
String.valueOf(geoPoint.leftViewPort.getImageWidth()), |
514 | 534 |
String.valueOf(geoPoint.leftViewPort.getImageHeight()), |
515 |
geoPoint.leftViewPort.getProjection().getAbrev()}; |
|
535 |
geoPoint.leftViewPort.getProjection().getAbrev(), |
|
536 |
String.valueOf(geoPoint.zoomLeft)}; |
|
516 | 537 |
createViewPortNode(xmlGeoPoint, RasterMetaFileTags.GEOPOINT_LVP, values1); |
517 | 538 |
|
518 | 539 |
String[] values2 = {String.valueOf(geoPoint.rightViewPort.getExtent().getX()), |
... | ... | |
521 | 542 |
String.valueOf(geoPoint.rightViewPort.getExtent().getHeight()), |
522 | 543 |
String.valueOf(geoPoint.rightViewPort.getImageWidth()), |
523 | 544 |
String.valueOf(geoPoint.rightViewPort.getImageHeight()), |
524 |
geoPoint.rightViewPort.getProjection().getAbrev()}; |
|
545 |
geoPoint.rightViewPort.getProjection().getAbrev(), |
|
546 |
String.valueOf(geoPoint.zoomRight)}; |
|
525 | 547 |
|
526 | 548 |
createViewPortNode(xmlGeoPoint, RasterMetaFileTags.GEOPOINT_RVP, values2); |
527 | 549 |
} |
trunk/extensions/extGeoreferencing/src/org/gvsig/georeferencing/utils/MathUtils.java | ||
---|---|---|
188 | 188 |
} |
189 | 189 |
return (c); |
190 | 190 |
} |
191 |
|
|
192 |
/** |
|
193 |
* Calcula el zoom dependiendo del factor de escala pasado por |
|
194 |
* par?metro. |
|
195 |
*/ |
|
196 |
public static ViewPort calcZoom(ViewPort vp, double factor){ |
|
197 |
ViewPort viewPortBlock = new ViewPort(vp.getProjection()); |
|
198 |
viewPortBlock.setExtent(vp.getExtent()); |
|
199 |
viewPortBlock.setImageSize(vp.getImageSize()); |
|
200 |
viewPortBlock.setScale(); |
|
201 |
|
|
202 |
Rectangle2D.Double r = new Rectangle2D.Double(); |
|
203 |
double nuevoX = (vp.getExtent().getCenterX()) - ((vp.getExtent().getWidth() * factor) / 2.0); |
|
204 |
double nuevoY = (vp.getExtent().getCenterY()) - ((vp.getExtent().getHeight() * factor) / 2.0); |
|
205 |
r.x = nuevoX; |
|
206 |
r.y = nuevoY; |
|
207 |
r.width = viewPortBlock.getExtent().getWidth() * factor; |
|
208 |
r.height = viewPortBlock.getExtent().getHeight() * factor; |
|
209 |
viewPortBlock.setExtent(r); |
|
210 |
viewPortBlock.setScale(); |
|
211 |
|
|
212 |
return viewPortBlock; |
|
213 |
} |
|
191 | 214 |
} |
trunk/extensions/extGeoreferencing/src/org/gvsig/georeferencing/gui/dialogs/GeoreferencingDialog.java | ||
---|---|---|
333 | 333 |
|
334 | 334 |
try{ |
335 | 335 |
//ACEPTAR |
336 |
if(e.getSource() == bAceptar){
|
|
336 |
if(e.getSource() == bAceptar) |
|
337 | 337 |
accept(theView); |
338 |
} |
|
339 |
|
|
338 |
|
|
340 | 339 |
//CANCELAR |
341 |
if(e.getSource() == bCancelar){
|
|
340 |
if(e.getSource() == bCancelar) |
|
342 | 341 |
cancel(theView); |
343 |
} |
|
344 |
|
|
342 |
|
|
345 | 343 |
//CARGAR PUNTOS |
346 |
if(e.getSource() == tablePointsPanel.getPButtonsExportImportPanel().getBLoad()){
|
|
344 |
if(e.getSource() == tablePointsPanel.getPButtonsExportImportPanel().getBLoad()) |
|
347 | 345 |
loadPoints(theView); |
348 |
} |
|
349 |
|
|
346 |
|
|
350 | 347 |
//SALVAR PUNTOS |
351 |
if(e.getSource() == tablePointsPanel.getPButtonsExportImportPanel().getBSave()){
|
|
348 |
if(e.getSource() == tablePointsPanel.getPButtonsExportImportPanel().getBSave()) |
|
352 | 349 |
savePoints(); |
353 |
} |
|
354 | 350 |
|
351 |
|
|
355 | 352 |
//EXPORTAR A ASCII |
356 |
if(e.getSource() == tablePointsPanel.getPButtonsExportImportPanel().getBExportToAscii()){
|
|
353 |
if(e.getSource() == tablePointsPanel.getPButtonsExportImportPanel().getBExportToAscii()) |
|
357 | 354 |
exportToASCII(theView); |
358 |
} |
|
359 |
|
|
355 |
|
|
360 | 356 |
//DESACTIVAR PANELES |
361 | 357 |
JCheckBox cb = this.conectorPanel.getDataPointsTabPanel().getSelectPointsPanel().getDataPointPanel().getCbActive(); |
362 |
if(e.getSource() == cb){
|
|
358 |
if(e.getSource() == cb) |
|
363 | 359 |
deactivatePanel(theView, cb); |
364 |
} |
|
365 |
|
|
360 |
|
|
366 | 361 |
//PROCESAR |
367 |
if(e.getSource() == this.getBProcess()){
|
|
362 |
if(e.getSource() == this.getBProcess()) |
|
368 | 363 |
process(theView); |
369 |
} |
|
370 | 364 |
}catch(Exception exc){ |
365 |
exc.printStackTrace(); |
|
371 | 366 |
return; |
372 | 367 |
} |
373 | 368 |
} |
... | ... | |
380 | 375 |
frame.setClosed(true); |
381 | 376 |
}catch(PropertyVetoException exc){} |
382 | 377 |
} |
383 |
|
|
378 |
|
|
384 | 379 |
/** |
385 | 380 |
* Funci?n que se ejecuta al pulsar el bot?n procesar. Este procesamiento calcula a partir de |
386 | 381 |
* los puntos de control la georreferenciaci?n de la imagen y la asigna como extent temporal de |
... | ... | |
406 | 401 |
//Si la capa tiene puntos de control hacemos un update de estos |
407 | 402 |
//a su posici?n para que se actualicen los controles |
408 | 403 |
for(int i=0; i<lyrGeoRaster.getFLyrPoints().getCountPoints(); i++){ |
409 |
|
|
410 | 404 |
Point2D center = lyrGeoRaster.img2World(lyrGeoRaster.getFLyrPoints().getPoint(i).pixelPoint); |
411 | 405 |
lyrGeoRaster.getFLyrPoints().setMiniExtent( i, |
412 | 406 |
center, |
413 |
//lyrGeoRaster.getGeoDialog().getZoomControlLeft().getCanvas().initViewPort(vp, center, lyrGeoRaster.getFLyrPoints().getPoint(i).leftViewPort), |
|
414 |
lyrGeoRaster.getGeoDialog().getLeftInitViewport(vp, center, lyrGeoRaster.getFLyrPoints().getPoint(i).leftViewPort), |
|
407 |
getLeftInitViewport(vp, center, lyrGeoRaster.getFLyrPoints().getPoint(i).leftViewPort, 1), |
|
415 | 408 |
false); |
409 |
if(i == getSelectedPoint()){ |
|
410 |
updateData(i + 1, lyrGeoRaster.getFLyrPoints().getPoint(i).pixelPoint, null, theView); |
|
411 |
theView.getMapControl().getMapContext().invalidate(); |
|
412 |
} |
|
413 |
|
|
416 | 414 |
} |
417 |
|
|
418 |
//Repintamos la vista y las mini im?genes |
|
419 |
int selection = lyrGeoRaster.getGeoDialog().getSelectedPoint(); |
|
420 |
GeoPoint gp = lyrGeoRaster.getFLyrPoints().getPoint(selection); |
|
421 |
Point2D px = null; |
|
422 |
Point2D map = null; |
|
423 |
if(gp != null){ |
|
424 |
px = gp.pixelPoint; |
|
425 |
map = gp.mapPoint; |
|
426 |
} |
|
427 |
|
|
428 |
lyrGeoRaster.updateData(selection + 1, px, map, theView); |
|
429 |
if(px == null && map == null) |
|
430 |
theView.getMapControl().getMapContext().invalidate(); |
|
431 | 415 |
} |
432 | 416 |
} |
433 | 417 |
|
... | ... | |
1188 | 1172 |
/** |
1189 | 1173 |
* |
1190 | 1174 |
*/ |
1191 |
public ViewPort getLeftInitViewport(ViewPort vp, Point2D center, ViewPort initVp){ |
|
1192 |
return getZoomControlLeft().getCanvas().initViewPort(vp, center, initVp); |
|
1175 |
public ViewPort getLeftInitViewport(ViewPort vp, Point2D center, ViewPort initVp, double zoom){
|
|
1176 |
return getZoomControlLeft().getCanvas().initViewPort(vp, center, initVp, zoom);
|
|
1193 | 1177 |
} |
1194 | 1178 |
|
1195 | 1179 |
/** |
trunk/extensions/extGeoreferencing/src/org/gvsig/georeferencing/gui/panels/AdjustGeorefPanel.java | ||
---|---|---|
134 | 134 |
* Asigna los viewPort a los canvas para el dibujado de la minimagen |
135 | 135 |
* @param vp ViewPort asignado. |
136 | 136 |
*/ |
137 |
public void setViewPort(ViewPort vp){ |
|
138 |
this.getZoomLeft().setViewPort(vp); |
|
139 |
this.getZoomRight().setViewPort(vp); |
|
137 |
public void setViewPort(ViewPort vp, double zoom){
|
|
138 |
this.getZoomLeft().setViewPort(vp, zoom);
|
|
139 |
this.getZoomRight().setViewPort(vp, zoom);
|
|
140 | 140 |
} |
141 | 141 |
|
142 | 142 |
/** |
trunk/extensions/extGeoreferencing/src/org/gvsig/georeferencing/gui/panels/ZoomControlPanel.java | ||
---|---|---|
26 | 26 |
import javax.swing.JPanel; |
27 | 27 |
|
28 | 28 |
import org.gvsig.georeferencing.gui.dialogs.GeoreferencingDialog; |
29 |
import org.gvsig.georeferencing.utils.MathUtils; |
|
29 | 30 |
|
30 | 31 |
import com.iver.andami.PluginServices; |
31 | 32 |
import com.iver.cit.gvsig.fmap.DriverException; |
... | ... | |
61 | 62 |
/** |
62 | 63 |
* Estado de los botones cuando se ejecuta disableAllControls |
63 | 64 |
*/ |
64 |
private boolean[] buttonsState = new boolean[2];
|
|
65 |
private boolean[] buttonsState = new boolean[2]; |
|
65 | 66 |
/** |
66 | 67 |
* DisableAllControls ha sido ejecutada si est? a true esta variabled |
67 | 68 |
*/ |
68 |
private boolean disableAllControls = false; |
|
69 |
private boolean disableAllControls = false; |
|
70 |
/** |
|
71 |
* Factor multiplicador cuando hacemos zoom mas |
|
72 |
*/ |
|
73 |
private double zoomMas = 0.6; |
|
74 |
/** |
|
75 |
* Factor multiplicador cuando hacemos zoom menos |
|
76 |
*/ |
|
77 |
private double zoomMenos = 1.8; |
|
69 | 78 |
//**********************End Vars****************************** |
70 | 79 |
|
71 | 80 |
//**********************Methods******************************* |
... | ... | |
136 | 145 |
* Manejo de los controles zoom m?s y zoom menos |
137 | 146 |
*/ |
138 | 147 |
public void actionPerformed(ActionEvent e) { |
139 |
if(e.getSource() == bZoomMas){ |
|
140 |
canvas.calcZoom(0.6); |
|
141 |
canvas.draw = true; |
|
142 |
canvas.repaint(); |
|
143 |
} |
|
148 |
double zoom = zoomMas; |
|
144 | 149 |
|
150 |
if(e.getSource() == bZoomMas) |
|
151 |
canvas.calcZoom(zoomMas); |
|
152 |
|
|
145 | 153 |
if(e.getSource() == bZoomMenos){ |
146 |
canvas.calcZoom(1.8); |
|
147 |
canvas.draw = true; |
|
148 |
canvas.repaint(); |
|
154 |
canvas.calcZoom(zoomMenos); |
|
155 |
zoom = zoomMenos; |
|
149 | 156 |
} |
157 |
|
|
158 |
canvas.draw = true; |
|
159 |
canvas.repaint(); |
|
160 |
if(isRightControl()) |
|
161 |
lyrPoints.getPoint(dialog.getSelectedPoint()).zoomLeft *= zoom; |
|
162 |
else |
|
163 |
lyrPoints.getPoint(dialog.getSelectedPoint()).zoomRight *= zoom; |
|
150 | 164 |
|
165 |
lyrPoints.showPoints(); |
|
151 | 166 |
} |
152 | 167 |
|
153 | 168 |
/** |
... | ... | |
194 | 209 |
/** |
195 | 210 |
* @param viewPort The viewPort to set. |
196 | 211 |
*/ |
197 |
public void setViewPort(ViewPort viewPort) { |
|
212 |
public void setViewPort(ViewPort viewPort, double zoom) {
|
|
198 | 213 |
this.viewPort = viewPort; |
199 |
getCanvas().setViewPort(this.viewPort); |
|
214 |
getCanvas().setViewPort(this.viewPort, zoom);
|
|
200 | 215 |
} |
201 | 216 |
|
202 | 217 |
/** |
... | ... | |
388 | 403 |
this.getCanvas().setEnableEvent(enabled); |
389 | 404 |
} |
390 | 405 |
|
406 |
/** |
|
407 |
* Obtiene el modificador de escala aplicado a zoom m?s |
|
408 |
* @return |
|
409 |
*/ |
|
410 |
public double getZoomMas() { |
|
411 |
return zoomMas; |
|
412 |
} |
|
413 |
|
|
414 |
/** |
|
415 |
* Obtiene el modificador de escala aplicado a zoom m?s |
|
416 |
* @return |
|
417 |
*/ |
|
418 |
public double getZoomMenos() { |
|
419 |
return zoomMenos; |
|
420 |
} |
|
421 |
|
|
391 | 422 |
//**********************End Setters & Getters***************** |
392 | 423 |
/** |
393 | 424 |
* Control que representa la zona de dibujado de la ventana. Este se encarga de |
... | ... | |
433 | 464 |
* Esta variable se usa para informar cuando debe recargarse el buffer de las miniimagenes. Si siempre |
434 | 465 |
* est? a true no para de llamar al draw de FLyers para que pinte sobre el minicanvas. |
435 | 466 |
*/ |
436 |
public boolean draw = true; |
|
467 |
public boolean draw = true; |
|
468 |
public boolean drawPoint = true; |
|
469 |
|
|
437 | 470 |
//**********************End Vars****************************** |
438 | 471 |
|
439 | 472 |
//**********************Classes******************************* |
... | ... | |
484 | 517 |
newViewPort.setScale(); |
485 | 518 |
} |
486 | 519 |
|
487 |
|
|
488 | 520 |
/** |
489 |
*Calculamos el viewPort para el zoom de la minimagen |
|
521 |
* Calculamos el viewPort para el zoom de la minimagen |
|
522 |
* @param vp ViewPort inicial |
|
523 |
* @param center Centro del ViewPort a calcular. |
|
524 |
* @param vpDest ViewPort de destino. Si este es null se crear? un nuevo ViewPort sino se asignar?n los cambios a este. |
|
525 |
* @return |
|
490 | 526 |
*/ |
491 |
public ViewPort initViewPort(ViewPort vp, Point2D center, ViewPort vpDest){ |
|
492 |
if(center != null){ |
|
493 |
|
|
527 |
public ViewPort initViewPort(ViewPort vp, Point2D center, ViewPort vpDest, double zoom){ |
|
528 |
if(center != null){ |
|
494 | 529 |
//Hallamos la relaci?n entre el pixel y las WC a partir de la imagen de la capa |
495 | 530 |
double relacionPixelWcWidth = ((vp.getExtent().getMaxX() - vp.getExtent().getMinX()) / initZoom) / ancho; |
496 | 531 |
double relacionPixelWcHeight = ((vp.getExtent().getMaxY() - vp.getExtent().getMinY()) / initZoom) / alto; |
... | ... | |
513 | 548 |
newViewPort.setExtent(ext); |
514 | 549 |
newViewPort.setImageSize(new java.awt.Dimension(ancho, alto)); |
515 | 550 |
newViewPort.setScale(); |
551 |
if(zoom != 1 && zoom != 0) |
|
552 |
newViewPort = MathUtils.calcZoom(newViewPort, zoom); |
|
516 | 553 |
return newViewPort; |
517 | 554 |
}else{ |
518 | 555 |
vpDest.setExtent(ext); |
519 | 556 |
vpDest.setScale(); |
557 |
if(zoom != 1 && zoom != 0) |
|
558 |
vpDest = MathUtils.calcZoom(vpDest, zoom); |
|
520 | 559 |
return vpDest; |
521 | 560 |
} |
522 | 561 |
|
... | ... | |
537 | 576 |
gTmp.fillRect( 0,0,ancho,alto ); |
538 | 577 |
|
539 | 578 |
try{ |
540 |
if(newViewPort != null){ |
|
541 |
if(zoomControl.getNumberPoint() != -1){//Salvamos el miniextent si hay puntos en la lista |
|
542 |
if(!zoomControl.isRightControl()) |
|
543 |
zoomControl.getLyrPoints().setMiniExtent(zoomControl.getNumberPoint(), |
|
544 |
centerPoint, |
|
545 |
newViewPort, |
|
546 |
true); |
|
547 |
else |
|
548 |
zoomControl.getLyrPoints().setMiniExtent(zoomControl.getNumberPoint(), |
|
549 |
centerPoint, |
|
550 |
newViewPort, |
|
551 |
false); |
|
552 |
} |
|
579 |
if(newViewPort != null){ |
|
553 | 580 |
//Si no tenemos las capas las cargamos |
554 | 581 |
if(flayers == null){ |
555 | 582 |
View theView = null; |
... | ... | |
859 | 886 |
* Asigna el viewPort |
860 | 887 |
* @param vp ViewPort |
861 | 888 |
*/ |
862 |
public void setViewPort(ViewPort vp){ |
|
863 |
this.initViewPort(vp, this.centerPoint, null); |
|
889 |
public void setViewPort(ViewPort vp, double zoom){
|
|
890 |
this.initViewPort(vp, this.centerPoint, null, zoom);
|
|
864 | 891 |
} |
865 | 892 |
|
866 | 893 |
/** |
... | ... | |
894 | 921 |
public void setEnableEvent(boolean enableEvent) { |
895 | 922 |
this.enableEvent = enableEvent; |
896 | 923 |
} |
924 |
|
|
897 | 925 |
//**********************End Setters & Getters***************** |
898 | 926 |
|
899 | 927 |
} |
Also available in: Unified diff