Revision 17617

View differences:

trunk/extensions/extRemoteSensing/src/org/gvsig/remotesensing/scatterplot/listener/ManagerROIChartPanelListener.java
1 1
package org.gvsig.remotesensing.scatterplot.listener;
2 2

  
3 3
import java.awt.Color;
4
import java.awt.Point;
5 4
import java.awt.event.ActionEvent;
6 5
import java.awt.event.ActionListener;
7
import java.awt.geom.AffineTransform;
8
import java.awt.geom.Point2D;
9
import java.awt.geom.Rectangle2D;
10 6
import java.util.ArrayList;
11 7
import java.util.Iterator;
12 8

  
......
35 31
import com.iver.cit.gvsig.fmap.core.SymbologyFactory;
36 32
import com.iver.cit.gvsig.fmap.core.symbols.IMarkerSymbol;
37 33
import com.iver.cit.gvsig.fmap.core.symbols.ISymbol;
38
import com.iver.cit.gvsig.fmap.core.symbols.SimpleMarkerSymbol;
39 34
import com.iver.cit.gvsig.fmap.layers.FLayer;
40 35
import com.iver.cit.gvsig.fmap.layers.GraphicLayer;
41 36
import com.iver.cit.gvsig.fmap.rendering.FGraphic;
42 37
import com.iver.cit.gvsig.project.documents.view.gui.View;
43 38

  
44 39

  
40
/**
41
 * Listener para el gestor de rois sobre el grafico
42
 * 
43
 * @author Alejandro Mu?oz Sanchez (alejandro.munoz@uclm.es)  
44
 * @version 11/12/2007
45
 */
45 46

  
46

  
47 47
public class ManagerROIChartPanelListener implements ButtonsPanelListener, ActionListener, ListSelectionListener, TableModelListener{
48 48
		
49 49
		private ManagerROIChartPanel tablePanel = null;
......
56 56
			activeRoi = tablePanel.getDiagram().getActiveRoiChart();
57 57
			layer= tablePanel.getFLayer();
58 58
		}
59
		
59 60

  
60
		public void actionButtonPressed(ButtonsPanelEvent e) {
61
		}
