Revision 43873

View differences:

branches/org.gvsig.desktop-2018a/org.gvsig.desktop.library/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.buffer.impl/src/main/java/org/gvsig/raster/lib/buffer/impl/SimpleBandTileManager.java
1
package org.gvsig.raster.lib.buffer.impl;
2

  
3
import java.io.File;
4
import java.io.IOException;
5
import java.io.RandomAccessFile;
6
import java.nio.Buffer;
7
import java.nio.ByteBuffer;
8
import java.nio.DoubleBuffer;
9
import java.nio.FloatBuffer;
10
import java.nio.IntBuffer;
11
import java.nio.ShortBuffer;
12

  
13
import org.gvsig.raster.lib.buffer.api.Band;
14
import org.gvsig.raster.lib.buffer.api.BandInfo;
15
import org.gvsig.raster.lib.buffer.api.BandTileManager;
16
import org.gvsig.raster.lib.buffer.api.BufferLocator;
17
import org.gvsig.raster.lib.buffer.api.BufferManager;
18
import org.gvsig.raster.lib.buffer.api.TileStruct;
19
import org.gvsig.tools.dispose.impl.AbstractDisposable;
20
import org.gvsig.tools.exception.BaseException;
21

  
22

  
23
/**
24
 * @author fdiaz
25
 *
26
 */
