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/MaskIntegerFilter.java

View differences:

MaskIntegerFilter.java
25 25

  
26 26
import org.gvsig.fmap.dal.coverage.RasterLibrary;
27 27
import org.gvsig.fmap.dal.coverage.datastruct.NoData;
28
import org.gvsig.fmap.dal.coverage.exception.FilterAddException;
28 29
import org.gvsig.raster.roi.ROI;
29 30

  
30 31
/**
......
33 34
 * de la ROI se ponen a NoData. Esta clase es la gestiona los datos para los
34 35
 * raster de tipo integer.
35 36
 * 
36
 * 14/03/2008
37 37
 * @author Nacho Brodin nachobrodin@gmail.com
38 38
 */
39 39
public class MaskIntegerFilter extends MaskFilter {
40 40
	private int nodata     = RasterLibrary.defaultIntegerNoDataValue;
41 41
	
42
	public void pre() {
42
	public void pre() throws FilterAddException {
43 43
		super.pre();
44 44
		noData = (NoData)params.get("nodata");
45 45
		if(noData != null && noData.isDefined())
46 46
			nodata = noData.getValue().intValue();
47 47
	}
48 48
	
49
	/*
50
	 * (non-Javadoc)
51
	 * @see org.gvsig.raster.filter.mask.MaskFilter#process(int, int)
52
	 */
53 49
	public void process(int x, int y) {
54
		if ((windowExtent == null) || (gridExtent == null))
50
		if(bufferExtent == null) {
51
			for (int j = 0; j < raster.getBandCount(); j++) 
52
				rasterResult.setElem(y, x, j, raster.getElemInt(y, x, j));
55 53
			return;
56
		double wcX = windowExtent.minX() + ((((double) x) * windowExtent.width()) / ((double) raster.getWidth()));
57
		double wcY = windowExtent.minY() + ((((double) (raster.getHeight() - (y))) * windowExtent.height()) / ((double) raster.getHeight()));
54
		}
55
		double wcX = bufferExtent.minX() + ((((double) x) * bufferExtent.width()) / ((double) raster.getWidth()));
56
		double wcY = bufferExtent.minY() + ((((double) (raster.getHeight() - (y))) * bufferExtent.height()) / ((double) raster.getHeight()));
58 57

  
59 58
		
60 59
		if(inverse) {
61 60
			for (int i = 0; i < rois.size(); i++) {
62 61
				if (((ROI) rois.get(i)).isInside(wcX, wcY, cellsize, cellsize)) {
63
					for (int j = 0; j < raster.getBandCount(); j++) 
62
					for (int j = 0; j < numberOfBandsToProcess(); j++) 
64 63
						rasterResult.setElem(y, x, j, (int)nodata);
65 64
					return;
66 65
				}
67 66
			}
68 67
			
69
			for (int j = 0; j < raster.getBandCount(); j++) 
68
			for (int j = 0; j < numberOfBandsToProcess(); j++) 
70 69
				rasterResult.setElem(y, x, j, raster.getElemInt(y, x, j));
70
			
71 71
			return;
72 72
		}
73 73
		
74 74
		for (int i = 0; i < rois.size(); i++) {
75 75
			if (((ROI) rois.get(i)).isInside(wcX, wcY, cellsize, cellsize)) {
76
				for (int j = 0; j < raster.getBandCount(); j++) 
76
				for (int j = 0; j < numberOfBandsToProcess(); j++) 
77 77
					rasterResult.setElem(y, x, j, raster.getElemInt(y, x, j));
78 78
				return;
79 79
			}
80 80
		}
81 81
		
82
		for (int j = 0; j < raster.getBandCount(); j++) 
82
		for (int j = 0; j < numberOfBandsToProcess(); j++) 
83 83
			rasterResult.setElem(y, x, j, (int)nodata);
84
		
84 85
		return;
85 86
	}
86 87
	
87
	/*
88
	 * (non-Javadoc)
89
	 * @see org.gvsig.raster.filter.mask.MaskFilter#getInRasterDataType()
90
	 */
91 88
	public int getInRasterDataType() {
92 89
		return DataBuffer.TYPE_INT;
93 90
	}
94 91
	
95
	/*
96
	 * (non-Javadoc)
97
	 * @see org.gvsig.raster.filter.mask.MaskFilter#getOutRasterDataType()
98
	 */
99 92
	public int getOutRasterDataType() { 
100 93
		return DataBuffer.TYPE_INT;
101 94
	}

Also available in: Unified diff