Revision 11076 trunk/libraries/libRaster/src/org/gvsig/raster/dataset/RasterMultiDataset.java
RasterMultiDataset.java | ||
---|---|---|
20 | 20 |
|
21 | 21 |
import java.awt.geom.Point2D; |
22 | 22 |
import java.io.File; |
23 |
import java.lang.reflect.Constructor; |
|
24 |
import java.lang.reflect.InvocationTargetException; |
|
23 | 25 |
import java.util.ArrayList; |
24 | 26 |
|
25 |
import org.gvsig.raster.dataaccess.buffer.RasterBuffer; |
|
27 |
import org.cresques.cts.IProjection; |
|
28 |
import org.gvsig.raster.buffer.RasterBuffer; |
|
29 |
import org.gvsig.raster.dataset.io.GdalDriver; |
|
26 | 30 |
import org.gvsig.raster.dataset.properties.DatasetColorInterpretation; |
27 | 31 |
import org.gvsig.raster.dataset.properties.DatasetListHistogram; |
28 | 32 |
import org.gvsig.raster.dataset.properties.DatasetListStatistics; |
... | ... | |
34 | 38 |
import org.gvsig.raster.util.Histogram; |
35 | 39 |
import org.gvsig.raster.util.HistogramException; |
36 | 40 |
import org.gvsig.raster.util.IHistogramable; |
41 |
import org.gvsig.raster.util.extensionPoints.ExtensionPoint; |
|
42 |
import org.gvsig.raster.util.extensionPoints.ExtensionPoints; |
|
43 |
import org.gvsig.raster.util.extensionPoints.ExtensionPointsSingleton; |
|
37 | 44 |
|
38 | 45 |
|
39 | 46 |
/** |
... | ... | |
54 | 61 |
private ArrayList palettes = new ArrayList(); |
55 | 62 |
private DatasetListStatistics stats = null; |
56 | 63 |
private DatasetListHistogram histogram = null; |
64 |
int percent = 0; |
|
57 | 65 |
|
58 | 66 |
//TODO: FUNCIONALIDAD: Contructores igual a RasterDataset + String[] nameFiles |
59 |
public RasterMultiDataset(String name){ |
|
67 |
public RasterMultiDataset(String name) {
|
|
60 | 68 |
this.name = name; |
61 | 69 |
} |
62 | 70 |
|
63 | 71 |
/** |
72 |
* Abre un dataset pasando como par?metros la proyecci?n y un objeto identificador del dataset. Este |
|
73 |
* objeto puede ser una ruta a un fichero en disco. En este caso la extensi?n del fichero servir? para |
|
74 |
* buscar el driver que lo gestiona. Si proporcionamos un array de cadenas se tratar?n como la ruta a N ficheros |
|
75 |
* de disco. Tambi?n puede ser un buffer de datos en memoria o cualquier otro objeto |
|
76 |
* que pueda aceptar un driver. |
|
77 |
* @param proj PRoyecci?n |
|
78 |
* @param datasetOpenParam Par?metros al driver |
|
79 |
* @return RasterMultiDatset |
|
80 |
* @throws NotSupportedExtensionException |
|
81 |
* @throws RasterDriverException |
|
82 |
*/ |
|
83 |
public static RasterMultiDataset open(IProjection proj, Object datasetOpenParam) throws NotSupportedExtensionException, RasterDriverException{ |
|
84 |
RasterMultiDataset rmd = new RasterMultiDataset(null); |
|
85 |
if(datasetOpenParam instanceof String[]) { |
|
86 |
String[] param = (String[])datasetOpenParam; |
|
87 |
for (int dataset = 0; dataset < param.length; dataset++) |
|
88 |
try { |
|
89 |
rmd.addDataset(RasterDataset.open(proj, param[dataset])); |
|
90 |
} catch (FileFoundInListException e) { |
|
91 |
//No lo a?adimos en el dataset pq ya existe |
|
92 |
} |
|
93 |
} else if(datasetOpenParam instanceof IBuffer[]) { |
|
94 |
IBuffer[] param = (IBuffer[])datasetOpenParam; |
|
95 |
for (int dataset = 0; dataset < param.length; dataset++) |
|
96 |
try { |
|
97 |
rmd.addDataset(RasterDataset.open(proj, param[dataset])); |
|
98 |
} catch (FileFoundInListException e) { |
|
99 |
//No lo a?adimos en el dataset pq ya existe |
|
100 |
} |
|
101 |
} else { |
|
102 |
RasterDataset rd = RasterDataset.open(proj, datasetOpenParam); |
|
103 |
try { |
|
104 |
rmd.addDataset(rd); |
|
105 |
} catch (FileFoundInListException e) { |
|
106 |
//No lo a?adimos en el dataset pq ya existe |
|
107 |
} |
|
108 |
} |
|
109 |
return rmd; |
|
110 |
} |
|
111 |
|
|
112 |
/** |
|
64 | 113 |
* Add a file to the list. |
65 | 114 |
* @param f file to add. |
66 | 115 |
*/ |
67 |
public void addDataset(RasterDataset f)throws FileFoundInListException{ |
|
116 |
public void addDataset(RasterDataset f)throws FileFoundInListException {
|
|
68 | 117 |
if(findDataset(f)) |
69 | 118 |
throw new FileFoundInListException("The file already is in list."); |
70 | 119 |
files.add(f); |
... | ... | |
80 | 129 |
public void addDataset(String fileName)throws FileFoundInListException, NotSupportedExtensionException, RasterDriverException{ |
81 | 130 |
if(findDataset(fileName)) |
82 | 131 |
throw new FileFoundInListException("The file already is in list."); |
83 |
RasterDataset f = RasterDataset.openFile(null, fileName);
|
|
132 |
RasterDataset f = RasterDataset.open(null, fileName); |
|
84 | 133 |
files.add(f); |
85 | 134 |
addBands(f); |
86 | 135 |
stats = new DatasetListStatistics(files); |
... | ... | |
90 | 139 |
* A?ade el fichero a lista de georrasterfiles y sus bandas a la lista de bandas |
91 | 140 |
* @param grf |
92 | 141 |
*/ |
93 |
private void addBands(RasterDataset grf){ |
|
142 |
private void addBands(RasterDataset grf) {
|
|
94 | 143 |
if(grf == null) |
95 | 144 |
return; |
96 | 145 |
|
97 | 146 |
int dataType = grf.getDataType(); |
98 |
for(int i = 0; i < grf.getBandCount();i++){ |
|
99 |
try{ |
|
147 |
for(int i = 0; i < grf.getBandCount();i++) {
|
|
148 |
try {
|
|
100 | 149 |
Band band = new Band(grf.getFName(), i, dataType); |
101 | 150 |
bandList.addBand(band, i); |
102 |
}catch(BandFoundInListException ex){
|
|
151 |
} catch(BandFoundInListException ex) {
|
|
103 | 152 |
//No a?adimos la banda |
104 | 153 |
} |
105 | 154 |
} |
... | ... | |
109 | 158 |
* Elimina un fichero a la lista a partir de su nombre |
110 | 159 |
* @param fileName Nombre del fichero a eliminar. |
111 | 160 |
*/ |
112 |
public void removeDataset(String fileName){ |
|
113 |
for(int i=0;i<files.size();i++){ |
|
114 |
if(((RasterDataset)files.get(i)).getFName().equals(fileName)){ |
|
161 |
public void removeDataset(String fileName) {
|
|
162 |
for(int i=0;i<files.size();i++) {
|
|
163 |
if(((RasterDataset)files.get(i)).getFName().equals(fileName)) {
|
|
115 | 164 |
files.remove(i); |
116 | 165 |
bandList.removeBands(fileName); |
117 | 166 |
return; |
... | ... | |
123 | 172 |
* Elimina un fichero a la lista |
124 | 173 |
* @param file Fichero a eliminar |
125 | 174 |
*/ |
126 |
public void removeDataset(RasterDataset file){ |
|
127 |
for(int i=0;i<files.size();i++){ |
|
128 |
if(((RasterDataset)files.get(i)).getFName().equals(file.getFName())){ |
|
175 |
public void removeDataset(RasterDataset file) {
|
|
176 |
for(int i=0;i<files.size();i++) {
|
|
177 |
if(((RasterDataset)files.get(i)).getFName().equals(file.getFName())) {
|
|
129 | 178 |
files.remove(i); |
130 | 179 |
bandList.removeBands(file.getFName()); |
131 | 180 |
return; |
... | ... | |
137 | 186 |
* Obtiene el n?mero de ficheros en la lista |
138 | 187 |
* @return integer. |
139 | 188 |
*/ |
140 |
public int getDatasetCount(){ |
|
189 |
public int getDatasetCount() {
|
|
141 | 190 |
return files.size(); |
142 | 191 |
} |
143 | 192 |
|
... | ... | |
147 | 196 |
* @return true si se ha hallado el fichero y false si no se |
148 | 197 |
* ha encontrado |
149 | 198 |
*/ |
150 |
public boolean findDataset(RasterDataset file){ |
|
151 |
for(int i = 0;i<files.size();i++){ |
|
199 |
public boolean findDataset(RasterDataset file) {
|
|
200 |
for(int i = 0;i<files.size();i++) {
|
|
152 | 201 |
RasterDataset grf = (RasterDataset)files.get(i); |
153 | 202 |
if( grf.getFName().equals(file.getFName())) |
154 | 203 |
return true; |
... | ... | |
162 | 211 |
* @return true si se ha hallado el fichero y false si no se |
163 | 212 |
* ha encontrado |
164 | 213 |
*/ |
165 |
public boolean findDataset(String fileName){ |
|
166 |
for(int i = 0;i<files.size();i++){ |
|
214 |
public boolean findDataset(String fileName) {
|
|
215 |
for(int i = 0;i<files.size();i++) {
|
|
167 | 216 |
if(((RasterDataset)files.get(i)).getFName().equals(fileName)) |
168 | 217 |
return true; |
169 | 218 |
} |
... | ... | |
173 | 222 |
/** |
174 | 223 |
* @see org.javaGeoRaster.io.GeoInfo |
175 | 224 |
*/ |
176 |
public void close(){ |
|
225 |
public void close() {
|
|
177 | 226 |
for(int i = 0; i < files.size(); i++) |
178 | 227 |
((RasterDataset)files.get(i)).close(); |
179 | 228 |
} |
... | ... | |
182 | 231 |
* Obtiene en un array de String la lista de nombres de ficheros |
183 | 232 |
* @return lista de nombres de los ficheros del GeoRasterMultiFile |
184 | 233 |
*/ |
185 |
public String[] getNameDatasetStringList(){ |
|
234 |
public String[] getNameDatasetStringList() {
|
|
186 | 235 |
String[] list = new String[files.size()]; |
187 | 236 |
for(int i = 0; i < files.size(); i++) |
188 | 237 |
list[i] = ((RasterDataset)files.get(i)).getFName(); |
... | ... | |
194 | 243 |
* @param raster Buffer a inicializar |
195 | 244 |
* @param bandList Lista de bandas |
196 | 245 |
*/ |
197 |
private void initBufferToNoData(IBuffer raster, BandList bandList){ |
|
198 |
for(int i = 0; i < bandList.getDrawableBandsCount(); i++){ |
|
199 |
switch(getDataType()[0]){ |
|
246 |
private void initBufferToNoData(IBuffer raster, BandList bandList) {
|
|
247 |
for(int i = 0; i < bandList.getDrawableBandsCount(); i++) {
|
|
248 |
switch(getDataType()[0]) {
|
|
200 | 249 |
case IBuffer.TYPE_BYTE:raster.assign(i, raster.getByteNoDataValue());break; |
201 | 250 |
case IBuffer.TYPE_SHORT:raster.assign(i, raster.getShortNoDataValue());break; |
202 | 251 |
case IBuffer.TYPE_INT:raster.assign(i, raster.getIntNoDataValue());break; |
... | ... | |
825 | 874 |
* @see org.gvsig.raster.driver.datasetproperties.IHistogramable#getHistogram() |
826 | 875 |
*/ |
827 | 876 |
public Histogram getHistogram() throws HistogramException { |
877 |
percent = 0; |
|
828 | 878 |
if(histogram == null) |
829 | 879 |
histogram = new DatasetListHistogram(this); |
830 | 880 |
|
831 | 881 |
try { |
832 | 882 |
Histogram tmp = histogram.getHistogram(); |
883 |
percent = 100; |
|
833 | 884 |
return tmp; |
834 | 885 |
} catch (FileNotOpenException e) { |
835 | 886 |
throw new HistogramException("FileNotOpenException"); |
... | ... | |
860 | 911 |
* @see org.gvsig.raster.util.IHistogramable#getPercent() |
861 | 912 |
*/ |
862 | 913 |
public int getPercent() { |
863 |
if (histogram != null) return histogram.getPercent(); |
|
864 |
return 0; |
|
914 |
return percent; |
|
865 | 915 |
} |
866 |
|
|
867 |
/* |
|
868 |
* (non-Javadoc) |
|
869 |
* @see org.gvsig.raster.util.IHistogramable#resetPercent() |
|
870 |
*/ |
|
871 |
public void resetPercent() { |
|
872 |
if (histogram != null) histogram.resetPercent(); |
|
873 |
} |
|
874 |
|
|
875 |
/* |
|
876 |
* (non-Javadoc) |
|
877 |
* @see org.gvsig.raster.util.ICancellable#isCanceled() |
|
878 |
*/ |
|
879 |
public boolean isCanceled() { |
|
880 |
if (histogram != null) return histogram.isCanceled(); |
|
881 |
return false; |
|
882 |
} |
|
883 |
|
|
884 |
/* |
|
885 |
* (non-Javadoc) |
|
886 |
* @see org.gvsig.raster.util.ICancellable#setCanceled(boolean) |
|
887 |
*/ |
|
888 |
public void setCanceled(boolean value) { |
|
889 |
if (histogram != null) histogram.setCanceled(value); |
|
890 |
} |
|
891 |
} |
|
916 |
|
|
917 |
} |
Also available in: Unified diff