62

  
63 61
		public void actionPerformed(ActionEvent e) {
64 62
			
65 63
			if (e.getSource() == tablePanel.getExportButton()){
66 64
				
65
				
66
				// EXTRAER DE AQUI. PROVISIONAL
67
				
67 68
				// ACCIONES PARA EXPORTAR LA ROI ACTIVA DEL GRAFICO A LA VISTA
68 69
				ROIChart roiToExport=  tablePanel.getDiagram().getActiveRoiChart();
69
				ArrayList rangos=roiToExport.getRanges();
70
				//ArrayList rangos=roiToExport.getRanges();
70 71
				
71
				// Recorrido de la imagen
72
				Grid grid= tablePanel.getScatterPlotPanel().getGrid();
72
				RoiFromChartProcess toRoi= new RoiFromChartProcess(roiToExport,tablePanel.getScatterPlotPanel().getGrid());
73
				toRoi.createVectorialRoi();
74
			
75
		
73 76
				
74 77
				
75
				VectorialROI newRoi = new VectorialROI(grid);
76
				newRoi.setColor(roiToExport.getColor());
77
				int bandX= tablePanel.getScatterPlotPanel().getBandX();
78
				int bandY= tablePanel.getScatterPlotPanel().getBandY();
79
				double valorBandX= 0;
80
				double valorBandY=0;
81
				Range rango[] = null;
82
				int nX = grid.getNX();
83
				int nY = grid.getNY();
84
				IBuffer buffer = grid.getRasterBuf();
85
				View view = (View) PluginServices.getMDIManager().getActiveWindow();
86
				MapControl mapControl = view.getMapControl();
87
				// Recorrido del grid
88
				
89
				if(buffer.getDataType() == RasterBuffer.TYPE_BYTE)
90
				{
91
						for (int j=0; j<nY; j++){
92
							for(int i=0; i<nX; i++)
93
							
94
							{
95
								valorBandX= buffer.getElemByte(j,i,0);
96
								valorBandY=	buffer.getElemByte(j,i,1);
97
							 	
98
								Iterator iterator =rangos.iterator();
99
								while(iterator.hasNext()){
100
									rango=(Range[]) iterator.next();
101
									if(isInside(valorBandX,rango[0]) && isInside(valorBandY,rango[1])){					 
102
										double mapX = grid.getGridExtent().getMin().getX()+i*grid.getCellSize();
103
										double mapY = grid.getGridExtent().getMax().getY()-j*grid.getCellSize();
104
										IGeometry geometry = ShapeFactory.createPoint2D(mapX,mapY);
105
										newRoi.addGeometry(geometry); // Geometria						
106
									}
107
								}
108
							}
109
						}
110
				}
111
				
112
				if(buffer.getDataType() == RasterBuffer.TYPE_SHORT)
113
				{
114
						for (int j=0; j<nY; j++){
115
							for(int i=0; i<nX; i++)
116
							
117
							{
118
								valorBandX= buffer.getElemShort(j,i,0);
119
								valorBandY=	buffer.getElemShort(j,i,1);
120
							 	
121
								Iterator iterator =rangos.iterator();
122
								while(iterator.hasNext()){
123
									rango=(Range[]) iterator.next();
124
									if(isInside(valorBandX,rango[0]) && isInside(valorBandY,rango[1])){					 
125
										double mapX = grid.getGridExtent().getMin().getX()+i*grid.getCellSize();
126
										double mapY = grid.getGridExtent().getMax().getY()-j*grid.getCellSize();
127
										IGeometry geometry = ShapeFactory.createPoint2D(mapX,mapY);
128
										newRoi.addGeometry(geometry);
129
									}
130
								}
131
							}
132
						}
133
				}
134
				
135
				
136
				
137
				drawRoi(newRoi);
78

  
138 79
					
139 80
					
140 81
			}else if (e.getSource() == tablePanel.getDeleteButton()){
......
217 158
		
218 159
		// Metodo que pinta la roi en la vista
219 160
		
220
		
161
	/**
162
	 * Dibujado de la ro
163
	 * */	
221 164
	void drawRoi(VectorialROI roi){
222 165
		
223 166
		VectorialROI vectorialROI = (VectorialROI) roi;
......
256 199
			return false;
257 200
		
258 201
	}
202

  
203

  
204
	public void actionButtonPressed(ButtonsPanelEvent e) {
205
		// TODO Auto-generated method stub
259 206
		
207
	}
208
		
260 209
				
261 210
	
262 211
}
trunk/extensions/extRemoteSensing/src/org/gvsig/remotesensing/scatterplot/listener/RoiFromChartProcess.java
1
package org.gvsig.remotesensing.scatterplot.listener;
2

  
3
import java.util.ArrayList;
4
import java.util.Iterator;
5

  
6
import org.gvsig.fmap.raster.grid.roi.VectorialROI;
7
import org.gvsig.raster.buffer.RasterBuffer;
8
import org.gvsig.raster.dataset.IBuffer;
9
import org.gvsig.raster.grid.Grid;
10
import org.gvsig.remotesensing.scatterplot.chart.ROIChart;
11
import org.jfree.data.Range;
12

  
13
import com.iver.andami.PluginServices;
14
import com.iver.cit.gvsig.fmap.MapControl;
15
import com.iver.cit.gvsig.fmap.core.FShape;
16
import com.iver.cit.gvsig.fmap.core.IGeometry;
17
import com.iver.cit.gvsig.fmap.core.ShapeFactory;
18
import com.iver.cit.gvsig.fmap.core.SymbologyFactory;
19
import com.iver.cit.gvsig.fmap.core.symbols.IMarkerSymbol;
20
import com.iver.cit.gvsig.fmap.core.symbols.ISymbol;
21
import com.iver.cit.gvsig.fmap.layers.GraphicLayer;
22
import com.iver.cit.gvsig.fmap.rendering.FGraphic;
23
import com.iver.cit.gvsig.project.documents.view.gui.View;
24

  
25

  
26

  
27
/**
28
 * Clase que implementa el proceso de construcci?n de una roi a partir de una 
29
 * ROi definida en el gr?fico de dispersion.
30
 * 
31
 * @author Alejandro Mu?oz Sanchez (alejandro.munoz@uclm.es)  
32
 * @version 11/12/2007
33
 */
34

  
35

  
36
public class RoiFromChartProcess {
37

  
38
	private Grid grid=null;
39
	private ROIChart roiToExport= null;
40
	
41
	public RoiFromChartProcess(ROIChart roiToExport, Grid grid){
42
		this.roiToExport= roiToExport;
43
		this.grid= grid;
44
	}
45
	
46
	
47
	public void createVectorialRoi(){
48
		
49
		
50
		VectorialROI newRoi = new VectorialROI(grid);
51
		newRoi.setColor(roiToExport.getColor());
52
		double valorBandX= 0;
53
		double valorBandY=0;
54
		Range rango[] = null;
55
		int nX = grid.getNX();
56
		int nY = grid.getNY();
57
		IBuffer buffer = grid.getRasterBuf();
58
		ArrayList rangos= roiToExport.getRanges();
59
		
60
		if(buffer.getDataType() == RasterBuffer.TYPE_BYTE)
61
		{
62
				for (int j=0; j<nY; j++){
63
					for(int i=0; i<nX; i++)
64
					
65
					{
66
						valorBandX= buffer.getElemByte(j,i,0);
67
						valorBandY=	buffer.getElemByte(j,i,1);
68
					 	
69
						Iterator iterator =rangos.iterator();
70
						while(iterator.hasNext()){
71
							rango=(Range[]) iterator.next();
72
							if(isInside(valorBandX,rango[0]) && isInside(valorBandY,rango[1])){					 
73
								double mapX = grid.getGridExtent().getMin().getX()+i*grid.getCellSize();
74
								double mapY = grid.getGridExtent().getMax().getY()-j*grid.getCellSize();
75
								IGeometry geometry = ShapeFactory.createPoint2D(mapX,mapY);
76
								newRoi.addGeometry(geometry); // Geometria						
77
							}
78
						}
79
					}
80
				}
81
		}
82
		
83
		if(buffer.getDataType() == RasterBuffer.TYPE_SHORT)
84
		{
85
				for (int j=0; j<nY; j++){
86
					for(int i=0; i<nX; i++)
87
					
88
					{
89
						valorBandX= buffer.getElemShort(j,i,0);
90
						valorBandY=	buffer.getElemShort(j,i,1);
91
					 	
92
						Iterator iterator =rangos.iterator();
93
						while(iterator.hasNext()){
94
							rango=(Range[]) iterator.next();
95
							if(isInside(valorBandX,rango[0]) && isInside(valorBandY,rango[1])){					 
96
								double mapX = grid.getGridExtent().getMin().getX()+i*grid.getCellSize();
97
								double mapY = grid.getGridExtent().getMax().getY()-j*grid.getCellSize();
98
								IGeometry geometry = ShapeFactory.createPoint2D(mapX,mapY);
99
								newRoi.addGeometry(geometry);
100
							}
101
						}
102
					}
103
				}
104
		}
105
		
106
		
107
		drawRoi(newRoi);
108
		
109
	}
110
	
111
	
112
	
113
	/***
114
	 *  Metodo que determina si el valor pasado esta dentro del intervalo
115
	 *  definido en rango.
116
	 * @param valor valor a comprobar
117
	 * @rango rango intervalo de tipo double
118
	 * 
119
	 */
120
	public boolean isInside(double valor, Range rango){
121
		
122
		double minValue= rango.getLowerBound();
123
		double maxValue= rango.getUpperBound();
124
		if( ( minValue< valor) && (maxValue>valor)) 
125
			return true;
126
		else
127
			return false;
128
		
129
	}
130
	
131
	
132
	/**
133
	 * Dibujado de la ro
134
	 * */	
135
	void drawRoi(VectorialROI roi){
136
		
137
		VectorialROI vectorialROI = (VectorialROI) roi;
138
		ISymbol symbol = null;
139
		FGraphic fGraphic = null;
140
		View view = (View) PluginServices.getMDIManager().getActiveWindow();
141
		MapControl mapControl = view.getMapControl();
142
		GraphicLayer graphicLayer =mapControl.getMapContext().getGraphicsLayer();
143
	
144
		for (Iterator iterator = vectorialROI.getGeometries()
145
				.iterator(); iterator.hasNext();) {
146
			IGeometry geometry = (IGeometry) iterator.next();
147
			switch (geometry.getGeometryType()) {
148
			case FShape.POINT:
149
				symbol = SymbologyFactory.createDefaultMarkerSymbol();
150
				((IMarkerSymbol) symbol).setColor(roi.getColor());
151
				break;
152
			}
153
			fGraphic = new FGraphic(geometry, graphicLayer.addSymbol(symbol));
154
			graphicLayer.addGraphic(fGraphic);
155
			//tablePanel.getRoiGraphics(roi.getName()).add(fGraphic);
156
			mapControl.drawGraphics();
157
		
158
		}
159
	
160
	}
161
	
162
	
163
	
164
}

Also available in: Unified diff