27
@Deprecated
28
public class SimpleBandTileManager extends AbstractDisposable implements BandTileManager {
29

  
30
    private RandomAccessFile  raf;
31
    private int rows;
32
    private int columns;
33
    private int dataType;
34
    private File file;
35

  
36
    private int rowsPerTile;
37
    private int columnsPerTile;
38

  
39
    /**
40
     * @param file
41
     * @param rows
42
     * @param columns
43
     * @param dataType
44
     * @throws IOException
45
     */
46
    public SimpleBandTileManager(File file, int rows, int columns, int dataType) throws IOException {
47
        this.rows = rows;
48
        this.columns = columns;
49
        this.dataType = dataType;
50
        this.file = file;
51
        if(this.file==null){
52
            this.file = File.createTempFile("bandTileManager", "tmp");
53
        }
54

  
55
        this.raf = new RandomAccessFile(this.file, "rw");
56
        BufferManager bufferManager = BufferLocator.getBufferManager();
57
        int dataTypeSize=bufferManager.getDataTypeSize(dataType);
58
        raf.setLength(rows*columns*dataTypeSize);
59

  
60
        this.rowsPerTile=256;
61
        this.columnsPerTile=256;
62
    }
63

  
64
    public Band load(int row, int col, int dataType) throws IOException {
65
        //FIXME: Comentarizado para que me deje compilar (no s? si es necesaria esta clase
66

  
67
//        //TODO review (un)used params
68
//        int pos = row*this.columns+col;
69
//        raf.seek(pos);
70
//        BufferManager bufferManager = BufferLocator.getBufferManager();
71
//        int dataTypeSize = bufferManager.getDataTypeSize(dataType);
72
//        byte[] byteArray = new byte[buffer.capacity() * dataTypeSize];
73
//        raf.read(byteArray);
74
//        buffer.rewind();
75
//
76
//        switch (dataType) {
77
//        case BufferManager.TYPE_BYTE:
78
//            //FIXME: Elegir cual de las dos siguientes maneras de hacerlo es la id?nea
79
//
80
//            ((ByteBuffer) buffer).put(byteArray, 0, byteArray.length);
81
////            System.arraycopy(byteArray, 0, ((ByteBuffer) buffer).array(), 0, byteArray.length);
82
//            break;
83
//        case BufferManager.TYPE_SHORT:
84
//        case BufferManager.TYPE_USHORT:
85
//            for( int cell =0 ; cell<byteArray.length ; cell++ ) {
86
//                ((ShortBuffer) buffer).put((int)(cell/dataTypeSize), byteArray[cell]);
87
//            }
88
//            break;
89
//        case BufferManager.TYPE_INT:
90
//            for( int cell =0 ; cell<byteArray.length ; cell++ ) {
91
//                ((IntBuffer) buffer).put((int)(cell/dataTypeSize), byteArray[cell]);
92
//            }
93
//            break;
94
//        case BufferManager.TYPE_FLOAT:
95
//            for( int cell =0 ; cell<byteArray.length ; cell++ ) {
96
//                ((FloatBuffer) buffer).put((int)(cell/dataTypeSize), byteArray[cell]);
97
//            }
98
//            break;
99
//
100
//        case BufferManager.TYPE_DOUBLE:
101
//            for( int cell =0 ; cell<byteArray.length ; cell++ ) {
102
//                ((DoubleBuffer) buffer).put((int)(cell/dataTypeSize), byteArray[cell]);
103
//            }
104
//            break;
105
//
106
//        default:
107
//            throw new IllegalArgumentException("Data Type " + dataType + " not supported.");
108
//        }
109
        return null;
110

  
111
    }
112

  
113
    public void save(Buffer buffer, int row, int rows, int col, int cols, int dataType) throws IOException {
114
        //TODO review (un)used params
115
        int pos = row*this.columns+col;
116
        raf.seek(pos);
117

  
118
        BufferManager bufferManager = BufferLocator.getBufferManager();
119
        ByteBuffer byteBuffer = ByteBuffer.allocate(buffer.capacity() * bufferManager.getDataTypeSize(dataType));
120
        switch (dataType) {
121
        case BufferManager.TYPE_BYTE:
122
            byteBuffer.put(((ByteBuffer)buffer).array());
123
            break;
124
        case BufferManager.TYPE_SHORT:
125
        case BufferManager.TYPE_USHORT:
126
            ShortBuffer byteAsShortBuffer = byteBuffer.asShortBuffer();
127
            byteAsShortBuffer.put((short[]) buffer.array());
128
            break;
129
        case BufferManager.TYPE_INT:
130
            IntBuffer byteAsIntBuffer = byteBuffer.asIntBuffer();
131
            byteAsIntBuffer.put((int[]) buffer.array());
132
            break;
133
        case BufferManager.TYPE_FLOAT:
134
            FloatBuffer byteAsFloatBuffer = byteBuffer.asFloatBuffer();
135
            byteAsFloatBuffer.put((float[]) buffer.array());
136
            break;
137
        case BufferManager.TYPE_DOUBLE:
138
            DoubleBuffer byteAsDoubleBuffer = byteBuffer.asDoubleBuffer();
139
            byteAsDoubleBuffer.put((double[]) buffer.array());
140
            break;
141
        default:
142
            throw new IllegalArgumentException("Data Type " + dataType + " not supported.");
143
        }
144
        raf.write(byteBuffer.array());
145

  
146
    }
147

  
148
    @Override
149
    public boolean isSupportedSave() {
150
        return true;
151
    }
152

  
153
    @Override
154
    public BandInfo getBandInfo() {
155
        return null;
156
    }
157

  
158
    @Override
159
    public int getRowsPerTile() {
160
        return rowsPerTile;
161
    }
162

  
163
    @Override
164
    public int getColumnsPerTile() {
165
        return columnsPerTile;
166
    }
167

  
168
    @Override
169
    public TileStruct getTileStruct() {
170
        // TODO Auto-generated method stub
171
        return null;
172
    }
173

  
174
    @Override
175
    protected void doDispose() throws BaseException {
176
        this.raf = null;
177
        this.file = null;
178

  
179

  
180
    }
181

  
182
}
branches/org.gvsig.desktop-2018a/org.gvsig.desktop.library/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.buffer.impl/src/main/java/org/gvsig/raster/lib/buffer/impl/AbstractPaginatedBand.java
3 3
import java.io.IOException;
4 4
import java.nio.Buffer;
5 5

  
6
import com.vividsolutions.jts.operation.IsSimpleOp;
7

  
6 8
import org.slf4j.Logger;
7 9
import org.slf4j.LoggerFactory;
8 10

  
......
104 106
        }
105 107
        loaded = false;
106 108

  
107
        saveCurrentPage();
109
        if(this.pageManager.isSupportedSave()){
110
            saveCurrentPage();
111
        }
