Revision 22578 trunk/extensions/extRasterTools-SE/src/org/gvsig/rastertools/vectorizacion/filter/GrayConversionProcess.java

View differences:

GrayConversionProcess.java
26 26
import org.gvsig.raster.RasterLibrary;
27 27
import org.gvsig.raster.RasterProcess;
28 28
import org.gvsig.raster.beans.previewbase.ParamStruct;
29
import org.gvsig.raster.dataset.FileNotOpenException;
29 30
import org.gvsig.raster.dataset.Params;
31
import org.gvsig.raster.dataset.io.RasterDriverException;
30 32
import org.gvsig.raster.filter.grayscale.GrayScaleFilter;
31 33
import org.gvsig.raster.filter.grayscale.GrayScaleManager;
32 34
import org.gvsig.raster.grid.filter.FilterTypeException;
......
35 37
import org.gvsig.raster.grid.filter.RasterFilterListManager;
36 38
import org.gvsig.raster.grid.filter.correction.MedianFilter;
37 39
import org.gvsig.raster.grid.filter.correction.MedianListManager;
40
import org.gvsig.raster.grid.filter.correction.ModeFilter;
41
import org.gvsig.raster.grid.filter.correction.ModeManager;
42
import org.gvsig.raster.grid.filter.enhancement.EnhancementStretchListManager;
38 43
import org.gvsig.raster.grid.filter.enhancement.LinearStretchEnhancementFilter;
44
import org.gvsig.raster.grid.filter.enhancement.LinearStretchParams;
39 45
import org.gvsig.raster.util.RasterToolsUtil;
40 46
import org.gvsig.raster.util.process.FilterProcess;
41 47

  
......
58 64
	public GrayConversionProcess(IProcessActions endActions) {
59 65
		this.endActions = endActions;
60 66
	}
67

  
68
	/**
69
	 * Aplica el proceso de filtrado sobre una capa dando como resultado otra capa
70
	 * @throws FilterTypeException
71
	 */
72
	public void enhancedProcess(FLyrRasterSE lyr) throws FilterTypeException {
73
		if(lyr == null)
74
			return;
75

  
76
		RasterProcess filterProcess = new FilterProcess();
77
		filterProcess.setActions(this);
78
		filterProcess.addParam("rendering", lyr);
79
		String tempRaster = RasterLibrary.tempCacheDirectoryPath + File.separator + RasterLibrary.usesOnlyLayerName();
80
		filterProcess.addParam("filename", tempRaster + ".tif");
81
		filterProcess.addParam("rasterdatasource", lyr.getDataSource());
82
		
83
		RasterFilterList filterList = new RasterFilterList();
84
		filterList.setInitDataType(lyr.getDataType()[0]);
85
		RasterFilterListManager filterManager = new RasterFilterListManager(filterList);
86
		
87
		EnhancementStretchListManager elm = new EnhancementStretchListManager(filterManager);
88
		try {
89
			elm.addEnhancedStretchFilter(LinearStretchParams.createStandardParam(lyr.getRenderBands(), 0.0, lyr.getDataSource().getStatistics(), false), 
90
					lyr.getDataSource().getStatistics(), 
91
					lyr.getRenderBands(), 
92
					false);
93
		} catch (FileNotOpenException e) {
94
			throw new FilterTypeException(e.getMessage());
95
		} catch (RasterDriverException e) {
96
			throw new FilterTypeException(e.getMessage());
97
		}
98
		
99
		filterProcess.addParam("listfilterused", getParams(filterList));
100
		filterProcess.addParam("onlyrenderbands", Boolean.TRUE);
101
		filterProcess.start();
102
	}
61 103
	
62 104
	/**
63 105
	 * Aplica el proceso de filtrado sobre una capa dando como resultado otra capa
64 106
	 * @throws FilterTypeException
65 107
	 */
