Revision 10953

View differences:

branches/v10/libraries/libCq_CMS_praster/src-test/org/cresques/io/data/TestDataSourceWithNoDataAndSizeBuffer.java
57 57
		//El par?metro false indica que no se ajuste el extent al raster sino que se rellene con NoData los huecos
58 58
		
59 59
		//TODO: Hacer las llamadas para probar setAreaOfInterest con tama?o de buffer
60
		g.setAreaOfInterest(645819.2583, 4923849.7, 25.584, 25.2); //ZOOM
61
		//g.setAreaOfInterest(645818.2583, 4923850.7, 34.584, 33.2);
62
		//g.setAreaOfInterest(645808.2583, 4923850.7, 44.584, 33.2); //NODATA IZDA
63
		//g.setAreaOfInterest(645818.2583, 4923860.7, 34.584, 43.2); //NODATA ARRIBA
64
		//g.setAreaOfInterest(645818.2583, 4923850.7, 34.584, 43.2); //NODATA ABAJO
65
		//g.setAreaOfInterest(645818.2583, 4923850.7, 44.584, 33.2); //NODATA DCHA
66
		//g.setAreaOfInterest(645808.2583, 4923860.7, 54.584, 53.2); //NODATA 4 LADOS
67 60
		
61
		g.setAreaOfInterest(645818.258, 4923850.7, 645852.841, 4923817.5, 4, 4);//EXTENT COMPLETO
62
		//g.setAreaOfInterest(645835.550, 4923850.7, 645852.841, 4923817.5, 4, 4);//MEDIO EXTENT DCHA
63
		//g.setAreaOfInterest(645818.258, 4923850.7, 645835.550, 4923817.5, 4, 4);//MEDIO EXTENT IZDA
64
		//g.setAreaOfInterest(645818.258, 4923850.7, 645852.841, 4923834.1, 4, 4);//MEDIO EXTENT ARRIBA
65
		//g.setAreaOfInterest(645818.258, 4923834.1, 645852.841, 4923817.5, 4, 4);//MEDIO EXTENT ABAJO
66
		//g.setAreaOfInterest(645828.258, 4923840.7, 645842.841, 4923827.5, 4, 4);//VISTA INTERIOR
67
		
68
		//g.setAreaOfInterest(645808.258, 4923850.7, 645852.841, 4923817.5, 4, 4);//NODATA IZDA
69
		//g.setAreaOfInterest(645818.258, 4923850.7, 645862.841, 4923817.5, 4, 4);//NODATA DCHA
70
		//g.setAreaOfInterest(645818.258, 4923860.7, 645852.841, 4923817.5, 4, 4);//NODATA ARRIBA
71
		//g.setAreaOfInterest(645818.258, 4923850.7, 645852.841, 4923807.5, 4, 4);//NODATA ABAJO
72
		//g.setAreaOfInterest(645808.258, 4923860.7, 645862.841, 4923807.5, 5, 5);//4 LADOS
73
		
68 74
		RasterBuf raster = g.getRasterBuf();