108 112
        int currentPage = row / rowsPerPage; // Divisi?n entera
109 113
        firstRowOfPage = currentPage * rowsPerPage;
110 114
        try {
branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.bsq/src/main/java/org/gvsig/fmap/dal/fileutils/impl/DefaultHDRFile.java
86 86
                        try {
87 87
                            switch (words[0]) {
88 88
                                case "nrows":
89
                                    this.nrows = Integer.parseUnsignedInt(words[1]);
89
                                    this.nrows = Integer.parseInt(words[1]);
90 90
                                    break;
91 91
                                case "ncols":
92
                                    this.ncols = Integer.parseUnsignedInt(words[1]);
92
                                    this.ncols = Integer.parseInt(words[1]);
93 93
                                    break;
94 94
                                case "nbands":
95
                                    this.nbands = Integer.parseUnsignedInt(words[1]);
95
                                    this.nbands = Integer.parseInt(words[1]);
96 96
                                    break;
97 97
                                case "nbits":
98
                                    this.nbits = Integer.parseUnsignedInt(words[1]);
98
                                    this.nbits = Integer.parseInt(words[1]);
99 99
                                    break;
100 100
                                case "pixeltype":
101 101
                                    this.pixeltype = words[1];
......
107 107
                                    this.layout = words[1];
108 108
                                    break;
109 109
                                case "skipbytes":
110
                                    this.skipbytes = Integer.parseUnsignedInt(words[1]);
110
                                    this.skipbytes = Integer.parseInt(words[1]);
111 111
                                    break;
112 112
                                case "nodata_value":
113 113
                                    this.nodata_value = Double.parseDouble(words[1]);
114 114
                                    break;
115 115
                                case "cellsize":
116
                                    this.cellsize = Integer.parseUnsignedInt(words[1]);
116
                                    this.cellsize = Integer.parseInt(words[1]);
117 117
                                    break;
118 118
                                case "xllcorner":
119 119
                                case "xllcenter":
......
136 136
                                    this.ydim = Double.parseDouble(words[1]);
137 137
                                    break;
138 138
                                case "bandrowbytes":
139
                                    this.bandrowbytes = Integer.parseUnsignedInt(words[1]);
139
                                    this.bandrowbytes = Integer.parseInt(words[1]);
140 140
                                    break;
141 141
                                case "totalrowbytes":
142
                                    this.totalrowbytes = Integer.parseUnsignedInt(words[1]);
142
                                    this.totalrowbytes = Integer.parseInt(words[1]);
143 143
                                    break;
144 144
                                case "bandgapbytes":
145
                                    this.bandgapbytes = Integer.parseUnsignedInt(words[1]);
145
                                    this.bandgapbytes = Integer.parseInt(words[1]);
146 146
                                    break;
147 147
                            }
148 148
                        } catch (NumberFormatException e) {
branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.bsq/src/main/java/org/gvsig/fmap/dal/fileutils/impl/DefaultSTXFile.java
21 21

  
22 22
    private File source;
23 23
    private List<STXBand> bands;
24
    
24

  
25 25
    public static class DefaultSTXBand implements STXBand {
26
        
26

  
27 27
        private int band;
28 28
        private double minimum;
29 29
        private double maximum;
......
31 31
        private double std_deviation; // Optional
32 32
        private double linear_stretch_min; // Optional
33 33
        private double linear_stretch_max; // Optional
34
 
34

  
35 35
        private boolean valid = false;
36
        
36

  
37 37
        public DefaultSTXBand() {
38
            
38

  
39 39
        }
40 40

  
41 41
        public DefaultSTXBand(
42
            int band, 
43
            double minimum, 
44
            double maximum, 
45
            double mean, 
46
            double std_deviation, 
47
            double linear_stretch_min, 
42
            int band,
43
            double minimum,
44
            double maximum,
45
            double mean,
46
            double std_deviation,
47
            double linear_stretch_min,
48 48
            double linear_stretch_max
49 49
            ) {
50 50
            this();
......
56 56
            this.linear_stretch_min = linear_stretch_min;
57 57
            this.linear_stretch_max = linear_stretch_max;
58 58
        }
59
        
59

  
60 60
        @SuppressWarnings("OverridableMethodCallInConstructor")
61 61
        public DefaultSTXBand(String line) {
62 62
            this();
63 63
            this.parse(line);
64 64
        }
65
       
65

  
66 66
        @Override
67 67
        public void parse(String line) {
68 68
            valid = false;
......
70 70
            if( words.length < 7 ) {
71 71
                throw new IllegalArgumentException("At least 7 parameters are needed ("+line+").");
72 72
            }
73
            this.band = Integer.parseUnsignedInt(words[0]);
73
            this.band = Integer.parseInt(words[0]);
74 74
            this.minimum = Double.parseDouble(words[1]);
75 75
            this.maximum = Double.parseDouble(words[2]);
76 76
            if( "#".equals(words[3]) ) {
......
124 124
            }
125 125
            return builder.toString();
126 126
        }
127
        
127

  
128 128
        @Override
129 129
        public int getBand() {
130 130
            return band;
......
176 176
        this();
177 177
        this.read(file);
178 178
    }
179
    
179

  
180 180
    @Override
181 181
    public File getFile(File file) {
182 182
        File f = new File(FilenameUtils.removeExtension(file.getAbsolutePath())+"."+FILE_EXTENSION);
183 183
        return f;
184 184
    }
185
    
185

  
186 186
    @Override
187 187
    public File getFile() {
188 188
        return source;
......
207 207
                                    + "' (lineno=+" + lineno
208 208
                                    + ", file=" + f.getAbsoluteFile()
209 209
                                    + ").", e);
210
                            
210

  
211 211
                        }
212 212
                    }
213 213
                }