66
	public void filter(GrayConversionPreviewRender prevRender, GrayConversionData data ) throws FilterTypeException {
108
	public void grayScaleProcess(GrayConversionPreviewRender prevRender, GrayConversionData data ) throws FilterTypeException {
67 109
		if(sourceLayer == null)
68 110
			return;
69 111
		sourceLayer.setRenderBands(sourceLayer.getRenderBands());
......
85 127
	 * @return ArrayList
86 128
	 */
87 129
	public ArrayList getParamStruct(FLyrRasterSE lyr, GrayConversionPreviewRender prevRender, GrayConversionData data) {
88
		ArrayList listFilterUsed = new ArrayList();
89
		
90 130
		RasterFilterList filterList = new RasterFilterList();
91 131
		filterList.setInitDataType(lyr.getDataType()[0]);
92 132
		RasterFilterListManager filterManager = new RasterFilterListManager(filterList);
93 133
		GrayScaleManager managerGrayScale = new GrayScaleManager(filterManager);
94 134
		MedianListManager managerMedian = new MedianListManager(filterManager);
135
		ModeManager managerMode = new ModeManager(filterManager);
136
		
95 137
		try {
96
			/*if(lyr.getDataType()[0] != IBuffer.TYPE_BYTE) {
97
				EnhancementStretchListManager elm = new EnhancementStretchListManager(filterManager);
98
				try {
99
					elm.addEnhancedStretchFilter(LinearStretchParams.createStandardParam(lyr.getRenderBands(), 0.0, lyr.getDataSource().getStatistics(), false), 
100
												lyr.getDataSource().getStatistics(), 
101
												lyr.getRenderBands(), 
102
												false);
103
				} catch (FileNotOpenException e) {
104
					//No podemos aplicar el filtro
105
				} catch (RasterDriverException e) {
106
					//No podemos aplicar el filtro
107
				}
108
			}*/
109 138
			managerGrayScale.addGrayScaleFilter(data.getBandType());
110 139
		} catch (FilterTypeException e1) {
111 140
			RasterToolsUtil.messageBoxError(RasterToolsUtil.getText(null, "nograyscale"), null, e1);
112 141
		}
113 142
		
114 143
		try {
115
			//int[] oldRenderBands = lyr.getRenderBands();
116
			//lyr.setRenderBands(new int[]{0, 0, 0});
117 144
			prevRender.addPosterization(filterManager, lyr);
118
			//lyr.setRenderBands(oldRenderBands);
119 145
		} catch (FilterTypeException e1) {
120 146
			RasterToolsUtil.messageBoxError(RasterToolsUtil.getText(null, "noposterization"), null, e1);
121 147
		}
122 148
		
123 149
		try {
150
			if(data.isModeActive())
151
				managerMode.addModeFilter(data.getModeThreshold());
152
		} catch (FilterTypeException e1) {
153
			RasterToolsUtil.messageBoxError(RasterToolsUtil.getText(null, "nomedian"), null, e1);
154
		}
155
		
156
		try {
124 157
			if(data.isNoiseActive())
125 158
				managerMedian.addMedianFilter(data.getNoiseThreshold());
126 159
		} catch (FilterTypeException e1) {
127 160
			RasterToolsUtil.messageBoxError(RasterToolsUtil.getText(null, "nomedian"), null, e1);
128 161
		}
129
		
162
	
163
		return getParams(filterList);
164
	}
165
	
166
	/**
167
	 * A partir de una lista de filtros devuelve un array con sus par?metros
168
	 * @param filterList
169
	 * @return ArrayList
170
	 */
171
	public ArrayList getParams(RasterFilterList filterList) {
172
		ArrayList listFilterUsed = new ArrayList();
130 173
		for (int i = 0; i < filterList.lenght(); i++) {
131 174
			try {
132 175
				RasterFilter filter = (RasterFilter)filterList.get(i);
......
140 183
					c = LinearStretchEnhancementFilter.class;
141 184
				if(filter instanceof MedianFilter)
142 185
					c = MedianFilter.class;
186
				if(filter instanceof ModeFilter)
187
					c = ModeFilter.class;
143 188
				newParam.setFilterClass(c);
144 189
				newParam.setFilterName(filter.getName());
145 190
				newParam.setFilterParam(params);

Also available in: Unified diff