Revision 22578 trunk/extensions/extRasterTools-SE/src/org/gvsig/rastertools/vectorizacion/filter/GrayConversionProcess.java
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