Revision 11930 trunk/libraries/libRaster/src/org/gvsig/raster/dataset/properties/DatasetStatistics.java

View differences:

DatasetStatistics.java
216 216
	
217 217
		for (int iBand = 0; iBand < grf.getBandCount(); iBand ++) {
218 218
			max[iBand] = Double.NEGATIVE_INFINITY; 
219
			min[iBand] = Double.MAX_VALUE;
219
			min[iBand] = Double.POSITIVE_INFINITY;
220 220
			secondMax[iBand] = Double.NEGATIVE_INFINITY; 
221
			secondMin[iBand] = Double.MAX_VALUE;
221
			secondMin[iBand] = Double.POSITIVE_INFINITY;
222 222
			init[iBand] = true;
223 223
		}
224 224
		
......
242 242
			if((block + hB) > grf.getHeight())
243 243
				hB = Math.abs(grf.getHeight() - block);
244 244
			for (int iBand = 0; iBand < grf.getBandCount(); iBand ++) {
245
				for (int row = 0; row < hB; row++) {	
246
					for (int col = 0; col < grf.getWidth(); col ++) {
245
				for (int col = 0; col < grf.getWidth(); col ++) {
246
					for (int row = 0; row < hB; row++) {	
247 247
						double z = (b != null) ? (b[iBand][row][col] & 0xff) : ((s != null) ? (s[iBand][row][col] & 0xffff) : ((i != null) ? (i[iBand][row][col] & 0xffffff)  : (f != null) ? f[iBand][row][col] : d[iBand][row][col]));
248
						if (init[iBand]){
248
						
249
						if (init[iBand]) {
249 250
							min[iBand] = z;
250
							secondMin[iBand] = z;
251
							//secondMin[iBand] = z;
251 252
							max[iBand] = z;
252
							secondMax[iBand] = z;
253
							//secondMax[iBand] = z;
253 254
							init[iBand] = false;
254
							continue;
255
						} else {
256
							if ( min[iBand] > z ) {
257
								secondMin[iBand] = min[iBand];
258
								min[iBand] = z;
259
							}
260
							
261
							if ( max[iBand] < z ) {
262
								secondMax[iBand] = max[iBand];
263
								max[iBand] = z;
264
							}
265
							
266
							if(z < max[iBand]  && z > secondMax[iBand])
267
								secondMax[iBand] = z;
268

  
269
							if(z > min[iBand]  && z < secondMin[iBand])
270
								secondMin[iBand] = z;
255 271
						}
256
						if ( min[iBand] > z ){
257
							secondMin[iBand] = min[iBand];
258
							min[iBand] = z;
259
						}
260
						
261
						if ( secondMin[iBand] == min[iBand] && min[iBand] < z)
262
							secondMin[iBand] = z;
263
						
264
						if ( max[iBand] < z ){
265
							secondMax[iBand] = max[iBand];
266
							max[iBand] = z;
267
						}
268
						
269
						if ( secondMax[iBand] == max[iBand] && max[iBand] > z)
270
							secondMax[iBand] = z;
271
	
272 272
						mean[iBand] += z;
273 273
						variance[iBand] += z * z;
274 274
						iValues[iBand]++;

Also available in: Unified diff