svn-gvsig-desktop / trunk / extensions / extgvSIGPiloto-Raster / src / com / iver / cit / gvsig / project / documents / view / toolListeners / CutRasterListener.java @ 9935
History | View | Annotate | Download (3.67 KB)
1 |
package com.iver.cit.gvsig.project.documents.view.toolListeners; |
---|---|
2 |
|
3 |
import java.awt.Cursor; |
4 |
import java.awt.geom.Rectangle2D; |
5 |
import java.util.ArrayList; |
6 |
|
7 |
import com.iver.cit.gvsig.fmap.DriverException; |
8 |
import com.iver.cit.gvsig.fmap.MapControl; |
9 |
import com.iver.cit.gvsig.fmap.layers.FLyrRaster; |
10 |
import com.iver.cit.gvsig.fmap.tools.SaveRasterListenerImpl; |
11 |
import com.iver.cit.gvsig.fmap.tools.Events.RectangleEvent; |
12 |
import com.iver.cit.gvsig.project.documents.raster.gui.dialogs.CutRasterDialog; |
13 |
|
14 |
/**
|
15 |
* Listener del recorte de raster. Al seleccionar un ?rea sobre la vista debe cargar
|
16 |
* el cuadro con los datos de coordenadas pixel, coordenadas reales, ancho y alto
|
17 |
* del raster resultante, tama?o de celda.
|
18 |
*/
|
19 |
public class CutRasterListener extends SaveRasterListenerImpl { |
20 |
private FLyrRaster layer = null; |
21 |
private CutRasterDialog cutRasterDialog;
|
22 |
private MapControl mapCtrl = null; |
23 |
private String currentTool = null; |
24 |
|
25 |
/**
|
26 |
* Constructor.
|
27 |
* @param mapCtrl
|
28 |
* @param cutRasterDialog
|
29 |
*/
|
30 |
public CutRasterListener(MapControl mapCtrl, CutRasterDialog cutRasterDialog) {
|
31 |
super(mapCtrl);
|
32 |
this.cutRasterDialog = cutRasterDialog;
|
33 |
this.layer = cutRasterDialog.getFLayer();
|
34 |
this.mapCtrl = mapCtrl;
|
35 |
currentTool = mapCtrl.getCurrentTool(); |
36 |
} |
37 |
|
38 |
/**
|
39 |
* Asigna la capa raster.
|
40 |
* @param flyr Capa raster
|
41 |
*/
|
42 |
public void setRasterLayer(FLyrRaster flyr){ |
43 |
layer = flyr; |
44 |
} |
45 |
|
46 |
/**
|
47 |
* Realiza las acciones de selecci?n del ?rea de recorte por medio de un rectangulo
|
48 |
* sobre la vista.
|
49 |
*/
|
50 |
public void rectangle(RectangleEvent event) { |
51 |
super.rectangle(event);
|
52 |
|
53 |
//Obtenemos el extent completo de la capa
|
54 |
Rectangle2D extent = null; |
55 |
try {
|
56 |
extent = ((FLyrRaster)layer).getFullExtent(); |
57 |
} catch (DriverException e1) {
|
58 |
return;
|
59 |
} |
60 |
|
61 |
if(extent == null) |
62 |
return;
|
63 |
|
64 |
//Si nos salimos de los margenes de la capa lo ajustamos a esta
|
65 |
double minx = rect.getMinX(), miny = rect.getMinY(), maxx = rect.getMaxX(), maxy = rect.getMaxY();
|
66 |
if(extent.getMinX() > rect.getMinX())
|
67 |
minx = extent.getMinX(); |
68 |
if(extent.getMinY() > rect.getMinY())
|
69 |
miny = extent.getMinY(); |
70 |
if(extent.getMaxX() < rect.getMaxX())
|
71 |
maxx = extent.getMaxX(); |
72 |
if(extent.getMaxY() < rect.getMaxY())
|
73 |
maxy = extent.getMaxY(); |
74 |
rect = new Rectangle2D.Double(minx, miny, Math.abs(maxx - minx), Math.abs(maxy - miny)); |
75 |
|
76 |
//Asignamos las coordenadas reales
|
77 |
cutRasterDialog.getPCut().setCoorRealFromDouble(rect.getMinX(), rect.getMaxY(), rect.getMaxX(), rect.getMinY(), 6);
|
78 |
try {
|
79 |
int widthPx = 0; |
80 |
int heightPx = 0; |
81 |
ArrayList attr = ((FLyrRaster)layer).getSource().getAttributes();
|
82 |
for (int i=0; i<attr.size(); i++) { |
83 |
Object[] a = (Object []) attr.get(i); |
84 |
if(a[0].toString().equals("Width")) |
85 |
widthPx = ((Integer)a[1]).intValue(); |
86 |
if(a[0].toString().equals("Height")) |
87 |
heightPx = ((Integer)a[1]).intValue(); |
88 |
} |
89 |
|
90 |
Rectangle2D window = new Rectangle2D.Double(rect.getMinX(), rect.getMinY(), rect.getWidth(), rect.getHeight()); |
91 |
Rectangle2D r = org.cresques.util.Utilities.getPxRectFromMapRect(layer.getFullExtent(), widthPx, heightPx, window);
|
92 |
cutRasterDialog.getPCut().setCoorPixelFromDouble(r.getMinX(), r.getMinY(), r.getMaxX(), r.getMaxY(), 3);
|
93 |
cutRasterDialog.getPCut().setWidthText(r.getWidth(), 0);
|
94 |
cutRasterDialog.getPCut().setHeightText(r.getHeight(), 0);
|
95 |
cutRasterDialog.getPCut().setCellSizeText((rect.getWidth() / r.getWidth()), 4);
|
96 |
cutRasterDialog.getPCut().setRelWidthHeight((double)(r.getWidth() / r.getHeight()));
|
97 |
cutRasterDialog.setInitValuesToSize(r.getWidth(), r.getHeight()); |
98 |
if(currentTool != null) |
99 |
mapCtrl.setTool(currentTool); |
100 |
} catch (DriverException e) {
|
101 |
|
102 |
} catch (NumberFormatException e) { |
103 |
|
104 |
} |
105 |
} |
106 |
|
107 |
} |