69 75
		for(int line = 0; line < raster.getHeight(); line++){
70 76
			for(int col = 0; col < raster.getWidth(); col++)
branches/v10/libraries/libCq_CMS_praster/src/org/cresques/io/data/Grid.java
206 206
		
207 207
		//Caso en que la extensi?n pedida SI se sale fuera del ?rea del raster
208 208
		//El pixel a medias entre NoData y datos se pone NoData
209
		if(!Utilities.isInside(dataExtent, fitExtent)){
209
		if(Utilities.isOutside(dataExtent, grmf.getExtent())) {
210
			double error = 0.01;
210 211
			//Upper Left
211 212
			double distWcX = Math.abs(fitExtent.getMin().getX() - dataExtent.getMin().getX());
213
			distWcX = (distWcX > error) ? distWcX : 0;
212 214
			double distWcY = Math.abs(fitExtent.getMax().getY() - dataExtent.getMax().getY());
215
			distWcY = (distWcY > error) ? distWcY : 0;
213 216
			//Pixel inicial del buffer donde se empieza a dibujar. Redondeamos por arriba pq lo que sobra se pone NoData
214 217
			double initPxX = Math.ceil((distWcX * bufWidth) / (Math.abs(maxX - minX))); 
215 218
			double initPxY = Math.ceil((distWcY * bufHeight) / (Math.abs(maxY - minY)));
216 219
			//Obtenemos la coordenada real para el pixel inicial
217
			double wcXInit = (initPxX * (Math.abs(maxX - minX))) / bufWidth;
218
			double wcYInit = (initPxY * (Math.abs(maxY - minY))) / bufHeight;
220
			double wcXInit = (minX < grmf.getExtent().minX()) ? grmf.getExtent().minX() : minX;
221
			double wcYInit = (maxY > grmf.getExtent().maxY()) ? grmf.getExtent().maxY() : maxY;
219 222
			
220 223
			//Lower Right
221 224
			distWcX = Math.abs(fitExtent.getMax().getX() - dataExtent.getMin().getX());
225
			distWcX = (distWcX > error) ? distWcX : 0;
222 226
			distWcY = Math.abs(fitExtent.getMin().getY() - dataExtent.getMax().getY());
227
			distWcY = (distWcY > error) ? distWcY : 0;
223 228
			//Pixel final del buffer donde se dibuja. Redondeamos por abajo pq lo que sobra se pone NoData
224 229
			double endPxX = Math.floor((distWcX * bufWidth) / (Math.abs(maxX - minX))); 
225 230
			double endPxY = Math.floor((distWcY * bufHeight) / (Math.abs(maxY - minY)));
226 231
			//Obtenemos la coordenada real para el pixel
227
			double wcXEnd = (endPxX * (Math.abs(maxX - minX))) / bufWidth;
228
			double wcYEnd = (endPxY * (Math.abs(maxY - minY))) / bufHeight;
232
			double wcXEnd = (maxX > grmf.getExtent().maxX()) ? grmf.getExtent().maxX() : maxX;
233
			double wcYEnd = (minY < grmf.getExtent().minY()) ? grmf.getExtent().minY() : minY;
229 234
			
230 235
			rasterBuf = grmf.getWindowRaster(wcXInit, wcYInit, wcXEnd, wcYEnd, (int)Math.abs(endPxX - initPxX), (int)Math.abs(endPxY - initPxY));
231 236
			
......
243 248
		}
244 249
		
245 250
		//Caso en que la extensi?n pedida NO se sale fuera del ?rea del raster
246
		rasterBuf = grmf.getWindowRaster(fitExtent.minX(), fitExtent.maxY(), fitExtent.width(), fitExtent.height(), bufWidth, bufHeight);
251
		rasterBuf = grmf.getWindowRaster(fitExtent.minX(), fitExtent.minY(), fitExtent.maxX(), fitExtent.maxY(), bufWidth, bufHeight);
247 252
		return null;
248 253
	}
249 254
	
branches/v10/libraries/libCq_CMS_praster/src/org/cresques/util/Utilities.java
262 262
    	return ((e1.getMin().getX() >= e2.getMin().getX()) && (e1.getMin().getY() >= e2.getMin().getY()) &&
263 263
    			(e1.getMax().getX() <= e2.getMax().getX()) && (e1.getMax().getY() <= e2.getMax().getY()));
264 264
    }
265
    
266
    /**
267
     * Comprueba si alguna parte de un extent est? fuera del extent que tenemos como referencia.
268
     * @param e1 Extent a comprobar si est? fuera
269
     * @param ref Extent de referencia
270
     * @return Devuelve true si alguna parte de e1 cae fuera de ref y false si no tiene ninguna fuera.
271
     */
272
    public static boolean isOutside(Extent e1, Extent ref){
273
    	return ((e1.getMin().getX() < ref.getMin().getX()) || (e1.getMin().getY() < ref.getMin().getY()) ||
274
    			(e1.getMax().getX() > ref.getMax().getX()) || (e1.getMax().getY() > ref.getMax().getY()));
275
    }
265 276
    //---------------------------------------------------------------
266 277
    //TRATAMIENTO DE FICHEROS
267 278
    

Also available in: Unified diff