......
222 222
    public List<STXBand> getBands() {
223 223
        return this.bands;
224 224
    }
225
    
225

  
226 226
    @Override
227 227
    public void clear() {
228 228
        this.bands = new ArrayList<>();
229 229
    }
230
    
230

  
231 231
    @Override
232 232
    public void addBand(
233
            int band, 
234
            double minimum, 
235
            double maximum, 
236
            double mean, 
237
            double std_deviation, 
238
            double linear_stretch_min, 
233
            int band,
234
            double minimum,
235
            double maximum,
236
            double mean,
237
            double std_deviation,
238
            double linear_stretch_min,
239 239
            double linear_stretch_max
240 240
        ) {
241 241
        DefaultSTXBand b = new DefaultSTXBand(band, minimum, maximum, mean, std_deviation, linear_stretch_min, linear_stretch_max);
branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.bsq/src/main/java/org/gvsig/fmap/dal/fileutils/impl/DefaultCLRFile.java
78 78
                            if (words.length < 4) {
79 79
                                continue;
80 80
                            }
81
                            int value = Integer.parseUnsignedInt(words[0]);
82
                            int r = Integer.parseUnsignedInt(words[1]);
83
                            int g = Integer.parseUnsignedInt(words[2]);
84
                            int b = Integer.parseUnsignedInt(words[3]);
81
                            int value = Integer.parseInt(words[0]);
82
                            int r = Integer.parseInt(words[1]);
83
                            int g = Integer.parseInt(words[2]);
84
                            int b = Integer.parseInt(words[3]);
85 85
                            Color color = new Color(r, g, b);
86 86

  
87 87
                            ColorTableClass colorTableClass = legendManager.createColorTableClass(
branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.bsq/src/main/java/org/gvsig/fmap/dal/file/bsq/BSQBandPageManager.java
42 42
        this.file = file;
43 43
        this.startpos = startpos;
44 44

  
45
        this.raf = new RandomAccessFile(this.file, "rw");
45
        this.raf = new RandomAccessFile(this.file, "r");
46 46
        // BufferManager bufferManager = BufferLocator.getBufferManager();
47 47
        //raf.setLength(rows*columns*bufferManager.getDataTypeSize(dataType));
48 48

  
......
132 132

  
133 133
    @Override
134 134
    public boolean isSupportedSave() {
135
        return true;
135
        return false;
136 136
    }
137 137

  
138 138
    @Override

Also available in: Unified diff