Revision 2308 org.gvsig.raster.tools/branches/org.gvsig.raster.tools_dataaccess_refactoring/org.gvsig.raster.tools.app.basic/src/main/java/org/gvsig/raster/tools/app/basic/tool/filter/mask/MaskFilter.java

View differences:

MaskFilter.java
24 24
import java.util.ArrayList;
25 25

  
26 26
import org.gvsig.fmap.dal.coverage.RasterLocator;
27
import org.gvsig.fmap.dal.coverage.dataset.Buffer;
28
import org.gvsig.fmap.dal.coverage.datastruct.GridExtent;
27
import org.gvsig.fmap.dal.coverage.datastruct.Extent;
29 28
import org.gvsig.fmap.dal.coverage.datastruct.NoData;
30 29
import org.gvsig.fmap.dal.coverage.datastruct.Params;
30
import org.gvsig.fmap.dal.coverage.exception.FilterAddException;
31 31
import org.gvsig.fmap.dal.coverage.grid.filter.BaseRasterFilter;
32
import org.gvsig.fmap.dal.coverage.store.RasterDataStore;
33 32
import org.gvsig.raster.fmap.layers.FLyrRaster;
34 33
import org.gvsig.raster.roi.ROI;
35 34

  
......
38 37
 * de la ROI se ponen al valor de la imagen de origen. Los p?xeles fuera
39 38
 * de la ROI se ponen a NoData.
40 39
 * 
41
 * 14/03/2008
42 40
 * @author Nacho Brodin nachobrodin@gmail.com
43 41
 */
44 42
public class MaskFilter extends BaseRasterFilter {
45
	public static String[]         names           = new String[] { "mask" };
46
	protected MaskUI               maskUI          = null;
47
	protected ArrayList<ROI>       rois            = null;
48
	protected boolean              inverse         = false;
43
	public static String[]         names            = new String[] { "mask" };
44
	protected MaskUI               maskUI           = null;
45
	protected ArrayList<ROI>       rois             = null;
46
	protected boolean              inverse          = false;
49 47
	
50 48
	//Extent de la ventana de datos y de la imagen completa.
51
	protected GridExtent           gridExtent      = null;
52
	protected GridExtent           windowExtent    = null;
53
	protected RasterDataStore      dataset         = null;
54
	protected Buffer               rasterAlpha     = null;
55
	protected NoData               noData          = null;
56
	protected double               cellsize        = 0D;
49
	protected Extent               bufferExtent     = null;
50
	protected NoData               noData           = null;
51
	protected double               cellsize         = 0D;
57 52
	
58 53
	/**
59 54
	 * Constructor
......
63 58
		setName(names[0]);
64 59
	}
65 60

  
66
	/*
67
	 * (non-Javadoc)
68
	 * @see org.gvsig.raster.grid.filter.RasterFilter#getGroup()
69
	 */
70 61
	public String getGroup() {
71 62
		return "mascaras";
72 63
	}
73 64

  
74
	/*
75
	 * (non-Javadoc)
76
	 * @see org.gvsig.raster.grid.filter.RasterFilter#getNames()
77
	 */
78 65
	public String[] getNames() {
79 66
		return names;
80 67
	}
81 68

  
82
	/*
83
	 * (non-Javadoc)
84
	 * @see org.gvsig.raster.grid.filter.RasterFilter#getResult(java.lang.String)
85
	 */
86
	public Object getResult(String name) {
87
		if (name.equals("alphaBand"))
88
			return rasterAlpha;
89
		
90
		if (!name.equals("raster"))
91
			return null;
92

  
93
		if (!exec)
94
			return (Object) this.raster;
95

  
96
		return (Object) this.rasterResult;
97
	}
98

  
99
	/*
100
	 * (non-Javadoc)
101
	 * @see org.gvsig.raster.grid.filter.RasterFilter#getUIParams(java.lang.String)
102
	 */
103 69
	public Params getUIParams(String nameFilter) {
104 70
		Params params = RasterLocator.getManager().createParams(
105 71
				"Panel", 
......
128 94
		return maskUI;
129 95
	}
130 96

  
131
	/*
132
	 * (non-Javadoc)
133
	 * @see org.gvsig.raster.grid.filter.RasterFilter#pre()
134
	 */
135 97
	@SuppressWarnings("unchecked")
136
	public void pre() {
137
		exec = true;
138
		raster = rasterResult;
139
		raster = (Buffer) params.get("raster");
98
	public void pre() throws FilterAddException {
99
		super.pre();
140 100
		Boolean inverseBoolean = (Boolean)params.get("inverse");
141 101
		if(inverseBoolean != null)
142 102
			inverse = inverseBoolean.booleanValue();
143
		Boolean transpBoolean = (Boolean)params.get("transparency");
144
								
103
		
145 104
		rois = (ArrayList<ROI>) params.get("rois");
146
		if (rois == null)
147
			rois = new ArrayList<ROI>();
148
		height = raster.getHeight();
149
		width = raster.getWidth();
150 105
		
151
		gridExtent = (GridExtent) environment.get("GridExtent");
152
		windowExtent = (GridExtent) environment.get("WindowExtent");
153
		dataset = (RasterDataStore) environment.get("MultiRasterDataset");
154
		cellsize = dataset.getCellSize();
106
		if(raster.getDataExtent() == null)
107
			throw new FilterAddException("Buffer extension cannot be null");
155 108
		
156
		rasterResult = RasterLocator.getManager().createBuffer(raster.getDataType(), 
157
															raster.getWidth(), 
158
															raster.getHeight(), 
159
															raster.getBandCount(), 
160
															true);
109
		bufferExtent = RasterLocator.getManager().getDataStructFactory().createExtent(raster.getDataExtent());
110
		cellsize = raster.getDataExtent().getWidth() / raster.getWidth();
161 111
		
162
		if(transpBoolean.booleanValue() && raster.getDataType() == Buffer.TYPE_BYTE) 
163
			rasterAlpha = RasterLocator.getManager().createBuffer(Buffer.TYPE_BYTE, raster.getWidth(), raster.getHeight(), 1, true);
112
		createBufferResult(raster.getDataType(), raster.getBandCount());
164 113
	}
165 114
		
166
	/*
167
	 * (non-Javadoc)
168
	 * @see org.gvsig.raster.grid.filter.RasterFilter#process(int, int)
169
	 */
170 115
	public void process(int x, int y) {
171 116
	}
172 117

  
173
	/*
174
	 * (non-Javadoc)
175
	 * @see org.gvsig.raster.grid.filter.RasterFilter#post()
176
	 */
177 118
	public void post() {
178 119
		rasterResult.setNoDataValue(noData);
179 120
	}

Also available in: Unified diff