Revision 237
org.gvsig.raster.app/trunk/org.gvsig.raster.app/org.gvsig.raster.app.wmtsclient/src/main/java/org/gvsig/raster/app/extension/wmtsclient/gui/dialog/WMTSPropsDialog.java | ||
---|---|---|
36 | 36 |
import org.gvsig.app.gui.wizards.WizardListener; |
37 | 37 |
import org.gvsig.app.gui.wizards.WizardListenerSupport; |
38 | 38 |
import org.gvsig.fmap.dal.coverage.explorer.WMTSServerExplorer; |
39 |
import org.gvsig.fmap.mapcontext.MapContext; |
|
40 |
import org.gvsig.fmap.mapcontext.exceptions.LoadLayerException; |
|
39 | 41 |
import org.gvsig.fmap.mapcontext.layers.FLayer; |
42 |
import org.gvsig.fmap.mapcontext.layers.FLayers; |
|
43 |
import org.gvsig.fmap.mapcontrol.MapControl; |
|
40 | 44 |
import org.gvsig.gui.beans.buttonspanel.ButtonsPanel; |
45 |
import org.gvsig.gui.beans.buttonspanel.ButtonsPanelEvent; |
|
46 |
import org.gvsig.gui.beans.buttonspanel.ButtonsPanelListener; |
|
41 | 47 |
import org.gvsig.raster.app.extension.wmtsclient.gui.panel.WMTSParamsPanel; |
42 | 48 |
import org.gvsig.raster.app.extension.wmtsclient.layer.FLyrWMTS; |
43 | 49 |
import org.gvsig.raster.util.CancelTaskImpl; |
... | ... | |
50 | 56 |
* |
51 | 57 |
* @author Nacho Brodin (nachobrodin@gmail.com) |
52 | 58 |
*/ |
53 |
public class WMTSPropsDialog extends JPanel implements IWindow { |
|
59 |
public class WMTSPropsDialog extends JPanel implements IWindow, ButtonsPanelListener {
|
|
54 | 60 |
private static final long serialVersionUID = 1L; |
55 | 61 |
private FLyrWMTS fLayer = null; |
56 | 62 |
private WindowInfo m_ViewInfo = null; |
... | ... | |
97 | 103 |
public ButtonsPanel getButtonsPanel() { |
98 | 104 |
if(buttonsPanel == null) { |
99 | 105 |
buttonsPanel = new ButtonsPanel(ButtonsPanel.BUTTONS_ACCEPTCANCELAPPLY); |
106 |
buttonsPanel.addButtonPressedListener(this); |
|
100 | 107 |
} |
101 | 108 |
return buttonsPanel; |
102 | 109 |
} |
... | ... | |
129 | 136 |
* |
130 | 137 |
* @return WMSParamsPanel |
131 | 138 |
*/ |
132 |
@SuppressWarnings({ "unchecked", "deprecation" })
|
|
139 |
@SuppressWarnings({ "unchecked"}) |
|
133 | 140 |
public WMTSParamsPanel getParamsPanel(HashMap info) { |
134 | 141 |
if (info == null) { |
135 | 142 |
WMTSParamsPanel toc = new WMTSParamsPanel(); |
... | ... | |
162 | 169 |
toc.setListenerSupport(new WizardListenerSupport()); |
163 | 170 |
|
164 | 171 |
String selectedLayer = (String) info.get("selectedLayer"); |
165 |
toc.setLayerName(selectedLayer);
|
|
172 |
toc.setSelectedLayer(selectedLayer);
|
|
166 | 173 |
|
167 | 174 |
// srs |
168 | 175 |
String srs = (String) info.get("srs"); |
... | ... | |
185 | 192 |
toc.getInfoFormats().setSelectedIndex(index); |
186 | 193 |
} |
187 | 194 |
|
188 |
// styles |
|
189 |
/* Vector v = (Vector) info.get("styles"); |
|
190 |
if (v != null) { |
|
191 |
toc.setStyleSelections(v); |
|
192 |
}*/ |
|
193 |
|
|
194 | 195 |
toc.refreshInfo(); |
195 | 196 |
toc.refreshData(); |
196 | 197 |
return toc; |
... | ... | |
201 | 202 |
return null; |
202 | 203 |
} |
203 | 204 |
|
204 |
private class CommandListener implements ActionListener { |
|
205 |
@SuppressWarnings("unused") |
|
206 |
private class CommandListener implements ActionListener { |
|
205 | 207 |
|
206 | 208 |
/** |
207 | 209 |
* Creates a new ComandosListener object. |
... | ... | |
209 | 211 |
* @param lg DOCUMENT ME! |
210 | 212 |
*/ |
211 | 213 |
public CommandListener(WMTSPropsDialog tp) { |
212 |
//m_tp = tp; |
|
213 | 214 |
} |
214 | 215 |
|
215 | 216 |
/* (non-Javadoc) |
216 | 217 |
* @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent) |
217 | 218 |
*/ |
218 |
@SuppressWarnings({ "unchecked" }) |
|
219 | 219 |
public void actionPerformed(ActionEvent e) { |
220 |
/*if (e.getActionCommand() == "CANCEL") {
|
|
220 |
if (e.getActionCommand() == "CANCEL") { |
|
221 | 221 |
close(); |
222 | 222 |
} else { |
223 |
try { |
|
224 |
((FLyrWMTS) fLayer).setFullExtent(wmtsParamsTabbedPane.getLayersRectangle()); |
|
225 |
} catch (ProjectionLayerException ex) { |
|
226 |
ex.printStackTrace(); |
|
227 |
JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(), ex.getMessage()); |
|
228 |
return; |
|
229 |
} |
|
230 |
((FLyrWMTS) fLayer).getParameters().setImageFormat((String)wmtsParamsTabbedPane.getImageFormats().getSelectedValue()); |
|
231 |
((FLyrWMTS) fLayer).getParameters().setInfoFormat((String)wmtsParamsTabbedPane.getInfoFormats().getSelectedValue()); |
|
232 |
try { |
|
233 |
((FLyrWMTS) fLayer).getParameters().setSRS((String)wmtsParamsTabbedPane.getLstSRSs().getSelectedValue()); |
|
234 |
((FLyrWMTS) fLayer).getParameters().setTitle(wmtsParamsTabbedPane.getLayerName()); |
|
235 |
//((FLyrWMTS) fLayer).getParameters().setStyles(wmtsParamsTabbedPane.getStyles()); |
|
223 |
MapControl mapCtrl = null; |
|
236 | 224 |
|
237 |
//fLayer = wmsParamsTabbedPane.getLayer(); |
|
238 |
FLayers parent = ((FLayer)fLayer).getParentLayer(); |
|
239 |
|
|
240 |
if (e.getActionCommand() == "APPLY") { |
|
241 |
MapControl mapCtrl = null; |
|
242 |
|
|
243 |
IWindow[] w = PluginServices.getMDIManager().getAllWindows(); |
|
244 |
for (int i = 0; i < w.length; i++) { |
|
245 |
if (w[i] instanceof org.gvsig.app.project.documents.view.gui.DefaultViewPanel) { |
|
246 |
MapContext mapContext = ((org.gvsig.app.project.documents.view.gui.DefaultViewPanel)w[i]).getMapControl().getMapContext(); |
|
247 |
if(mapContext == fLayer.getMapContext()) |
|
248 |
mapCtrl = ((org.gvsig.app.project.documents.view.gui.DefaultViewPanel)w[i]).getMapControl(); |
|
249 |
} |
|
250 |
} |
|
251 |
|
|
252 |
mapCtrl.getMapContext().getLayers().replaceLayer( |
|
253 |
fLayer.getName(), |
|
254 |
wmtsParamsTabbedPane.getLayer()); |
|
255 |
mapCtrl.getMapContext().invalidate(); |
|
256 |
applied = true; |
|
257 |
getButtonsPanel().getButton(ButtonsPanel.BUTTON_APPLY).setEnabled(!applied); |
|
225 |
IWindow[] w = PluginServices.getMDIManager().getAllWindows(); |
|
226 |
for (int i = 0; i < w.length; i++) { |
|
227 |
if (w[i] instanceof org.gvsig.app.project.documents.view.gui.DefaultViewPanel) { |
|
228 |
MapContext mapContext = ((org.gvsig.app.project.documents.view.gui.DefaultViewPanel)w[i]).getMapControl().getMapContext(); |
|
229 |
if(mapContext == fLayer.getMapContext()) |
|
230 |
mapCtrl = ((org.gvsig.app.project.documents.view.gui.DefaultViewPanel)w[i]).getMapControl(); |
|
231 |
} |
|
232 |
} |
|
233 |
|
|
234 |
try { |
|
235 |
FLayer[] layerList = wmtsParamsTabbedPane.getLayers(); |
|
236 |
removeDuplicate(layerList, mapCtrl); |
|
237 |
for (int i = 0; i < layerList.length; i++) { |
|
238 |
mapCtrl.getMapContext().getLayers().addLayer(layerList[i]); |
|
258 | 239 |
} |
259 |
|
|
260 |
if (e.getActionCommand() == "OK") { |
|
261 |
if (!applied) { |
|
262 |
org.gvsig.app.project.documents.view.gui.DefaultViewPanel vista = (org.gvsig.app.project.documents.view.gui.DefaultViewPanel) PluginServices.getMDIManager().getActiveWindow(); |
|
263 |
MapControl mapCtrl = vista.getMapControl(); |
|
264 |
|
|
265 |
mapCtrl.getMapContext().getLayers().replaceLayer( |
|
266 |
fLayer.getName(), |
|
267 |
wmtsParamsTabbedPane.getLayer()); |
|
268 |
mapCtrl.getMapContext().invalidate(); |
|
269 |
} |
|
270 |
close(); |
|
271 |
} |
|
272 |
} catch (ConnectionErrorLayerException e1) { |
|
273 |
e1.printStackTrace(); |
|
274 |
} catch (DriverLayerException e1) { |
|
275 |
e1.printStackTrace(); |
|
276 |
} catch (LegendLayerException e1) { |
|
277 |
e1.printStackTrace(); |
|
278 |
} catch (NameLayerException e1) { |
|
279 |
e1.printStackTrace(); |
|
280 |
} catch (ProjectionLayerException e1) { |
|
281 |
e1.printStackTrace(); |
|
282 |
} catch (TypeLayerException e1) { |
|
283 |
e1.printStackTrace(); |
|
284 |
} catch (UnsupportedVersionLayerException e1) { |
|
285 |
e1.printStackTrace(); |
|
286 |
} catch (URLLayerException e1) { |
|
287 |
e1.printStackTrace(); |
|
288 |
} catch (LoadLayerException e1) { |
|
289 |
e1.printStackTrace(); |
|
240 |
mapCtrl.getMapContext().invalidate(); |
|
241 |
} catch (LoadLayerException exc) { |
|
242 |
exc.printStackTrace(); |
|
290 | 243 |
} |
291 |
}*/
|
|
244 |
} |
|
292 | 245 |
} |
293 | 246 |
} |
294 | 247 |
|
295 |
|
|
248 |
private void removeDuplicate(FLayer[] layerList, MapControl mapCtrl) { |
|
249 |
FLayers lyrs = mapCtrl.getMapContext().getLayers(); |
|
250 |
for (int i = 0; i < lyrs.getLayersCount(); i++) { |
|
251 |
FLayer lyr = lyrs.getLayer(i); |
|
252 |
for (int j = 0; j < layerList.length; j++) { |
|
253 |
if(lyr.getName().compareTo(layerList[j].getName()) == 0) { |
|
254 |
lyrs.removeLayer(lyr); |
|
255 |
} |
|
256 |
} |
|
257 |
} |
|
258 |
} |
|
259 |
|
|
260 |
|
|
296 | 261 |
public WindowInfo getWindowInfo() { |
297 | 262 |
if (m_ViewInfo == null) { |
298 | 263 |
m_ViewInfo = new WindowInfo(WindowInfo.MODALDIALOG | WindowInfo.RESIZABLE); |
... | ... | |
311 | 276 |
return WindowInfo.DIALOG_PROFILE; |
312 | 277 |
} |
313 | 278 |
|
279 |
public void actionButtonPressed(ButtonsPanelEvent e) { |
|
280 |
if( e.getButton() == ButtonsPanel.BUTTON_APPLY || |
|
281 |
e.getButton() == ButtonsPanel.BUTTON_ACCEPT) { |
|
282 |
MapControl mapCtrl = null; |
|
283 |
|
|
284 |
IWindow[] w = PluginServices.getMDIManager().getAllWindows(); |
|
285 |
for (int i = 0; i < w.length; i++) { |
|
286 |
if (w[i] instanceof org.gvsig.app.project.documents.view.gui.DefaultViewPanel) { |
|
287 |
MapContext mapContext = ((org.gvsig.app.project.documents.view.gui.DefaultViewPanel)w[i]).getMapControl().getMapContext(); |
|
288 |
if(mapContext == fLayer.getMapContext()) |
|
289 |
mapCtrl = ((org.gvsig.app.project.documents.view.gui.DefaultViewPanel)w[i]).getMapControl(); |
|
290 |
} |
|
291 |
} |
|
292 |
|
|
293 |
try { |
|
294 |
FLayer[] layerList = wmtsParamsTabbedPane.getLayers(); |
|
295 |
removeDuplicate(layerList, mapCtrl); |
|
296 |
for (int i = 0; i < layerList.length; i++) { |
|
297 |
mapCtrl.getMapContext().getLayers().addLayer(layerList[i]); |
|
298 |
} |
|
299 |
mapCtrl.getMapContext().invalidate(); |
|
300 |
} catch (LoadLayerException exc) { |
|
301 |
exc.printStackTrace(); |
|
302 |
} |
|
303 |
} |
|
304 |
|
|
305 |
if( e.getButton() == ButtonsPanel.BUTTON_CANCEL || |
|
306 |
e.getButton() == ButtonsPanel.BUTTON_ACCEPT) { |
|
307 |
close(); |
|
308 |
} |
|
309 |
} |
|
310 |
|
|
314 | 311 |
} // @jve:decl-index=0:visual-constraint="10,10" |
org.gvsig.raster.app/trunk/org.gvsig.raster.app/org.gvsig.raster.app.wmtsclient/src/main/java/org/gvsig/raster/app/extension/wmtsclient/gui/panel/WMTSParamsPanel.java | ||
---|---|---|
438 | 438 |
getLayerPanel().getJTxtNomCapa().setText(name); |
439 | 439 |
} |
440 | 440 |
|
441 |
public void setSelectedLayer(String name) { |
|
442 |
LayerTreeModel treeModel = (LayerTreeModel)getLayerPanel().getTreeLayers().getModel(); |
|
443 |
WMTSTheme theme = (WMTSTheme)treeModel.getNodeByName(name); |
|
444 |
|
|
445 |
JDnDListModel modelo = (JDnDListModel) getLayerPanel().getLstSelectedLayers().getModel(); |
|
446 |
modelo.addElement(0, new LayerUI(theme)); |
|
447 |
getLayerPanel().getLstSelectedLayers().setSelectedIndex(0); |
|
448 |
} |
|
449 |
|
|
441 | 450 |
/** |
442 | 451 |
* Returns the index of the CRS within the CRS list. |
443 | 452 |
* |
org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.main/src/test/java/org/gvsig/fmap/dal/coverage/dataset/TestBandList.java | ||
---|---|---|
46 | 46 |
bandList = new BandListImpl(); |
47 | 47 |
for (int i = 0; i < 5; i++) { |
48 | 48 |
try { |
49 |
DatasetBand band = new DatasetBandImpl("fileName", i, Buffer.TYPE_BYTE); |
|
49 |
DatasetBand band = new DatasetBandImpl("fileName", i, Buffer.TYPE_BYTE, 5);
|
|
50 | 50 |
bandList.addBand(band, i); |
51 | 51 |
} catch (BandNotFoundInListException ex) { |
52 | 52 |
// No a?adimos la banda |
org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.api/src/main/java/org/gvsig/fmap/dal/coverage/datastruct/DatasetBand.java | ||
---|---|---|
46 | 46 |
* @return bandas del RasterBuf |
47 | 47 |
*/ |
48 | 48 |
public int[] getBufferBandListToDraw(); |
49 |
|
|
50 |
/** |
|
51 |
* Obtiene las banda del RasterBuf sobre la que se pinta |
|
52 |
* este objeto banda |
|
53 |
* @return bandas del RasterBuf |
|
54 |
*/ |
|
55 |
public int[] getLocalBufferBandListToDraw(); |
|
49 | 56 |
|
50 | 57 |
|
51 |
|
|
52 | 58 |
/** |
53 | 59 |
* Dice si la banda se est? dibujando en el buffers de salida. |
54 | 60 |
* @return true si la banda se est? dibujando y false si no se est? haciendo |
org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.api/src/main/java/org/gvsig/fmap/dal/coverage/datastruct/BandList.java | ||
---|---|---|
159 | 159 |
public int[] getBufferBandToDraw(String fileName, int band); |
160 | 160 |
|
161 | 161 |
/** |
162 |
* A partir de un nombre de fichero y un n?mero de banda obtiene la banda o bandas del buffer de salida |
|
163 |
* donde se pinta. Esta llamada es igual a getBufferBandToDraw pero esta considera un buffer por cada |
|
164 |
* provider. Por ejemplo, si tenemos 3 providers de una banda cada uno el buffer de cada provider tendr? como |
|
165 |
* mucho una banda. En el caso anterior consideraria un buffer de 3 bandas |
|
166 |
* @param fileName Nombre de fichero |
|
167 |
* @param band N?mero de banda de la imagen |
|
168 |
* @return banda o bandas del buffer de salida donde se dibuja. |
|
169 |
*/ |
|
170 |
public int[] getLocalBufferBandToDraw(String fileName, int band); |
|
171 |
|
|
172 |
/** |
|
162 | 173 |
* Obtiene en un array de String la lista de nombres de ficheros |
163 | 174 |
* @return lista de nombres de los ficheros del GeoRasterMultiFile |
164 | 175 |
*/ |
org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.impl/src/main/java/org/gvsig/raster/impl/buffer/cache/CacheDataFromDriverServer.java | ||
---|---|---|
74 | 74 |
BandList bandList = new BandListImpl(); |
75 | 75 |
for(int i = 0; i < dataset.getBandCount();i++) { |
76 | 76 |
try { |
77 |
DatasetBand band = new DatasetBandImpl(dataset.getFName(), i, dataset.getDataType()[i]); |
|
77 |
DatasetBand band = new DatasetBandImpl(dataset.getFName(), i, dataset.getDataType()[i], dataset.getBandCount());
|
|
78 | 78 |
bandList.addBand(band, i); |
79 | 79 |
} catch(BandNotFoundInListException ex) { |
80 | 80 |
//No a?adimos la banda |
org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.impl/src/main/java/org/gvsig/raster/impl/buffer/cache/CacheDataServer.java | ||
---|---|---|
177 | 177 |
BandListImpl bandList = new BandListImpl(); |
178 | 178 |
for (int i = 0; i < grf.getBandCount(); i++) { |
179 | 179 |
try { |
180 |
DatasetBandImpl band = new DatasetBandImpl(grf.getFName(), i, grf.getDataType()[i]); |
|
180 |
DatasetBandImpl band = new DatasetBandImpl(grf.getFName(), i, grf.getDataType()[i], grf.getBandCount());
|
|
181 | 181 |
bandList.addBand(band, i); |
182 | 182 |
bandList.addDrawableBand(i, i); |
183 | 183 |
} catch (BandNotFoundInListException ex) { |
org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.impl/src/main/java/org/gvsig/raster/impl/store/DefaultMultiRasterStore.java | ||
---|---|---|
229 | 229 |
for(int i = 0; i < prov.getBandCount(); i++) |
230 | 230 |
try { |
231 | 231 |
int dataType = prov.getDataType()[i]; |
232 |
DatasetBand band = new DatasetBandImpl(prov.getFName(), i, dataType); |
|
232 |
DatasetBand band = new DatasetBandImpl(prov.getFName(), i, dataType, prov.getBandCount());
|
|
233 | 233 |
bandList.addBand(band, i); |
234 | 234 |
} catch(BandNotFoundInListException ex) { |
235 | 235 |
//No a?adimos la banda |
... | ... | |
325 | 325 |
* @param raster Buffer a inicializar |
326 | 326 |
* @param bandList Lista de bandas |
327 | 327 |
*/ |
328 |
@SuppressWarnings("unused") |
|
328 | 329 |
private void initBufferToNoData(Buffer raster, BandList bandList) { |
329 | 330 |
for(int i = 0; i < bandList.getDrawableBandsCount(); i++) |
330 | 331 |
switch(getDataType()[0]) { |
... | ... | |
345 | 346 |
* @param height Alto |
346 | 347 |
* @return Lista de buffers en el que cada uno corresponde a un dataset. |
347 | 348 |
*/ |
349 |
@SuppressWarnings("unused") |
|
348 | 350 |
private Buffer[] mallocBuffersDatasets(BandList bl, int width, int height) { |
349 | 351 |
Buffer[] buffers = new Buffer[getDataStoreCount()]; |
350 | 352 |
for(int i = 0; i < getDataStoreCount(); i++) { |
... | ... | |
373 | 375 |
* @param bandList Objeto que contiene la informaci?n de que bandas de los dataset se escriben sobre |
374 | 376 |
* que banda del buffer. |
375 | 377 |
*/ |
378 |
@SuppressWarnings("unused") |
|
376 | 379 |
private void mergeBuffers(Buffer b, Buffer[] bDataset, BandList bandList) { |
377 | 380 |
for(int iDataset = 0; iDataset < getDataStoreCount(); iDataset++){ //Ojo! Los datasets est?n en la misma posici?n que se han metido en mallocBuffersDatasets |
378 | 381 |
String name = getProvider(iDataset).getFName(); |
... | ... | |
455 | 458 |
} |
456 | 459 |
|
457 | 460 |
//Buffer RW |
458 |
|
|
459 | 461 |
Buffer raster = null; |
462 |
|
|
463 |
//Si hemos redondeado los pixeles de la petici?n (p1 y p2) por arriba y por abajo deberemos calcular un extent mayor |
|
464 |
//equivalente a los pixeles redondeados. |
|
465 |
Point2D wc1 = providers.get(0).rasterToWorld(new Point2D.Double(p1X, p1Y)); |
|
466 |
Point2D wc2 = providers.get(0).rasterToWorld(new Point2D.Double(p2X, p2Y)); |
|
467 |
|
|
460 | 468 |
if(forceToMemory) //Fuerza siempre buffer en memoria |
469 |
raster = DefaultRasterManager.getInstance().createMemoryBuffer(getDataType()[0], width, height, mallocNBands, true); |
|
470 |
else |
|
471 |
raster = DefaultRasterManager.getInstance().createBuffer(getDataType()[0], width, height, mallocNBands, true); |
|
472 |
|
|
473 |
for(int i = 0; i < getDataStoreCount(); i++) |
|
474 |
((DefaultRasterProvider)providers.get(i)).getWindowRaster(wc1.getX(), wc1.getY(), wc2.getX(), wc2.getY(), bandList, raster); |
|
475 |
|
|
476 |
|
|
477 |
//CASO 1: Solo un provider |
|
478 |
/*if(providers.size() == 1) { |
|
479 |
if(forceToMemory) //Fuerza siempre buffer en memoria |
|
480 |
raster = DefaultRasterManager.getInstance().createMemoryBuffer(getDataType()[0], width, height, mallocNBands, true); |
|
481 |
else |
|
482 |
raster = DefaultRasterManager.getInstance().createBuffer(getDataType()[0], width, height, mallocNBands, true); |
|
483 |
|
|
484 |
return ((DefaultRasterProvider)providers.get(0)).getWindowRaster(wc1.getX(), wc1.getY(), wc2.getX(), wc2.getY(), bandList, raster); |
|
485 |
} |
|
486 |
|
|
487 |
//CASO 2: Multiples providers |
|
488 |
|
|
489 |
if(forceToMemory) //Fuerza siempre buffer en memoria |
|
461 | 490 |
raster = DefaultRasterManager.getInstance().createMemoryBuffer(getDataType()[0], width, height, mallocNBands, false); |
462 | 491 |
else |
463 | 492 |
raster = DefaultRasterManager.getInstance().createBuffer(getDataType()[0], width, height, mallocNBands, false); |
... | ... | |
468 | 497 |
//Reservamos memoria para los buffers por dataset |
469 | 498 |
Buffer[] bufferDatasets = mallocBuffersDatasets(bandList, width, height); |
470 | 499 |
|
471 |
//Si hemos redondeado los pixeles de la petici?n (p1 y p2) por arriba y por abajo deberemos calcular un extent mayor |
|
472 |
//equivalente a los pixeles redondeados. |
|
473 |
Point2D wc1 = providers.get(0).rasterToWorld(new Point2D.Double(p1X, p1Y)); |
|
474 |
Point2D wc2 = providers.get(0).rasterToWorld(new Point2D.Double(p2X, p2Y)); |
|
475 | 500 |
for(int i = 0; i < getDataStoreCount(); i++) |
476 | 501 |
bufferDatasets[i] = ((DefaultRasterProvider)providers.get(i)).getWindowRaster(wc1.getX(), wc1.getY(), wc2.getX(), wc2.getY(), bandList, bufferDatasets[i]); |
477 | 502 |
|
... | ... | |
479 | 504 |
mergeBuffers(raster, bufferDatasets, bandList); |
480 | 505 |
|
481 | 506 |
for (int i = 0; i < bufferDatasets.length; i++) |
482 |
bufferDatasets[i].free(); |
|
507 |
bufferDatasets[i].free();*/
|
|
483 | 508 |
|
484 | 509 |
return raster; |
485 | 510 |
} |
... | ... | |
548 | 573 |
return rb; |
549 | 574 |
} |
550 | 575 |
} |
576 |
|
|
577 |
//Si hemos redondeado los pixeles de la petici?n (p1 y p2) por arriba y por abajo deberemos calcular un extent mayor |
|
578 |
//equivalente a los pixeles redondeados. |
|
579 |
Point2D wc1 = providers.get(0).rasterToWorld(new Point2D.Double(Math.floor(p1.getX()), Math.floor(p1.getY()))); |
|
580 |
Point2D wc2 = providers.get(0).rasterToWorld(new Point2D.Double(Math.ceil(p2.getX()), Math.ceil(p2.getY()))); |
|
551 | 581 |
|
552 | 582 |
//Buffer RW |
553 |
|
|
554 | 583 |
Buffer raster = null; |
584 |
|
|
555 | 585 |
if(forceToMemory) //Fuerza siempre buffer en memoria |
586 |
raster = DefaultRasterManager.getInstance().createMemoryBuffer(getDataType()[0], width, height, mallocNBands, true); |
|
587 |
else |
|
588 |
raster = DefaultRasterManager.getInstance().createBuffer(getDataType()[0], width, height, mallocNBands, true); |
|
589 |
|
|
590 |
if(!adjustToExtent) |
|
591 |
initBufferToNoData(raster, bandList); |
|
592 |
|
|
593 |
for(int i = 0; i < getDataStoreCount(); i++) |
|
594 |
((DefaultRasterProvider)providers.get(i)).getWindowRaster(wc1.getX(), wc1.getY(), Math.abs(wc2.getX() - wc1.getX()), Math.abs(wc2.getY() - wc1.getY()), bandList, raster, adjustToExtent); |
|
595 |
|
|
596 |
|
|
597 |
//CASO 1: Solo un provider |
|
598 |
/*if(providers.size() == 1) { |
|
599 |
if(forceToMemory) //Fuerza siempre buffer en memoria |
|
600 |
raster = DefaultRasterManager.getInstance().createMemoryBuffer(getDataType()[0], width, height, mallocNBands, true); |
|
601 |
else |
|
602 |
raster = DefaultRasterManager.getInstance().createBuffer(getDataType()[0], width, height, mallocNBands, true); |
|
603 |
return ((DefaultRasterProvider)providers.get(0)).getWindowRaster(wc1.getX(), wc1.getY(), Math.abs(wc2.getX() - wc1.getX()), Math.abs(wc2.getY() - wc1.getY()), bandList, raster, adjustToExtent); |
|
604 |
} |
|
605 |
|
|
606 |
//CASO 2: Multiples providers |
|
607 |
if(forceToMemory) //Fuerza siempre buffer en memoria |
|
556 | 608 |
raster = DefaultRasterManager.getInstance().createMemoryBuffer(getDataType()[0], width, height, mallocNBands, false); |
557 | 609 |
else |
558 | 610 |
raster = DefaultRasterManager.getInstance().createBuffer(getDataType()[0], width, height, mallocNBands, false); |
... | ... | |
568 | 620 |
//Reservamos memoria para los buffers por dataset |
569 | 621 |
Buffer[] bufferDatasets = mallocBuffersDatasets(bandList, width, height); |
570 | 622 |
|
571 |
//Si hemos redondeado los pixeles de la petici?n (p1 y p2) por arriba y por abajo deberemos calcular un extent mayor |
|
572 |
//equivalente a los pixeles redondeados. |
|
573 |
Point2D wc1 = providers.get(0).rasterToWorld(new Point2D.Double(Math.floor(p1.getX()), Math.floor(p1.getY()))); |
|
574 |
Point2D wc2 = providers.get(0).rasterToWorld(new Point2D.Double(Math.ceil(p2.getX()), Math.ceil(p2.getY()))); |
|
575 | 623 |
for(int i = 0; i < getDataStoreCount(); i++) |
576 | 624 |
bufferDatasets[i] = ((DefaultRasterProvider)providers.get(i)).getWindowRaster(wc1.getX(), wc1.getY(), Math.abs(wc2.getX() - wc1.getX()), Math.abs(wc2.getY() - wc1.getY()), bandList, bufferDatasets[i], adjustToExtent); |
577 | 625 |
//bufferDatasets[i] = ((RasterDataStore)files.get(i)).getWindowRaster(x, y, w, h, bandList, bufferDatasets[i], adjustToExtent); |
... | ... | |
580 | 628 |
mergeBuffers(raster, bufferDatasets, bandList); |
581 | 629 |
|
582 | 630 |
for (int i = 0; i < bufferDatasets.length; i++) |
583 |
bufferDatasets[i].free(); |
|
631 |
bufferDatasets[i].free();*/
|
|
584 | 632 |
|
585 | 633 |
return raster; |
586 | 634 |
} |
... | ... | |
678 | 726 |
} |
679 | 727 |
|
680 | 728 |
//Buffer RW |
681 |
|
|
682 | 729 |
Buffer raster = null; |
730 |
|
|
683 | 731 |
if(forceToMemory) //Fuerza siempre buffer en memoria |
732 |
raster = DefaultRasterManager.getInstance().createMemoryBuffer(getDataType()[0], bufWidth, bufHeight, mallocNBands, true); |
|
733 |
else |
|
734 |
raster = DefaultRasterManager.getInstance().createBuffer(getDataType()[0], bufWidth, bufHeight, mallocNBands, true); |
|
735 |
|
|
736 |
for(int i = 0; i < getDataStoreCount(); i++) |
|
737 |
((DefaultRasterProvider)providers.get(i)).getWindowRaster(ulx, uly, lrx, lry, bufWidth, bufHeight, bandList, raster, adjustToExtent); |
|
738 |
|
|
739 |
|
|
740 |
//CASO 1: Solo un provider |
|
741 |
/*if(providers.size() == 1) { |
|
742 |
if(forceToMemory) //Fuerza siempre buffer en memoria |
|
743 |
raster = DefaultRasterManager.getInstance().createMemoryBuffer(getDataType()[0], bufWidth, bufHeight, mallocNBands, true); |
|
744 |
else |
|
745 |
raster = DefaultRasterManager.getInstance().createBuffer(getDataType()[0], bufWidth, bufHeight, mallocNBands, true); |
|
746 |
return ((DefaultRasterProvider)providers.get(0)).getWindowRaster(ulx, uly, lrx, lry, bufWidth, bufHeight, bandList, raster, adjustToExtent); |
|
747 |
} |
|
748 |
|
|
749 |
//CASO 2: Multiples providers |
|
750 |
if(forceToMemory) //Fuerza siempre buffer en memoria |
|
684 | 751 |
raster = DefaultRasterManager.getInstance().createMemoryBuffer(getDataType()[0], bufWidth, bufHeight, mallocNBands, false); |
685 | 752 |
else |
686 | 753 |
raster = DefaultRasterManager.getInstance().createBuffer(getDataType()[0], bufWidth, bufHeight, mallocNBands, false); |
... | ... | |
702 | 769 |
mergeBuffers(raster, bufferDatasets, bandList); |
703 | 770 |
|
704 | 771 |
for (int i = 0; i < bufferDatasets.length; i++) |
705 |
bufferDatasets[i].free(); |
|
772 |
bufferDatasets[i].free();*/
|
|
706 | 773 |
|
707 | 774 |
return raster; |
708 | 775 |
} |
... | ... | |
735 | 802 |
} |
736 | 803 |
|
737 | 804 |
//Buffer RW |
738 |
|
|
739 | 805 |
Buffer raster = null; |
806 |
|
|
740 | 807 |
if(forceToMemory) //Fuerza siempre buffer en memoria |
808 |
raster = DefaultRasterManager.getInstance().createMemoryBuffer(getDataType()[0], w, h, bandList.getDrawableBandsCount(), true); |
|
809 |
else |
|
810 |
raster = DefaultRasterManager.getInstance().createBuffer(getDataType()[0], w, h, bandList.getDrawableBandsCount(), true); |
|
811 |
|
|
812 |
for(int i = 0; i < getDataStoreCount(); i++) |
|
813 |
((DefaultRasterProvider)providers.get(i)).getWindowRaster(x, y, w, h, bandList, raster); |
|
814 |
|
|
815 |
//CASO 1: Solo un provider |
|
816 |
/*if(providers.size() == 1) { |
|
817 |
if(forceToMemory) //Fuerza siempre buffer en memoria |
|
818 |
raster = DefaultRasterManager.getInstance().createMemoryBuffer(getDataType()[0], w, h, bandList.getDrawableBandsCount(), true); |
|
819 |
else |
|
820 |
raster = DefaultRasterManager.getInstance().createBuffer(getDataType()[0], w, h, bandList.getDrawableBandsCount(), true); |
|
821 |
return ((DefaultRasterProvider)providers.get(0)).getWindowRaster(x, y, w, h, bandList, raster); |
|
822 |
} |
|
823 |
|
|
824 |
//CASO 2: Multiples providers |
|
825 |
if(forceToMemory) //Fuerza siempre buffer en memoria |
|
741 | 826 |
raster = DefaultRasterManager.getInstance().createMemoryBuffer(getDataType()[0], w, h, bandList.getDrawableBandsCount(), false); |
742 | 827 |
else |
743 | 828 |
raster = DefaultRasterManager.getInstance().createBuffer(getDataType()[0], w, h, bandList.getDrawableBandsCount(), false); |
... | ... | |
754 | 839 |
mergeBuffers(raster, bufferDatasets, bandList); |
755 | 840 |
|
756 | 841 |
for (int i = 0; i < bufferDatasets.length; i++) |
757 |
bufferDatasets[i].free(); |
|
842 |
bufferDatasets[i].free();*/
|
|
758 | 843 |
|
759 | 844 |
return raster; |
760 | 845 |
} |
... | ... | |
786 | 871 |
} |
787 | 872 |
} |
788 | 873 |
|
874 |
//Buffer RW |
|
789 | 875 |
Buffer raster = null; |
876 |
|
|
790 | 877 |
if(forceToMemory) //Fuerza siempre buffer en memoria |
878 |
raster = DefaultRasterManager.getInstance().createMemoryBuffer(getDataType()[0], bufWidth, bufHeight, bandList.getDrawableBandsCount(), true); |
|
879 |
else |
|
880 |
raster = DefaultRasterManager.getInstance().createBuffer(getDataType()[0], bufWidth, bufHeight, bandList.getDrawableBandsCount(), true); |
|
881 |
|
|
882 |
for(int i = 0; i < getDataStoreCount(); i++) |
|
883 |
((DefaultRasterProvider)providers.get(i)).getWindowRaster(x, y, w, h, bufWidth, bufHeight, bandList, raster); |
|
884 |
|
|
885 |
|
|
886 |
//CASO 1: Solo un provider |
|
887 |
/*if(providers.size() == 1) { |
|
888 |
if(forceToMemory) //Fuerza siempre buffer en memoria |
|
889 |
raster = DefaultRasterManager.getInstance().createMemoryBuffer(getDataType()[0], bufWidth, bufHeight, bandList.getDrawableBandsCount(), true); |
|
890 |
else |
|
891 |
raster = DefaultRasterManager.getInstance().createBuffer(getDataType()[0], bufWidth, bufHeight, bandList.getDrawableBandsCount(), true); |
|
892 |
return ((DefaultRasterProvider)providers.get(0)).getWindowRaster(x, y, w, h, bufWidth, bufHeight, bandList, raster); |
|
893 |
} |
|
894 |
|
|
895 |
//CASO 2: Multiples providers |
|
896 |
if(forceToMemory) //Fuerza siempre buffer en memoria |
|
791 | 897 |
raster = DefaultRasterManager.getInstance().createMemoryBuffer(getDataType()[0], bufWidth, bufHeight, bandList.getDrawableBandsCount(), false); |
792 | 898 |
else |
793 | 899 |
raster = DefaultRasterManager.getInstance().createBuffer(getDataType()[0], bufWidth, bufHeight, bandList.getDrawableBandsCount(), false); |
... | ... | |
805 | 911 |
mergeBuffers(raster, bufferDatasets, bandList); |
806 | 912 |
|
807 | 913 |
for (int i = 0; i < bufferDatasets.length; i++) |
808 |
bufferDatasets[i].free(); |
|
914 |
bufferDatasets[i].free();*/
|
|
809 | 915 |
|
810 | 916 |
return raster; |
811 | 917 |
} |
org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.impl/src/main/java/org/gvsig/raster/impl/datastruct/DatasetBandImpl.java | ||
---|---|---|
33 | 33 |
*/ |
34 | 34 |
public class DatasetBandImpl implements DatasetBand { |
35 | 35 |
//Nombre del fichero al que pertenece la banda |
36 |
private String fileName = ""; |
|
36 |
private String fileName = "";
|
|
37 | 37 |
//Lista de nombre de otros ficheros que forman la banda. Esto es util para CompositeDataset que est? compuesto por un mosaico de ficheros. |
38 | 38 |
@SuppressWarnings("unchecked") |
39 |
private ArrayList additionalName = new ArrayList(); |
|
39 |
private ArrayList additionalName = new ArrayList();
|
|
40 | 40 |
//Posici?n en el fichero de la banda |
41 |
private int position = -1; |
|
41 |
private int position = -1;
|
|
42 | 42 |
//Tipo de dato de la banda |
43 |
private int dataType = Buffer.TYPE_BYTE; |
|
43 |
private int dataType = Buffer.TYPE_BYTE;
|
|
44 | 44 |
//lista de bandas del buffer donde se dibuja esta banda de imagen. Cada elemento |
45 | 45 |
//del vector es un n?mero que corresponde con el n?mero de banda del buffer donde se escribe esta |
46 | 46 |
private int[] rasterBufBandToDrawList = null; |
47 |
// |
|
48 |
private int nBandsInThisProvider = 0; |
|
47 | 49 |
|
48 |
public DatasetBandImpl(String f, int p, int dt){ |
|
50 |
public DatasetBandImpl(String f, int p, int dt, int nBands){
|
|
49 | 51 |
setFileName(f); |
50 | 52 |
setPosition(p); |
51 | 53 |
setDataType(dt); |
54 |
nBandsInThisProvider = nBands; |
|
52 | 55 |
} |
53 | 56 |
|
54 | 57 |
/* |
... | ... | |
56 | 59 |
* @see java.lang.Object#clone() |
57 | 60 |
*/ |
58 | 61 |
public Object clone() { |
59 |
DatasetBandImpl result = new DatasetBandImpl(fileName, position, dataType); |
|
62 |
DatasetBandImpl result = new DatasetBandImpl(fileName, position, dataType, nBandsInThisProvider);
|
|
60 | 63 |
if(rasterBufBandToDrawList != null) { |
61 | 64 |
int[] drawBands = new int[rasterBufBandToDrawList.length]; |
62 | 65 |
for (int i = 0; i < rasterBufBandToDrawList.length; i++) |
... | ... | |
86 | 89 |
public int[] getBufferBandListToDraw() { |
87 | 90 |
return rasterBufBandToDrawList; |
88 | 91 |
} |
89 |
|
|
90 | 92 |
|
93 |
/** |
|
94 |
* Obtiene las banda del RasterBuf sobre la que se pinta |
|
95 |
* este objeto banda |
|
96 |
* @return bandas del RasterBuf |
|
97 |
*/ |
|
98 |
public int[] getLocalBufferBandListToDraw() { |
|
99 |
return rasterBufBandToDrawList; |
|
100 |
} |
|
91 | 101 |
|
92 | 102 |
/** |
93 | 103 |
* Dice si la banda se est? dibujando en el buffers de salida. |
org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.impl/src/main/java/org/gvsig/raster/impl/datastruct/BandListImpl.java | ||
---|---|---|
129 | 129 |
* en la 3 la 0 y en la 4 la 2 de este GeoRasterFile. |
130 | 130 |
* @return lista de bandas a dibujar o un array de un elemento con valor -1. |
131 | 131 |
*/ |
132 |
public int[] bandsToDrawList(int nBandsDataImage){ |
|
132 |
public int[] bandsToDrawList(int nBandsDataImage) {
|
|
133 | 133 |
|
134 | 134 |
int[] bandsToRead = new int[nBandsDataImage]; |
135 | 135 |
for(int dataImageBand = 0;dataImageBand < nBandsDataImage;dataImageBand++) { |
... | ... | |
137 | 137 |
for(int band = 0;band < bands.size();band++) { |
138 | 138 |
if( ((DatasetBand)bands.get(band)) != null && |
139 | 139 |
((DatasetBand)bands.get(band)).getBufferBandListToDraw() != null) { |
140 |
for(int dest=0;dest<((DatasetBand)bands.get(band)).getBufferBandListToDraw().length;dest++){ |
|
140 |
for(int dest=0;dest<((DatasetBand)bands.get(band)).getBufferBandListToDraw().length;dest++) {
|
|
141 | 141 |
if(dataImageBand == ((DatasetBand)bands.get(band)).getBufferBandListToDraw()[dest]) |
142 | 142 |
bandsToRead[dataImageBand] = band; |
143 | 143 |
} |
... | ... | |
152 | 152 |
* Checkea si alguna banda de la lista se est?a dibujando en el buffer de salida. |
153 | 153 |
* @return true si alguna banda se est? dibujando y false si no |
154 | 154 |
*/ |
155 |
public boolean isDrawingAnyBand(){ |
|
156 |
for(int band = 0;band < bands.size();band++){ |
|
155 |
public boolean isDrawingAnyBand() {
|
|
156 |
for(int band = 0;band < bands.size();band++) {
|
|
157 | 157 |
if(((DatasetBand)bands.get(band)).isDrawing()) |
158 | 158 |
return true; |
159 | 159 |
} |
... | ... | |
168 | 168 |
* A?ade una banda a la lista. |
169 | 169 |
* @param b banda a a?adir. |
170 | 170 |
*/ |
171 |
public void addBand(DatasetBand b, int pos)throws BandNotFoundInListException{ |
|
171 |
public void addBand(DatasetBand b, int pos)throws BandNotFoundInListException {
|
|
172 | 172 |
bands.add(b); |
173 | 173 |
} |
174 | 174 |
|
... | ... | |
177 | 177 |
* actual. Si alguna banda ya existe no la a?ade y continua. |
178 | 178 |
* @param bl Lista de bandas |
179 | 179 |
*/ |
180 |
public void addBandList(BandList bl){ |
|
181 |
for(int i = 0; i < bl.getBandCount(); i++){ |
|
180 |
public void addBandList(BandList bl) {
|
|
181 |
for(int i = 0; i < bl.getBandCount(); i++) {
|
|
182 | 182 |
if(!findBand(bl.getBand(i))) |
183 | 183 |
bands.add(bl.getBand(i)); |
184 | 184 |
} |
... | ... | |
188 | 188 |
* ELimina todas las bandas que tienen un nombre determinado. |
189 | 189 |
* @param name Nombre de las bandas a eliminar |
190 | 190 |
*/ |
191 |
public void removeBands(String name){ |
|
192 |
for(int i = 0; i < getBandCount(); i++){ |
|
191 |
public void removeBands(String name) {
|
|
192 |
for(int i = 0; i < getBandCount(); i++) {
|
|
193 | 193 |
DatasetBand band = getBand(i); |
194 | 194 |
if(band.getFileName().equals(name)) |
195 | 195 |
bands.remove(i); |
... | ... | |
200 | 200 |
* Resetea la asignaci?n de dibujado de las bandas de la imagen |
201 | 201 |
* sobre el DataImage cuando se hace un update para esta banda. |
202 | 202 |
*/ |
203 |
public void clearDrawableBands(){ |
|
203 |
public void clearDrawableBands() {
|
|
204 | 204 |
drawableBands = null; |
205 | 205 |
for(int i = 0; i < getBandCount(); i++) |
206 | 206 |
((DatasetBand)bands.get(i)).clearDrawableBands(); |
... | ... | |
214 | 214 |
* @param posRasterBuf Posici?n del RasterBuf que queremos pintar. |
215 | 215 |
* @param imageBand Banda de la imagen que se pintar? |
216 | 216 |
*/ |
217 |
public void addDrawableBand(int posRasterBuf, int imageBand){ |
|
218 |
try{ |
|
217 |
public void addDrawableBand(int posRasterBuf, int imageBand) {
|
|
218 |
try {
|
|
219 | 219 |
((DatasetBand)bands.get(imageBand)).setPositionToDrawInBuffer(posRasterBuf); |
220 |
}catch(IndexOutOfBoundsException exc){
|
|
220 |
} catch(IndexOutOfBoundsException exc) {
|
|
221 | 221 |
//No hacemos nada simplemente no inserta la banda. |
222 | 222 |
} |
223 | 223 |
} |
... | ... | |
227 | 227 |
* alguna banda de este fichero cuando se llama a un updateBuffer. |
228 | 228 |
* @return N?mero de bandas. Cero en caso de no tener ninguna asignada. |
229 | 229 |
*/ |
230 |
public int getDrawableBandsCount(){ |
|
230 |
public int getDrawableBandsCount() {
|
|
231 | 231 |
int nbands = 0; |
232 | 232 |
for(int i = 0;i < bands.size();i++) { |
233 | 233 |
DatasetBand b = (DatasetBand)bands.get(i); |
... | ... | |
242 | 242 |
* @param i Posici?n de la banda a obtener. |
243 | 243 |
* @return Banda. |
244 | 244 |
*/ |
245 |
public DatasetBand getBand(int i){ |
|
245 |
public DatasetBand getBand(int i) {
|
|
246 | 246 |
if(i < 0 || i >= bands.size()) |
247 | 247 |
return null; |
248 | 248 |
return (DatasetBand)bands.get(i); |
... | ... | |
252 | 252 |
* Obtiene el n?mero de bandas. |
253 | 253 |
* @return entero con el n?mero de bandas. |
254 | 254 |
*/ |
255 |
public int getBandCount(){ |
|
255 |
public int getBandCount() {
|
|
256 | 256 |
return bands.size(); |
257 | 257 |
} |
258 | 258 |
|
259 |
/** |
|
260 |
* A partir de un nombre de fichero y un n?mero de banda obtiene la banda o bandas del buffer de salida |
|
261 |
* donde se pinta. |
|
262 |
* @param fileName Nombre de fichero |
|
263 |
* @param band N?mero de banda de la imagen |
|
264 |
* @return banda o bandas del buffer de salida donde se dibuja. |
|
259 |
/* |
|
260 |
* (non-Javadoc) |
|
261 |
* @see org.gvsig.fmap.dal.coverage.datastruct.BandList#getBufferBandToDraw(java.lang.String, int) |
|
265 | 262 |
*/ |
266 |
public int[] getBufferBandToDraw(String fileName, int band){ |
|
267 |
for(int i = 0; i < bands.size(); i++){ |
|
263 |
public int[] getBufferBandToDraw(String fileName, int band) {
|
|
264 |
for(int i = 0; i < bands.size(); i++) {
|
|
268 | 265 |
if(((DatasetBand)bands.get(i)).getFileName().equals(fileName)) |
269 | 266 |
if(((DatasetBand)bands.get(i)).getPosition() == band) |
270 | 267 |
return ((DatasetBand)bands.get(i)).getBufferBandListToDraw(); |
... | ... | |
272 | 269 |
int[] r = {-1}; |
273 | 270 |
return r; |
274 | 271 |
} |
272 |
|
|
273 |
/* |
|
274 |
* (non-Javadoc) |
|
275 |
* @see org.gvsig.fmap.dal.coverage.datastruct.BandList#getLocalBufferBandToDraw(java.lang.String, int) |
|
276 |
*/ |
|
277 |
public int[] getLocalBufferBandToDraw(String fileName, int band) { |
|
278 |
for(int i = 0; i < bands.size(); i++) { |
|
279 |
if(((DatasetBand)bands.get(i)).getFileName().equals(fileName)) |
|
280 |
if(((DatasetBand)bands.get(i)).getPosition() == band) |
|
281 |
return ((DatasetBand)bands.get(i)).getLocalBufferBandListToDraw(); |
|
282 |
} |
|
283 |
int[] r = {-1}; |
|
284 |
return r; |
|
285 |
} |
|
286 |
|
|
275 | 287 |
/** |
276 | 288 |
* Obtiene en un array de String la lista de nombres de ficheros |
277 | 289 |
* @return lista de nombres de los ficheros del GeoRasterMultiFile |
278 | 290 |
*/ |
279 |
public String[] getBandStringList(){ |
|
291 |
public String[] getBandStringList() {
|
|
280 | 292 |
String[] list = new String[bands.size()]; |
281 | 293 |
for(int i = 0; i < bands.size(); i++) |
282 | 294 |
list[i] = ((DatasetBand)bands.get(i)).getFileName(); |
... | ... | |
287 | 299 |
* Obtiene en un array de enteros con la lista de la posici?n de bandas |
288 | 300 |
* @return lista de la posici?n de bandas |
289 | 301 |
*/ |
290 |
public int[] getBandPositionList(){ |
|
302 |
public int[] getBandPositionList() {
|
|
291 | 303 |
int[] list = new int[bands.size()]; |
292 | 304 |
for(int i = 0; i < bands.size(); i++) |
293 | 305 |
list[i] = ((DatasetBand)bands.get(i)).getPosition(); |
... | ... | |
299 | 311 |
* de las bandas son igual por lo que devolver? el primero. |
300 | 312 |
* @return Entero que representa el tipo de datos de las bandas |
301 | 313 |
*/ |
302 |
public int getBandsDataType(){ |
|
314 |
public int getBandsDataType() {
|
|
303 | 315 |
if(bands.size() <= 0) |
304 | 316 |
return Buffer.TYPE_UNDEFINED; |
305 | 317 |
return ((DatasetBand)bands.get(0)).getDataType(); |
... | ... | |
310 | 322 |
* @param fileName Nombre del fichero |
311 | 323 |
* @return Posici?n del fichero o -1 si no existe. |
312 | 324 |
*/ |
313 |
public int getFileNumber(String fileName){ |
|
325 |
public int getFileNumber(String fileName) {
|
|
314 | 326 |
String aux = ""; |
315 | 327 |
int count = -1; |
316 |
for(int i = 0; i < bands.size(); i++){ |
|
317 |
if(((DatasetBand)bands.get(i)).getFileName().indexOf(aux) != 0){ |
|
328 |
for(int i = 0; i < bands.size(); i++) {
|
|
329 |
if(((DatasetBand)bands.get(i)).getFileName().indexOf(aux) != 0) {
|
|
318 | 330 |
count ++; |
319 | 331 |
aux = ((DatasetBand)bands.get(i)).getFileName(); |
320 | 332 |
} |
org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.impl/src/main/java/org/gvsig/raster/impl/grid/render/DefaultRender.java | ||
---|---|---|
105 | 105 |
* por el usuario de la renderizaci?n. |
106 | 106 |
*/ |
107 | 107 |
private int[] renderBands = { 0, 1, 2 }; |
108 |
/** |
|
109 |
* Tiene el comportamiento cuando se tiene un raster con una. Dice si en las |
|
110 |
* otras bandas a renderizar se replica la banda existente o se ponen a 0. |
|
111 |
*/ |
|
112 |
private boolean replicateBand = false; |
|
113 | 108 |
|
114 | 109 |
private ImageDrawer drawer = null; |
115 | 110 |
/** |
... | ... | |
373 | 368 |
query.setAreaOfInterest(adjustedRotedRequest.getULX(), adjustedRotedRequest.getULY(), adjustedRotedRequest.getLRX(), adjustedRotedRequest.getLRY(), (int)Math.round(widthImage), (int)Math.round(heightImage)); |
374 | 369 |
|
375 | 370 |
if (dataStore.getTransparency().getAlphaBandNumber() != -1) { |
376 |
query.setDrawableBands(new int[] { lastTransparency.getAlphaBandNumber(), -1, -1 });
|
|
371 |
query.setDrawableBands(new int[] { lastTransparency.getAlphaBandNumber()}); |
|
377 | 372 |
lastTransparency.setAlphaBand(dataStore.query(query)); |
378 | 373 |
} |
379 | 374 |
//query.setAreaOfInterest(adjustedRotedRequest.getULX(), adjustedRotedRequest.getULY(), adjustedRotedRequest.getLRX(), adjustedRotedRequest.getLRY(), (int)Math.round(widthImage), (int)Math.round(heightImage), this, 0); |
... | ... | |
403 | 398 |
drawer.setBuffer(lastRenderBuffer); // Buffer de datos a renderizar |
404 | 399 |
drawer.setStep(step); // Desplazamiento para supersampleo |
405 | 400 |
drawer.setBufferSize((int)Math.round(widthImage), (int)Math.round(heightImage)); // Ancho y alto del buffer |
406 |
Image geoImage = drawer.drawBufferOverImageObject(replicateBand, getRenderBands()); // Acci?n de renderizado
|
|
401 |
Image geoImage = drawer.drawBufferOverImageObject(); // Acci?n de renderizado |
|
407 | 402 |
|
408 | 403 |
// Borramos el buffer de transparencia para que siempre se tenga que regenerar. |
409 | 404 |
lastTransparency.setAlphaBand(null); |
... | ... | |
487 | 482 |
d.setBuffer(buf); |
488 | 483 |
d.setStep(null); |
489 | 484 |
d.setBufferSize(buf.getWidth(), buf.getHeight()); |
490 |
Image geoImage = d.drawBufferOverImageObject(replicateBand, getRenderBands());
|
|
485 |
Image geoImage = d.drawBufferOverImageObject(); |
|
491 | 486 |
|
492 | 487 |
AffineTransform at = new AffineTransform(); |
493 | 488 |
at.scale(1/scaleW, 1/scaleH); |
org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.impl/src/main/java/org/gvsig/raster/impl/grid/render/ImageDrawer.java | ||
---|---|---|
73 | 73 |
* @return java.awt.Image con el buffer dibujado. |
74 | 74 |
* @throws ProcessInterruptedException |
75 | 75 |
*/ |
76 |
public Image drawBufferOverImageObject(boolean replicateBand, int[] renderBands) throws ProcessInterruptedException {
|
|
76 |
public Image drawBufferOverImageObject() throws ProcessInterruptedException { |
|
77 | 77 |
if (rasterBuf == null || width == 0 || height == 0) |
78 | 78 |
return null; |
79 | 79 |
|
... | ... | |
108 | 108 |
} catch (OutOfMemoryError error) { // Temporal para la traza de un error |
109 | 109 |
// aleatorio |
110 | 110 |
LoggerFactory.getLogger(this.getClass()).debug( |
111 |
"Buffer: " + width + " " + height + " RenderBands: " |
|
112 |
+ renderBands, error); |
|
111 |
"Buffer: " + width + " " + height , error); |
|
113 | 112 |
} |
114 | 113 |
return null; |
115 | 114 |
} |
org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.io/org.gvsig.raster.io.base/src/main/java/org/gvsig/fmap/dal/coverage/dataset/io/wmts/WMTSProvider.java | ||
---|---|---|
375 | 375 |
* @see org.gvsig.raster.impl.provider.DefaultRasterProvider#getTransparency() |
376 | 376 |
*/ |
377 | 377 |
public Transparency getTransparency() { |
378 |
if(lastFileTransparency == null) |
|
378 |
if(lastFileTransparency == null) {
|
|
379 | 379 |
lastFileTransparency = new DataStoreTransparency(); |
380 |
lastFileTransparency.setTransparencyBand(3); |
|
381 |
} |
|
380 | 382 |
return lastFileTransparency; |
381 | 383 |
} |
382 | 384 |
|
... | ... | |
661 | 663 |
buf.setDataExtent(new Rectangle2D.Double(Math.min(tile.ulx, tile.lrx), Math.min(tile.uly, tile.lry), Math.abs(tile.ulx - tile.lrx), Math.abs(tile.uly - tile.lry))); |
662 | 664 |
|
663 | 665 |
Buffer alphaBand = null; |
664 |
if(p.getAlphaBand() != -1 && listener != null) { |
|
666 |
if(p.getAlphaBand() != -1 && listener != null && p.getAlphaBand() < bandCount) {
|
|
665 | 667 |
alphaBand = DefaultRasterManager.getInstance().createBuffer(getDataType()[0], tile.wPx, tile.hPx, 1, true); |
666 | 668 |
int[] oldDB = bandList.getDrawableBands(); |
667 | 669 |
bandList.setDrawableBands(new int[]{p.getAlphaBand()}); |
org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.io/org.gvsig.raster.io.base/src/main/java/org/gvsig/fmap/dal/coverage/dataset/io/GdalNative.java | ||
---|---|---|
747 | 747 |
if(gdalBands.length == 0) |
748 | 748 |
return; |
749 | 749 |
|
750 |
selectGdalBands(buf.getBandCount());
|
|
750 |
selectGdalBands(/*buf.getBandCount()*/getRasterCount());
|
|
751 | 751 |
|
752 | 752 |
int x = (int) Math.round(Math.min(tl.getX(), br.getX())); |
753 | 753 |
int y = (int) Math.round(Math.min(tl.getY(), br.getY())); |
... | ... | |
817 | 817 |
if(gdalBands.length == 0) |
818 | 818 |
return; |
819 | 819 |
|
820 |
selectGdalBands(buf.getBandCount());
|
|
820 |
selectGdalBands(/*buf.getBandCount()*/getRasterCount());
|
|
821 | 821 |
|
822 | 822 |
int x = (int) Math.min(tl.getX(), br.getX()); |
823 | 823 |
int y = (int) Math.min(tl.getY(), br.getY()); |
... | ... | |
999 | 999 |
for (int line = stepBuffer[1]; line < stepBuffer[3]/*buf.getHeight()*/; line++) { |
1000 | 1000 |
pos = (int)((bufWidth * (line - stepBuffer[0])) + init); |
1001 | 1001 |
for (int col = stepBuffer[0]; col < stepBuffer[2]/*buf.getWidth()*/; col ++) { |
1002 |
//for (int i = 0; i < drawableBands.length; i++)
|
|
1003 |
buf.setElem(line, col, iBand/*drawableBands[i]*/, gdalBuf.buffByte[pos]);
|
|
1002 |
for (int i = 0; i < drawableBands.length; i++) |
|
1003 |
buf.setElem(line, col, drawableBands[i], gdalBuf.buffByte[pos]);
|
|
1004 | 1004 |
pos ++; |
1005 | 1005 |
} |
1006 | 1006 |
if(task.getEvent() != null) |
... | ... | |
1010 | 1010 |
for (int line = stepBuffer[1]; line < stepBuffer[3]; line++) { |
1011 | 1011 |
pos = (int)((bufWidth * (line - stepBuffer[0])) + init); |
1012 | 1012 |
for (int col = stepBuffer[0]; col < stepBuffer[2]; col ++) { |
1013 |
//for (int i = 0; i < drawableBands.length; i++)
|
|
1014 |
buf.setElem(line, col, iBand/*drawableBands[i]*/, gdalBuf.buffShort[pos]);
|
|
1013 |
for (int i = 0; i < drawableBands.length; i++) |
|
1014 |
buf.setElem(line, col, drawableBands[i], gdalBuf.buffShort[pos]);
|
|
1015 | 1015 |
pos ++; |
1016 | 1016 |
} |
1017 | 1017 |
if(task.getEvent() != null) |
... | ... | |
1021 | 1021 |
for (int line = stepBuffer[1]; line < stepBuffer[3]; line++) { |
1022 | 1022 |
pos = (int)((bufWidth * (line - stepBuffer[0])) + init); |
1023 | 1023 |
for (int col = stepBuffer[0]; col < stepBuffer[2]; col ++) { |
1024 |
//for (int i = 0; i < drawableBands.length; i++)
|
|
1025 |
buf.setElem(line, col, iBand/*drawableBands[i]*/, gdalBuf.buffInt[pos]);
|
|
1024 |
for (int i = 0; i < drawableBands.length; i++) |
|
1025 |
buf.setElem(line, col, drawableBands[i], gdalBuf.buffInt[pos]);
|
|
1026 | 1026 |
pos ++; |
1027 | 1027 |
} |
1028 | 1028 |
if(task.getEvent() != null) |
... | ... | |
1032 | 1032 |
for (int line = stepBuffer[1]; line < stepBuffer[3]; line++) { |
1033 | 1033 |
pos = (int)((bufWidth * (line - stepBuffer[0])) + init); |
1034 | 1034 |
for (int col = stepBuffer[0]; col < stepBuffer[2]; col ++) { |
1035 |
//for (int i = 0; i < drawableBands.length; i++)
|
|
1036 |
buf.setElem(line, col, iBand/*drawableBands[i]*/, gdalBuf.buffFloat[pos]);
|
|
1035 |
for (int i = 0; i < drawableBands.length; i++) |
|
1036 |
buf.setElem(line, col, drawableBands[i], gdalBuf.buffFloat[pos]);
|
|
1037 | 1037 |
pos ++; |
1038 | 1038 |
} |
1039 | 1039 |
if(task.getEvent() != null) |
... | ... | |
1043 | 1043 |
for (int line = stepBuffer[1]; line < stepBuffer[3]; line++) { |
1044 | 1044 |
pos = (int)((bufWidth * (line - stepBuffer[0])) + init); |
1045 | 1045 |
for (int col = stepBuffer[0]; col < stepBuffer[2]; col ++) { |
1046 |
//for (int i = 0; i < drawableBands.length; i++)
|
|
1047 |
buf.setElem(line, col, iBand/*drawableBands[i]*/, gdalBuf.buffDouble[pos]);
|
|
1046 |
for (int i = 0; i < drawableBands.length; i++) |
|
1047 |
buf.setElem(line, col, drawableBands[i], gdalBuf.buffDouble[pos]);
|
|
1048 | 1048 |
pos ++; |
1049 | 1049 |
} |
1050 | 1050 |
if(task.getEvent() != null) |
org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.io/org.gvsig.raster.io.base/src/main/java/org/gvsig/fmap/dal/coverage/dataset/io/ErmapperProvider.java | ||
---|---|---|
456 | 456 |
private void loadBuffer(Extent selectedExtent, int bufWidth, int bufHeight, Buffer rasterBuf, BandList bandList, int[] stpBuffer) throws ProcessInterruptedException, RasterDriverException { |
457 | 457 |
try{ |
458 | 458 |
RasterTask task = RasterTaskQueue.get(Thread.currentThread().toString()); |
459 |
|
|
460 |
//Leemos el raster desde la librer?a |
|
461 |
|
|
462 |
//Extent ext = getExtent();//new Extent(file.originX, file.originY, file.originX + (file.width * file.cellIncrementX), file.originY + (file.height * file.cellIncrementY)); |
|
463 |
//selectedExtent = RasterUtilities.calculateAdjustedView(selectedExtent, ext); |
|
464 |
//selectedExtent = RasterUtilities.calculateAdjustedView(selectedExtent, this.getAffineTransform(), new Dimension(file.width, file.height)); |
|
459 |
|
|
465 | 460 |
int[] readBandsFromECW = new int[Math.max(file.numBands, 3)]; |
466 |
int[] readBands = new int[Math.max(file.numBands, 3)]; |
|
467 |
|
|
468 |
|
|
469 |
for(int i = 0; i < readBandsFromECW.length; i ++) |
|
470 |
readBands[i] = -1; |
|
471 |
int cont = 0; |
|
472 |
for(int i = 0; i < file.numBands; i++) { |
|
473 |
int[] bandsToDraw = bandList.getBand(i).getBufferBandListToDraw(); |
|
474 |
if(bandsToDraw != null) { |
|
475 |
for(int j = 0; j < bandsToDraw.length; j++){ |
|
476 |
readBandsFromECW[cont] = i; |
|
477 |
readBands[cont] = i; |
|
478 |
cont ++; |
|
479 |
} |
|
480 |
} |
|
481 |
|
|
461 |
|
|
462 |
for(int i = 0; i < readBandsFromECW.length; i ++) { |
|
463 |
readBandsFromECW[i] = i; |
|
482 | 464 |
} |
483 | 465 |
|
484 | 466 |
if(task.getEvent() != null) |
485 | 467 |
task.manageEvent(task.getEvent()); |
486 | 468 |
|
487 |
//Si el ancho y alto pedido no coincide con el estimado es que se intenta resamplear. |
|
488 |
//Otros drivers soportan el resampleo pero no es el caso. Hay que hacer la petici?n y luego remuestrear. |
|
489 |
|
|
490 |
/*if((selectedExtent.width()/file.cellIncrementX) || (selectedExtent.height()/file.cellIncrementY)) { |
|
491 |
|
|
492 |
}*/ |
|
493 |
|
|
494 |
if(bufWidth > Math.round(Math.abs(selectedExtent.width()/file.cellIncrementX))) |
|
495 |
bufWidth = (int)Math.round(Math.abs(selectedExtent.width()/file.cellIncrementX)); |
|
496 |
if(bufHeight > Math.round(Math.abs(selectedExtent.height()/file.cellIncrementY))) |
|
497 |
bufHeight = (int)Math.round(Math.abs(selectedExtent.height()/file.cellIncrementY)); |
|
469 |
if(bufWidth > Math.round(Math.abs(selectedExtent.width() / file.cellIncrementX))) |
|
470 |
bufWidth = (int)Math.round(Math.abs(selectedExtent.width() / file.cellIncrementX)); |
|
471 |
if(bufHeight > Math.round(Math.abs(selectedExtent.height() / file.cellIncrementY))) |
|
472 |
bufHeight = (int)Math.round(Math.abs(selectedExtent.height() / file.cellIncrementY)); |
|
498 | 473 |
file.setView(file.numBands, readBandsFromECW, selectedExtent.minX(), selectedExtent.maxY(), selectedExtent.maxX(), selectedExtent.minY(), bufWidth, bufHeight); |
499 | 474 |
|
500 | 475 |
//Escribimos el raster sobre un Buffer |
501 | 476 |
int[] pRGBArray = new int[bufWidth]; |
502 |
drawRGB(rasterBuf, pRGBArray, readBandsFromECW, bandList, task);
|
|
477 |
drawRGB2(rasterBuf, pRGBArray, bandList, task);
|
|
503 | 478 |
|
504 | 479 |
}catch(JNCSInvalidSetViewException exc){ |
505 | 480 |
throw new RasterDriverException("Error setting coords"); |
... | ... | |
510 | 485 |
} |
511 | 486 |
|
512 | 487 |
} |
488 |
|
|
489 |
private void drawRGB2(Buffer rasterBuf, int[] pRGBArray, BandList bandList, RasterTask task) throws JNCSException, ProcessInterruptedException { |
|
490 |
int[] drawableBands = null; |
|
491 |
|
|
492 |
for (int line = 0; line < rasterBuf.getHeight(); line++) { |
|
493 |
try { |
|
494 |
file.readLineRGBA(pRGBArray); |
|
495 |
for(int col = 0; col < pRGBArray.length; col ++) { |
|
496 |
drawableBands = bandList.getBufferBandToDraw(getFName(), 0); |
|
497 |
if(drawableBands != null) { |
|
498 |
for (int i = 0; i < drawableBands.length; i++) { |
|
499 |
rasterBuf.setElem(line, col, drawableBands[i], (byte)((pRGBArray[col] & 0x00ff0000) >> 16)); |
|
500 |
} |
|
501 |
} |
|
502 |
drawableBands = bandList.getBufferBandToDraw(getFName(), 1); |
|
503 |
if(drawableBands != null) { |
|
504 |
for (int i = 0; i < drawableBands.length; i++) { |
|
505 |
rasterBuf.setElem(line, col, drawableBands[i], (byte)((pRGBArray[col] & 0x0000ff00) >> 8)); |
|
506 |
} |
|
507 |
} |
|
508 |
drawableBands = bandList.getBufferBandToDraw(getFName(), 2); |
|
509 |
if(drawableBands != null) { |
|
510 |
for (int i = 0; i < drawableBands.length; i++) { |
|
511 |
rasterBuf.setElem(line, col, drawableBands[i], (byte)(pRGBArray[col] & 0x000000ff)); |
|
512 |
} |
|
513 |
} |
|
514 |
} |
|
515 |
} catch (JNCSException exc) { |
|
516 |
} |
|
517 |
if(task.getEvent() != null) |
|
518 |
task.manageEvent(task.getEvent()); |
|
519 |
} |
|
520 |
return; |
|
521 |
} |
|
513 | 522 |
|
514 |
|
|
523 |
@SuppressWarnings("unused") |
|
515 | 524 |
private void drawRGB(Buffer rasterBuf, int[] pRGBArray, int[] readBands, BandList bandList, RasterTask task) throws JNCSException, ProcessInterruptedException { |
516 | 525 |
int bandR = readBands[0]; |
517 | 526 |
int bandG = (readBands.length > 1) ? readBands[1] : -1; |
... | ... | |
534 | 543 |
for (int line = 0; line < rasterBuf.getHeight(); line++) { |
535 | 544 |
try { |
536 | 545 |
file.readLineRGBA(pRGBArray); |
537 |
for(int col = 0; col < pRGBArray.length; col ++){ |
|
546 |
for(int col = 0; col < pRGBArray.length; col ++) {
|
|
538 | 547 |
rasterBuf.setElem(line, col, bandR, (byte)((pRGBArray[col] & 0x00ff0000) >> 16)); |
539 | 548 |
rasterBuf.setElem(line, col, bandG, (byte)((pRGBArray[col] & 0x00ff0000) >> 16)); |
540 | 549 |
rasterBuf.setElem(line, col, bandB, (byte)((pRGBArray[col] & 0x00ff0000) >> 16)); |
... | ... | |
548 | 557 |
for (int line = 0; line < rasterBuf.getHeight(); line++) { |
549 | 558 |
try { |
550 | 559 |
file.readLineRGBA(pRGBArray); |
551 |
for(int col = 0; col < pRGBArray.length; col ++){ |
|
560 |
for(int col = 0; col < pRGBArray.length; col ++) {
|
|
552 | 561 |
rasterBuf.setElem(line, col, bandR, (byte)((pRGBArray[col] & 0x0000ff00) >> 8)); |
553 | 562 |
rasterBuf.setElem(line, col, bandG, (byte)((pRGBArray[col] & 0x0000ff00) >> 8)); |
554 | 563 |
rasterBuf.setElem(line, col, bandB, (byte)((pRGBArray[col] & 0x0000ff00) >> 8)); |
... | ... | |
562 | 571 |
for (int line = 0; line < rasterBuf.getHeight(); line++) { |
563 | 572 |
try { |
564 | 573 |
file.readLineRGBA(pRGBArray); |
565 |
for(int col = 0; col < pRGBArray.length; col ++){ |
|
574 |
for(int col = 0; col < pRGBArray.length; col ++) {
|
|
566 | 575 |
rasterBuf.setElem(line, col, bandR, (byte)(pRGBArray[col] & 0x000000ff)); |
567 | 576 |
rasterBuf.setElem(line, col, bandG, (byte)(pRGBArray[col] & 0x000000ff)); |
568 | 577 |
rasterBuf.setElem(line, col, bandB, (byte)(pRGBArray[col] & 0x000000ff)); |
... | ... | |
584 | 593 |
for (int line = 0; line < rasterBuf.getHeight(); line++) { |
585 | 594 |
try { |
586 | 595 |
file.readLineRGBA(pRGBArray); |
587 |
for(int col = 0; col < pRGBArray.length; col ++){ |
|
596 |
for(int col = 0; col < pRGBArray.length; col ++) {
|
|
588 | 597 |
rasterBuf.setElem(line, col, bandR, (byte)((pRGBArray[col] & 0x00ff0000) >> 16)); |
589 | 598 |
rasterBuf.setElem(line, col, bandG, (byte)((pRGBArray[col] & 0x0000ff00) >> 8)); |
590 | 599 |
rasterBuf.setElem(line, col, bandB, (byte)(pRGBArray[col] & 0x000000ff)); |
... | ... | |
602 | 611 |
for (int line = 0; line < rasterBuf.getHeight(); line++) { |
603 | 612 |
try { |
604 | 613 |
file.readLineRGBA(pRGBArray); |
605 |
for(int col = 0; col < pRGBArray.length; col ++){ |
|
614 |
for(int col = 0; col < pRGBArray.length; col ++) {
|
|
606 | 615 |
rasterBuf.setElem(line, col, bandR, (byte)((pRGBArray[col] & 0x00ff0000) >> 16)); |
607 | 616 |
rasterBuf.setElem(line, col, bandG, (byte)((pRGBArray[col] & 0x0000ff00) >> 8)); |
608 | 617 |
} |
... | ... | |
657 | 666 |
if(file.numBands <= 3) { |
658 | 667 |
for(int i = 0; i < file.numBands; i++) |
659 | 668 |
readBandsFromECW[i] = i; |
660 |
}else { |
|
669 |
} else {
|
|
661 | 670 |
readBandsFromECW[0] = band; |
662 | 671 |
} |
663 | 672 |
|
org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.io/org.gvsig.raster.io.base/src/main/java/org/gvsig/fmap/dal/coverage/dataset/io/wms/WMSProvider.java | ||
---|---|---|
428 | 428 |
BandList bandList = new BandListImpl(); |
429 | 429 |
for (int i = 0; i < 3; i++) { |
430 | 430 |
try { |
431 |
bandList.addBand(new DatasetBandImpl(lastFile.getPath(), pos, Buffer.TYPE_BYTE), pos); |
|
431 |
bandList.addBand(new DatasetBandImpl(lastFile.getPath(), pos, Buffer.TYPE_BYTE, 3), pos);
|
|
432 | 432 |
} catch (BandNotFoundInListException e1) { |
433 | 433 |
} |
434 | 434 |
} |
org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.io/org.gvsig.raster.io.base/src/main/java/org/gvsig/fmap/dal/coverage/dataset/io/MrSidProvider.java | ||
---|---|---|
293 | 293 |
|
294 | 294 |
try { |
295 | 295 |
file.readScene(pRGBArray, task); |
296 |
int wBuf = rasterBuf.getWidth(); |
|
297 |
for (int row = 0; row < rasterBuf.getHeight(); row++) { |
|
298 |
for (int col = 0; col < wBuf; col++) { |
|
299 |
rasterBuf.setElem(row, col, 0, (byte) ((pRGBArray[(row * wBuf) + col] & 0x00ff0000) >> 16)); |
|
300 |
rasterBuf.setElem(row, col, 1, (byte) ((pRGBArray[(row * wBuf) + col] & 0x0000ff00) >> 8)); |
|
301 |
rasterBuf.setElem(row, col, 2, (byte) (pRGBArray[(row * wBuf) + col] & 0x000000ff)); |
|
302 |
} |
|
303 |
if (task.getEvent() != null) |
|
304 |
task.manageEvent(task.getEvent()); |
|
305 |
} |
|
296 |
loadBuffer(rasterBuf.getHeight(), rasterBuf.getWidth(), bandList, rasterBuf, pRGBArray); |
|
306 | 297 |
} catch (MrSIDException e) { |
307 | 298 |
throw new RasterDriverException("Error reading data"); |
308 | 299 |
} |
... | ... | |
347 | 338 |
|
348 | 339 |
try { |
349 | 340 |
file.readScene(pRGBArray, task); |
350 |
int wBuf = rasterBuf.getWidth(); |
|
351 |
for (int row = 0; row < rasterBuf.getHeight(); row++) { |
|
352 |
for (int col = 0; col < wBuf; col++) { |
|
353 |
rasterBuf.setElem(row, col, 0, (byte) ((pRGBArray[(row * wBuf) + col] & 0x00ff0000) >> 16)); |
|
354 |
rasterBuf.setElem(row, col, 1, (byte) ((pRGBArray[(row * wBuf) + col] & 0x0000ff00) >> 8)); |
|
355 |
rasterBuf.setElem(row, col, 2, (byte) (pRGBArray[(row * wBuf) + col] & 0x000000ff)); |
|
356 |
} |
|
357 |
if (task.getEvent() != null) |
|
358 |
task.manageEvent(task.getEvent()); |
|
359 |
} |
|
341 |
loadBuffer(rasterBuf.getHeight(), rasterBuf.getWidth(), bandList, rasterBuf, pRGBArray); |
|
360 | 342 |
} catch (MrSIDException e) { |
361 | 343 |
throw new RasterDriverException("Error reading data"); |
362 | 344 |
} |
... | ... | |
385 | 367 |
|
386 | 368 |
try { |
387 | 369 |
file.readScene(pRGBArray, task); |
388 |
int w = rasterBuf.getWidth(); |
|
389 |
if(getBandCount() >= 3) { |
|
390 |
for (int row = 0; row < rasterBuf.getHeight(); row++) { |
|
391 |
for (int col = 0; col < w; col++) { |
|
392 |
rasterBuf.setElem(row, col, 0, (byte) ((pRGBArray[(row * w) + col] & 0x00ff0000) >> 16)); |
|
393 |
rasterBuf.setElem(row, col, 1, (byte) ((pRGBArray[(row * w) + col] & 0x0000ff00) >> 8)); |
|
394 |
rasterBuf.setElem(row, col, 2, (byte) (pRGBArray[(row * w) + col] & 0x000000ff)); |
|
395 |
} |
|
396 |
if (task.getEvent() != null) |
|
397 |
task.manageEvent(task.getEvent()); |
|
398 |
} |
|
399 |
} |
|
400 |
if(getBandCount() == 1) { |
|
401 |
for (int row = 0; row < rasterBuf.getHeight(); row++) { |
|
402 |
for (int col = 0; col < w; col++) |
|
403 |
rasterBuf.setElem(row, col, 0, (byte) (pRGBArray[(row * w) + col] & 0x000000ff)); |
|
404 |
if (task.getEvent() != null) |
|
405 |
task.manageEvent(task.getEvent()); |
|
406 |
} |
|
407 |
} |
|
370 |
loadBuffer(rasterBuf.getHeight(), rasterBuf.getWidth(), bandList, rasterBuf, pRGBArray); |
|
408 | 371 |
} catch (MrSIDException e) { |
409 | 372 |
throw new RasterDriverException("Error reading data"); |
410 | 373 |
} |
411 | 374 |
return rasterBuf; |
412 | 375 |
} |
376 |
|
|
377 |
private void loadBuffer(int h, int w, BandList bandList, Buffer rasterBuf, int[] pRGBArray) throws ProcessInterruptedException { |
|
378 |
RasterTask task = RasterTaskQueue.get(Thread.currentThread().toString()); |
|
379 |
int[] drawableBands = null; |
|
380 |
for (int row = 0; row < h; row++) { |
|
381 |
for (int col = 0; col < w; col++) { |
|
382 |
drawableBands = bandList.getBufferBandToDraw(getFName(), 0); |
|
383 |
if(drawableBands != null) { |
|
384 |
for (int i = 0; i < drawableBands.length; i++) { |
|
385 |
rasterBuf.setElem(row, col, drawableBands[i], (byte) ((pRGBArray[(row * w) + col] & 0x00ff0000) >> 16)); |
|
386 |
} |
|
387 |
} |
|
388 |
drawableBands = bandList.getBufferBandToDraw(getFName(), 1); |
|
389 |
if(drawableBands != null) { |
|
390 |
for (int i = 0; i < drawableBands.length; i++) { |
|
391 |
rasterBuf.setElem(row, col, drawableBands[i], (byte) ((pRGBArray[(row * w) + col] & 0x0000ff00) >> 8)); |
|
392 |
} |
|
393 |
} |
|
394 |
drawableBands = bandList.getBufferBandToDraw(getFName(), 2); |
|
395 |
if(drawableBands != null) { |
|
396 |
for (int i = 0; i < drawableBands.length; i++) { |
|
397 |
rasterBuf.setElem(row, col, drawableBands[i], (byte) (pRGBArray[(row * w) + col] & 0x000000ff)); |
|
398 |
} |
|
399 |
} |
|
400 |
} |
|
401 |
if (task.getEvent() != null) |
|
402 |
task.manageEvent(task.getEvent()); |
|
403 |
} |
|
404 |
} |
|
413 | 405 |
|
414 | 406 |
/* |
415 | 407 |
* (non-Javadoc) |
... | ... | |
435 | 427 |
int[] pRGBArray = new int[bufWidth * bufHeight]; |
436 | 428 |
try { |
437 | 429 |
file.readScene(pRGBArray, task); |
438 |
for (int row = 0; row < bufHeight; row++) { |
|
439 |
for (int col = 0; col < bufWidth; col++) { |
|
440 |
rasterBuf.setElem(row, col, 0, (byte) ((pRGBArray[(row * bufWidth) + col] & 0x00ff0000) >> 16)); |
|
441 |
rasterBuf.setElem(row, col, 1, (byte) ((pRGBArray[(row * bufWidth) + col] & 0x0000ff00) >> 8)); |
|
442 |
rasterBuf.setElem(row, col, 2, (byte) (pRGBArray[(row * bufWidth) + col] & 0x000000ff)); |
|
443 |
} |
|
444 |
if (task.getEvent() != null) |
|
445 |
task.manageEvent(task.getEvent()); |
|
446 |
} |
|
430 |
loadBuffer(bufHeight, bufWidth, bandList, rasterBuf, pRGBArray); |
|
447 | 431 |
} catch (MrSIDException e) { |
448 | 432 |
throw new RasterDriverException("Error reading data"); |
449 | 433 |
} |
Also available in: Unified diff