Revision 1065

View differences:

org.gvsig.geoprocess/branches/refactor-2018/org.gvsig.geoprocess/org.gvsig.geoprocess.lib/org.gvsig.geoprocess.lib.sextante/src/main/java/org/gvsig/geoprocess/lib/sextante/dataObjects/FLyrRasterIRasterLayer.java
42 42
import org.gvsig.fmap.dal.raster.api.NewRasterStoreParameters;
43 43
import org.gvsig.fmap.dal.raster.api.RasterQuery;
44 44
import org.gvsig.fmap.dal.raster.api.RasterStore;
45
import org.gvsig.fmap.geom.Geometry;
45 46
import org.gvsig.fmap.geom.GeometryLocator;
46 47
import org.gvsig.fmap.geom.exception.CreateEnvelopeException;
47 48
import org.gvsig.fmap.geom.primitive.Envelope;
......
49 50
import org.gvsig.fmap.mapcontext.layers.FLayer;
50 51
import org.gvsig.fmap.mapcontext.raster.api.RasterLayer;
51 52
import org.gvsig.raster.lib.buffer.api.Buffer;
53
import org.gvsig.raster.lib.buffer.api.BufferLocator;
52 54
import org.gvsig.raster.lib.buffer.api.BufferManager;
53 55
import org.gvsig.raster.lib.buffer.api.NoData;
54 56
import org.gvsig.tools.dispose.DisposeUtils;
......
95 97
        final double dValue) {
96 98
    }
97 99

  
100
    public void setNoDataValue(final double dNoDataValue, final int iBand) {
101
        //getDataStore().getBandDescriptor(iBand)
102
        if (m_Buffer.getBand(iBand).getNoData()== null) {
103
            NoData nodata = BufferLocator.getBufferManager().createNoData(dNoDataValue, null);
104
            m_Buffer.getBand(iBand).getNoData().setValue(nodata.getValue());
105
        } else {
106
            m_Buffer.getBand(iBand).getNoData().setValue(dNoDataValue);
107
        }     
108
    }
98 109
    @Override
99 110
    public void setNoDataValue(final double dNoDataValue) {
100
        //TODO aplicar a todas las bandas
101
    	getDataStore().getBandDescriptor(0).getNoData().setValue(dNoDataValue);
111
        for (int i = 0; i < m_Buffer.getBandCount(); i++) {
112
           setNoDataValue(dNoDataValue, i);
113
        }
102 114
    }
103 115

  
104 116
    @Override
......
126 138
    	if(m_Buffer == null)
127 139
    		open();
128 140
        
129
    	if (m_Buffer.isInside(newx, newy)) {
130
    		switch (getDataStore().getBandDescriptor(iBand).getDataType()) {
131
    		case BufferManager.TYPE_BYTE:
132
    			return (m_Buffer.getBandByte(iBand).getValue(newy, newx) & 0xff);
133
    		case BufferManager.TYPE_SHORT:
134
    			return m_Buffer.getBandShort(iBand).getValue(newy, newx);
135
    		case BufferManager.TYPE_INT:
136
    			return m_Buffer.getBandInt(iBand).getValue(newy, newx);
137
    		case BufferManager.TYPE_FLOAT:
138
    			return m_Buffer.getBandFloat(iBand).getValue(newy, newx);
139
    		case BufferManager.TYPE_DOUBLE:
140
    		default:
141
    			return m_Buffer.getBandDouble(iBand).getValue(newy, newx);    	
142
                }
143
    	} else {
144
    		return getNoDataValue();
145
    	}
146
    }
141
//        if (m_Buffer.isInside(newx, newy)) {    
142
        switch (getDataStore().getBandDescriptor(iBand).getDataType()) {
143
        case BufferManager.TYPE_BYTE: 
144
                return (m_Buffer.getBandByte(iBand).getValue(newy, newx) & 0xff);
145
        case BufferManager.TYPE_SHORT:
146
                return m_Buffer.getBandShort(iBand).getValue(newy, newx);
147
        case BufferManager.TYPE_INT:
148
                return m_Buffer.getBandInt(iBand).getValue(newy, newx);
149
        case BufferManager.TYPE_FLOAT:
150
                return m_Buffer.getBandFloat(iBand).getValue(newy, newx);
151
        case BufferManager.TYPE_DOUBLE:
152
        default:
153
                return m_Buffer.getBandDouble(iBand).getValue(newy, newx);    	
154
            }
155
//        }
156
//    	else {
157
//    		return getNoDataValue();
158
//    	}
159
        
160
    }    
147 161

  
148 162
    @Override
149 163
    public int getBandsCount() {
......
173 187

  
174 188
    @Override
175 189
    public void open() {
176
    	if(getDataStore() == null)
177
    		try {
190
    	if(getDataStore() == null) {
191
            try {
178 192
                    setBaseDataObject(fName);
179 193
            } catch (LoadLayerException e) {
180 194
                Sextante.addErrorToLog(e);
181 195
            } catch (ValidateDataParametersException e) {
182 196
                Sextante.addErrorToLog(e);
183 197
            }
184
        RasterQuery query = getDataStore().createRasterQuery();
185
		try {
186
			m_Buffer = getDataStore().getRasterSet(query);
187
		} catch (DataException e) { 
188
                        Sextante.addErrorToLog(e);
189
        } 
198
            RasterQuery query = getDataStore().createRasterQuery();
199
            try {
200
                    m_Buffer = getDataStore().getRasterSet(query);
201
            } catch (DataException e) { 
202
                    Sextante.addErrorToLog(e);
203
            } 
204
        }
190 205
    }
191 206

  
192 207
    @Override
......
251 266
                    extent.getYMin(),
252 267
                    extent.getXMax(),
253 268
                    extent.getYMax(),
254
                    2);
269
                    Geometry.SUBTYPES.GEOM2D);
255 270
        } catch (CreateEnvelopeException e) {
256 271
            Sextante.addErrorToLog(e);
257 272
            ext = null;
258 273
        }
259 274
        query.setClip(ext);
260 275
        Buffer entireBuf = m_Buffer;
276
        
261 277
        try {
262 278
			m_Buffer = getDataStore().getRasterSet(query);
263
			//Calculamos la traslaci?n respecto a la ventana recortada pq Sextante pedir? 
264
			//p?xeles en relaci?n a la imagen completa
265
			Rectangle2D bbox = getDataStore().getEnvelope().getGeometry().getBounds().getBounds2D();
266
                        double distx = bbox.getMaxX() - extent.getXMax();
279
                //Calculamos la traslaci?n respecto a la ventana recortada pq Sextante pedir?
280
                //p?xeles en relaci?n a la imagen completa
281
                        Rectangle2D bbox = getDataStore().getEnvelope().getGeometry().getBounds().getBounds2D();
282
                        double distx = extent.getXMin() - bbox.getMinX();
267 283
                        double disty = bbox.getMaxY() - extent.getYMax();
268 284
			xTranslate = (int)Math.round((distx * extent.getNX()) / (extent.getXMax() - extent.getXMin()));
269 285
			yTranslate = (int)Math.round((disty * extent.getNY()) / (extent.getYMax() - extent.getYMin()));
org.gvsig.geoprocess/branches/refactor-2018/org.gvsig.geoprocess/org.gvsig.geoprocess.lib/org.gvsig.geoprocess.lib.sextante/src/main/java/org/gvsig/geoprocess/lib/sextante/dataObjects/RasterDriver.java
38 38
import org.gvsig.fmap.dal.DataStore;
39 39
import org.gvsig.fmap.dal.raster.api.NewRasterStoreParameters;
40 40
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemServerExplorer;
41
import org.gvsig.fmap.geom.Geometry;
41 42
import org.gvsig.fmap.geom.GeometryLocator;
43
import org.gvsig.fmap.geom.GeometryManager;
42 44
import org.gvsig.fmap.geom.exception.CreateEnvelopeException;
43 45
import org.gvsig.fmap.geom.primitive.Envelope;
44 46
import org.gvsig.raster.lib.buffer.api.Buffer;
......
67 69
        int[] listDataType; //TODO check how listDataType is made.
68 70
        listDataType = new int[1];
69 71
        listDataType[0] = (iDataType);
70
        //buf = BufferLocator.getBufferManager().createBuffer(ae.getNY(),ae.getNX(), listDataType, projection);
71 72
        Envelope enve;
72 73
        try {
73
            enve = GeometryLocator.getGeometryManager().createEnvelope(ae.getXMin(), ae.getYMin(), ae.getXMax(), ae.getYMax(), 2);
74
            int subType = Geometry.SUBTYPES.GEOM2D;
75
            GeometryManager geomManager = GeometryLocator.getGeometryManager();
76
            enve = geomManager.createEnvelope(ae.getXMin(), ae.getYMin(), ae.getXMax(), ae.getYMax(), subType);
74 77
        } catch (CreateEnvelopeException e) {
75 78
            Sextante.addErrorToLog(e);
76 79
            enve = null;
......
146 149
            .doubleValue() : 0.0d) : 0.0d;
147 150
    }
148 151

  
152
    public void setNoDataValue(final double dNoDataValue, final int iBand) {
153
        
154
                if (buf.getBand(iBand).getNoData()== null) {
155
                    NoData nodata = BufferLocator.getBufferManager().createNoData(dNoDataValue, dNoDataValue);
156
                    buf.getBand(iBand).getNoData().setValue(nodata.getValue());
157
                } else {
158
                    buf.getBand(iBand).getNoData().setValue(dNoDataValue);
159
                }
160
    }
161
    
149 162
    public void setNoDataValue(final double dNoDataValue) {
150 163
        for (int i = 0; i < buf.getBandCount(); i++) {
151
                if (buf.getBand(i).getNoData()== null) {
152
                    NoData nodata = BufferLocator.getBufferManager().createNoData(dNoDataValue, null);
153
                    buf.getBand(i).getNoData().setValue(nodata.getValue());
154
                } else {
155
                    buf.getBand(i).getNoData().setValue(dNoDataValue);
156
                }
164
            setNoDataValue(dNoDataValue, i);
157 165
        }
158 166
    }
159 167

  

Also available in: Unified diff